Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Гипотетический микропроцессор - файл РПЗ_doc.doc


Гипотетический микропроцессор
скачать (114.8 kb.)

Доступные файлы (1):

РПЗ_doc.doc372kb.07.12.2008 21:51скачать

содержание
Загрузка...

РПЗ_doc.doc

Реклама MarketGid:
Загрузка...

СОДЕРЖАНИЕ




1.Введение 2

1.1.Задание на курсовое проектирование 3

1.2.Описание операций 4

2.Описание иллюстративного микропроцессора 5

3.Блок-схемы операций 8

3.1.Блок-схема операции №2 9

Рис. 2. Блок-схема операции №2 9

3.2.Блок-схема операции №5 10

3.3.Блок-схема операции №3 11

3.4.Блок-схема операции №4 12

3.5.Блок-схема операции №7 13

4.Код программы на машинном языке иллюстративного микропроцессора 14

5.Код программы для процессора Intel 8086 19

Код для процессора 8086 был написан на 2-х языках – языке ассемблера и языке Delphi (Pascal). Язык ассемблера выбран за его низкоуровневость и максимальное приближение к машинному коду процессора. При написании в нем программы, необходимо учесть все особенности работы процессора х86. В результате отметим, что принципы работы мало отличаются от нашего иллюстративного процессора. Отличия состоят в основном в том, что процессор 8086 – это очень продуманная система в плане программируемости, и написание программы на языке ассемблера было намного проще написания машинного кода иллюстративного процессора. Поддерживается аппаратное умножение, деление и множество других функций, во-первых, увеличивая тем самым быстродействие, во-вторых – упрощая жизнь разработчикам программного обеспечения. Паскаль и среда разработки Delphi выбрана потому, что это высокоэффективный язык, популярный в России, с эффективным компилятором и полной поддержкой 32-х битных процессоров семейства x86. 20

5.1.Язык ассемблера 21

5.2.Язык Паскаль 23

6. Карты инфопотоков для операции №5 24

7. Временные диаграммы обменов для операции №5 25

8. Выводы о проделанной работе 26

9. Библиографический список 27





  1. Введение


Микрокомпьютер — это система с шинной организацией, состоя­щая из модулей, или блоков, реализованных в виде больших и сверхбольших интег­ральных схем. Эти модули обрабатывают информацию, управляют потоком и интерпретацией команд, управляют работой шин, хранят информацию и осуществляют взаимодействие между компьютером и его окружением.

Первые четыре функции обычно выполняются одним функцио­нальным блоком — микропроцессором.

В настоящее время выпускается много моделей микропроцессоров с очень широким спектром параметров. Мы не будем пытаться изучить их все, а опишем гипотетический микропроцессор с архитектурой (т. е. структурой и языком), обладающей типичными чертами. Таким образом, мы сможем лучше осветить наиболее существенные аспекты функционирования микропроцессоров вообще, не вдаваясь в детали, характерные для тех или иных конкретных моделей. Хотя наш гипо­тетический микропроцессор и не выпускается промышленностью, он близок к некоторым реально существующим моделям, например к про­цессорам серии 8000 фирмы «Intel»[1].

Современные технологии в IT области имеют в запасе много различных языков, и сред разработок, с помощью которых можно писать прикладные программы, которые будут иметь и высокоэффективный оптимизированный код. Системные программы пишутся на языках низкого уровня, языки высокого и сверхвысокого уровня тут не подходят. Во-первых, любой самый совершенный компилятор не заменит хорошего специалиста по оптимизации кода, во-вторых – работа с аппаратными средствами требует низкоуровневости. Для получение высокоэффективного кода не достаточно просто уметь писать программы на низкоуровневом языке, требуется так же знать в деталях, как работает и что происходит в оборудовании, для которого пишется программа.

В данной курсовой работе мы постараемся как можно глубже изучить архитектуру и принципы работы процессоров на примере гипотетического процессора. Напишем программы на разных языках программирования, в том числе на машинном языке.
^



    1. Задание на курсовое проектирование


Имеется массив из пяти целых положительных чисел. Требуется написать программу для гипотетического (иллюстративного) микропроцессора, выполняющую следующую последовательность операций:

Операция №2, сложение элементов массива с константой

Операция №3, нахождение наибольшего элемента массива

Операция №5, переход к подпрограмме с передачей параметров через регистры.

Операция №6, переход к подпрограмме с передачей параметров через стек

Операция №7, умножение 2-х элементов массива

В качестве дополнительной операции необходимо привести операцию загрузки программы. Также требуется создать программу, выполняющую те же операции, на языке ассемблера для процессора Intel 8086.

Для каждой операции должны быть приведены карты инфопотоков и временные диаграммы обменов.

Так как операцию №3 целесообразно оформить в виде подпрограммы, мы поменяем местами операции №3 и №5 при написании программы.
^









    1. Описание операций


Для реализации операции №2 будем хранить константу как переменную. После операции сложения элемент массива будет сохранен в памяти (перезаписан со старого значения на новое значение после сложения).

Для операции №3 Наибольший элемент массива будет сохранен в отведенную память.

Для операции №5 будет выбрана подпрограмма, выполняющая нахождение максимального элемента массива.

Операция №7, умножение 2-х элементов требует реализации программного алгоритма умножения для иллюстративного процессора (так как он не поддерживает умножение аппаратно). Данный алгоритм был оформлен в виде 3-й подпрограммы (см. разд. 8)[5]. Отметим, что при написании программы на языке ассемблера и языке паскаль для процессора семейства х86 алгоритм умножения не применялся, так как умножение поддерживается аппаратно данным семейством процессоров. Элементы массива выбираются произвольными.











  1. ^

    Описание иллюстративного микропроцессора


Общая структура иллюстративного микро­процессора представлена на рис. 1.



Рис. 1. Схема гипотетического микропроцессора. Числа в скобках указывают количество разрядов или линий
Входящие в его состав компо­ненты говорят о том, что он является процессором с программным уп­равлением. Некоторые компоненты, а именно программный счетчик (счетчик команд), стек и регистр команд, служат для обработки ко­манд.

Такие компоненты, как АЛУ, триггер переноса, общие ре­гистры (или рабочие) и регистр адреса данных, служат для обработки данных. Все остальные компоненты, а именно дешифратор команд и блок управления и синхронизации (БУС), управляют работой дру­гих компонентов. Взаимодействие компонентов осуществляется по внутренним каналам передачи данных. Связь микропроцессора с другими блоками (ЗУ и устройствами ввода/вывода) происходит по адресной шине, шине данных и управляющей шине.

Микропроцессор работает со словами длинной 1 байт. Поэтому мы будем предполагать, что все данные представляются именно такими словами.

С другой стороны, восьмибитный адрес позволяет прямо адресовать только 28 = 256 ячеек памяти. Для реальных задач этого мало. Поэтому для задания адреса памяти обычно используется 16 раз­рядов (два байта), и это позволяет прямо адресовать 216=65 536 яче­ек).

Информация к микропроцессору и от него передается по шинам. Шины данных в соответствии с длиной слова состоят из 8 линий, тогда как адресная шина состоит из 1- 6 линий. Адресная шина однонаправленная, а шина данных двунаправленная. Управляющая шина состоит из 5 линий, ведущих к блоку управления и синхронизации и 8 выходящих из него линий. По этим линиям пере­даются управляющие и тактирующие сигналы между компонентами микропроцессора и между микропроцессором и другими блоками микрокомпьютера.

Счетчик команд состоит из 16 бит и содержит адрес очередного байта команды, считываемого из памяти. Он автоматически увеличи­вается на единицу после чтения каждого байта. Существует связь между счетчиком команд и вершиной стека из 64 регистров. Одна из функций стека — сохранение адреса возврата из подпрограммы. В стеке могут также сохраняться данные из верхних трех общих регистров и триггера переноса.

В то время как слово данных всегда состоит из одного байта, коман­да может состоять из одного, двух или трех байтов. Первый байт лю­бой команды поступает из памяти по шине данных на регистр команд. Этот первый байт подается на вход дешифратора команд, который определяет ее смысл. В частности, дешифратор определяет, является ли команда однобайтовой, или она состоит из большего числа байтов. В последнем случае дополнительные байты передаются по шинам данных из памяти и принимаются или на регистр адреса данных, или на один из общих регистров.

Регистр адреса данных содержит адрес операнда для команд, об­ращающихся к памяти, адрес порта для команд ввода/вывода или ад­рес следующей команды для команд перехода.

Пятнадцать 8-битовых общих регистров содержат операнды для всех команд, работающих с данными. Для указания этих регистров используются 4-битные коды от 0000 до 1110. Регистр 0000 называется аккумулятором (АК) и участвует во всех арифметических и логиче­ских операциях. В частности, он содержит один из операндов перед выполнением операции и получает результат после ее завершения. Обычно обращения к общим регистрам осуществляются при помощи R-селектора или r-селектора. R-селектор позволяет обращаться к лю­бому регистру, тогда как через r-селектор доступны только регистры 0000, 0001 и 0010.

Очень полезная возможность, присутствующая во многих маши­нах,— это косвенная адресация. Некоторый вариант косвенной адре­сации встроен и в наш микропроцессор). Задание несуществующего регистра общего назначения 1111 используется как указание на то, что нужно обратиться к байту памяти по 16-разрядному адресу, который получается комбинированием содержимого двух фиксированных об­щих регистров. А именно, старшие 8 разрядов адреса — из регистра 0001, а младшие 8 разрядов адреса — из регистра 0010 (в дальнейшем эти два регистра мы будем называть Н и L соответственно; Н — от слова Higher, высший, или старший, L — от Lower, низший, или младший).

Все арифметические и логические операции выполняются в ариф­метико-логическом устройстве (АЛУ). Входами АЛ У служат две 8- битные шины. Одна из них идет от аккумулятора (регистр 0000), а другая — от R -селектора, который выбирает либо один из регист­ров общего назначения от 0000 до 1110, либо ячейку памяти, если задана косвенная адресация. Еще одна входная линия поступает в АЛУ от триггера переноса С, который участвует в некоторых ариф­метических и логических операциях.

Результаты из АЛУ передаются в аккумулятор по выходной 8-би­товой шине. Существуют еще две линии, идущие от АЛУ к блоку уп­равления и синхронизации; они передают информацию о наличии или отсутствии двух особых условий: аккумулятор содержит нули (ли­ния Z) и старший разряд аккумулятора равен 1 (линия N). Вторая линия очень удобна при работе с числами в дополнительном коде, когда старший разряд знаковый, причем 1 соответствует отрицатель­ным числам. Триггер переноса и обе линии состояния АЛУ Z и N называются флажками и используются в командах условного пере­хода.

Последний компонент микропроцессора — это блок управления и синхронизации (БУС). Он получает сигналы от дешифратора команд, который анализирует команду. Как уже упоминалось, в БУС из АЛУ и от триггера переноса поступают сигналы, по которым определяются условия для передач управления. Все остальные компоненты микро­процессора получают от БУС управляющие и синхронизирующие сиг­налы, необходимые для выполнения команды. С помощью 13 внешних линий реализуется интерфейс устройства управления с другими моду­лями микрокомпьютера[1].
  1. ^

    Блок-схемы операций



    1. Блок-схема операции №2



Да
На рис. 2 представлена блок-схема работы алгоритма задания №2 «сложение элементов массива с константой»











Нет



^

Рис. 2. Блок-схема операции №2



    1. Блок-схема операции №5


На рис. 3 представлена блок-схема работы алгоритма задания №5 «переход к подпрограмме с передачей параметров через регистры»











^




Рис. 3. Блок-схема работы операции №5



    1. Блок-схема операции №3


На рис. 4 представлена блок-схема работы алгоритма задания №3 «нахождение максимального элемента»















Нет









Нет




Да






Рис. 4. Блок-схема работы операции №3
^



    1. Блок-схема операции №4


На рис. 5 представлена блок-схема работы алгоритма задания №6 «переход к подпрограмме с передачей параметров через стек».





^







Рис. 5. Блок-схема работы операции №6

    1. Блок-схема операции №7


На рис. 6 представлена блок-схема работы алгоритма задания №7 «умножение 2-х элементов массива». Блок-схему подпрограммы умножения не приводим, так как алгоритм умножения взята из методического указания.












Рис. 6. Блок-схема работы операции №7
  1. ^

    Код программы на машинном языке иллюстративного микропроцессора


Сначала был написан код на языке ассемблера для процессора «Intel 8086» (он будет приведен далее в следующем разделе), затем основа его была переведена на машинный язык нашего иллюстративного процессора с учетом всех его особенностей и отличий от 8086. Этот код сведен в таблицу 1, с подробными комментариями.

^ Номер ячейки памяти (шест-надцатерич-ный)

Команда на машин­ном языке

Команда в символиче­ской форме

Комментарий

Задача 2. Сложение элементов массива с константой

0000

70

LDR 0

Константа для сложения в R5

0001

00

00




0002

7D

7D




0003

05

MOV 0 to 5




0004

66

LRI 6

Декремент 1 в R6

0005

01

01




0006

61

LRI R1

Загрузим в HL адрес начала массива

0007

00

00




0008

62

LRI R2




0009

78

78




000А

63

LRI R3

Загрузим в R3 кол-во элементов

000B

05

05




000C

70

LDR 0

Загрузим элемент массива в аккамулятор

000D

00

00




000E

FF

FF




000F

85

ADD R5

Складываем

0010

74

STR R0

Сохраняем

0011

00

00




0012

FF

FF




0013

F5

IHL

Следующий элемент массива

0014

13

MOV 0 from R3




0015

A6

SUB R6

След. итерация цикла

0016

03

MOV 0 to R3




0017

7D

JAN

Если аккамулятор не 0 то продолжим цикл

0018

00

00




0019

0B

0C




^ Задача 2-3. Переход к подпрограмме с передачей параметров через регистры, нахождение максимального элемента массива

001A

61

LRI R1

Загрузим в HL адрес начала массива

001B

00

00




001C

62

LRI R2




001D

77

77




001E

63

LRI 3

В R3 кол-во элементов

001F

05

05




0020

7F

JMS

Вызов подпрограммы

0021

00

00




0022

3E

43




0023

74

STR R0

Сохраним полученный максимальный элемент

0024

00

00




0025

72

7E




Задача 4. Передача параметров через стек.

0026

61

LRI R1

Загрузим в HL адрес начала массива

0027

00

00




0028

62

LRI R2




0029

73

73




002A

60

LRI R0

В R0 кол-во элементов

002B

05

05




002C

7F

JMS

Вызов подпрограммы 2

002D

00

00




002E

5B

5B




Задача 7. Умножение 2-х элементов массива.

002F

70

LDR 0

Помещаем множитель в R3

0030

00

00




0031

78

78




0032

03

MOV r from R3




0033

70

LDR 0

Помещаем множимое в R4

0034

00

00




0035

7A

7A




0036

04

MOV r to R4




0037

7F

JMS




0038

00

00




0039

5F

5F

Вызов подпрограммы 3. Умножение

003A

15

MOV r from R5




003B

74

STR 0

Сохраняем ст. часть произведения

003C

00

00




003D

7F

7F




003E

16

MOV r from R6




003F

74

STR 0

Сохраняем мл. часть произведения

0040

00

00




0041

80

80




0042

FA

HLT

Выход из программы

Подпрограмма №1. Вычисление максимального элемента массива.

R1,2(HL) – Адрес первого элемента массива

R3 – Кол-во элементов

R0 – В него вернется макс. элемент

0043

65

LRI 5

В R5 0 (тут будет сохраняться промежуточное макс.

0044

00

00

число)

0045

66

LRI 6

Декремент 1 в R6

0046

01

01




0047

73

LDR 0

Загрузим в R4 элемент массива из [HL]

0048

00

00




0049

FF

FF




004A

04

MOV 0 to R4




004B

15

MOV 0 from R5

Восстановим промежут. значение в аккамулятор

004C

A4

SUB R4

Вычтем из аккамулятора R4 для сравнения

004D

7A

JAP

Если результат > 0, то значение было меньше

004E

00

00

предыдущего, перейдем далее или присвоим

004F

4D

52

значение максимального элемента

0050

14

MOV 0 from R4

максимальное значение в R5

0051

05

MOV 0 to R5




0052

F5

IHL

Следующий элемент массива

0053

13

MOV 0 from R3

Счетчик в аккамулятор

0054

A6

SUB R6

След. итерация цикла

0055

03

MOV 0 to R3




0056

7D

JAN

Если аккамулятор не 0 то продолжим цикл

0057

00

00




0058

43

47




0059

15

MOV 0 from R5

Результат в аккамуляторе по спецификации ф-ии

005A

F8

RET




Подпрограмма №2. Передача параметров через стек

R1,2(HL) – Адрес первого элемента массива

R0 – Кол-во элементов

R0 – В него вернется макс. элемент

005B

73

POP




005C

F0

CMA




005D

77

PUSH




005E

F8

RET




Подпрограмма №3. Умножение.

R3 – Множимое

R4 - Множитель

Вернет:

R5 – старшая часть произведения

R6 – младшая часть произведения

005F

65

LRI 5

Установка нулевых значений в Рн и PL

0060

00

00




0061

66

LRI 6




0062

00

00




0063

62

LRI 2

Установка на счетчике начального

0064

08

08

значения 8

0065

14

MOV 0 from 4

Загрузка множителя в аккумулятор

0066

F2

RTR

Циклический сдвиг вправо, мл. бит попа дает в С

0067

04

MOV 0 to 4

Запоминание сдвинутого множителя

0068

15

MOV 0 from 5

Загрузка ст. части произведения в аккумулятор

0069



JCZ

Тест бита множителя. Переход при 0

006A

00

00




006B

68

70




006C

83

ADD 3

Сложение множимого со ст. частью произведения

006D

F2

RTR

Сдвиг Рн вправо, мл. бит в С

006E

05

MOV 0 to 5

Запоминание сдвинутого Рн

006F

16

MOV 0 from 6

Загрузка мл. части произведения в аккумулятор

0070

F2

RTR

Сдвиг С и мл. части произведения вправо

0071

06

MOV 0 to 6

Запоминание сдвинутого PL

0072

F6

DHL

Уменьшение счетчика на 1

0073

12

MOV 0 from 2

Загрузка счетчика в аккумулятор

0074

7D

JAN

Повторение цикла, если не нуль

0075

00

00




0076

60

67




0077

F8

RET

Возврат из подпрограммы

^ Сегмент данных.

Исходный массив и 2 результата

0078

12

12

Массив размером 5 элементов по 1 байт

0079

37

37




007A

57

57




007B

22

22




007C

1

1




007D

50

50

Константа к которой прибавляются элементы

007E

?

?

Максимальный элемент массива

007F

?

?

Произведение размером 2 байта

Таблица 1. Машинный код иллюстративного микропроцессора













  1. ^

    Код программы для процессора Intel 8086

Код для процессора 8086 был написан на 2-х языках – языке ассемблера и языке Delphi (Pascal). Язык ассемблера выбран за его низкоуровневость и максимальное приближение к машинному коду процессора. При написании в нем программы, необходимо учесть все особенности работы процессора х86. В результате отметим, что принципы работы мало отличаются от нашего иллюстративного процессора. Отличия состоят в основном в том, что процессор 8086 – это очень продуманная система в плане программируемости, и написание программы на языке ассемблера было намного проще написания машинного кода иллюстративного процессора. Поддерживается аппаратное умножение, деление и множество других функций, во-первых, увеличивая тем самым быстродействие, во-вторых – упрощая жизнь разработчикам программного обеспечения. Паскаль и среда разработки Delphi выбрана потому, что это высокоэффективный язык, популярный в России, с эффективным компилятором и полной поддержкой 32-х битных процессоров семейства x86.


Листинги с программами на обоих языках приведены в следующих 2-х подразделов. Код снабжен комментариями, все программы проверены на работоспособность.
^











    1. Язык ассемблера


Код писался и компилировался в среде masm32 (Microsoft Макро-Ассемблер). В отличие от tasm, он лучше предназначен для 32-х битного процессора и 32-х битной операционной системы[3].

; Various operations
.386

.model flat, stdcall

option casemap :none
includelib \masm32\lib\kernel32.lib

include \masm32\include\kernel32.inc
.data

Values dd 12h,37h,57h,22h,1h

.const

AddValue dd 32h

ValuesCount dd 5h

AddConstant dd 50
.code

start:

; task 1

; помещаем в ЕСХ кол-во элементов массива

MOV ECX, ValuesCount

; В ЕБХ помещаем адрес массива (адрес первого элемента)

MOV EBX, offset Values

; организовываем цикл

@LP:

; След. 3 операции реализуют ADD [EBX], AddConstant

^ MOV EAX, [EBX]

ADD EAX, AddConstant

MOV [EBX], EAX

; Помещаем адрес следующего элемента массива

ADD EBX, 4h

; Если ЕСХ больше 0 то продолжаем цикл

LOOP @LP

; task 2

; передаем параметры через регистры

MOV EBX, offset Values

MOV ECX, ValuesCount

CALL MaxElemR

; task 3

; передаем параметры через стек

PUSH offset Values

PUSH ValuesCount

CALL MaxElemS

POP EAX

; task 4

; умножаем 2 элемента

MOV EAX, [Offset Values]

MOV EDX, [Offset Values + 0ch]

MUL EDX
; Выходим из программы, вызвав функцию ОС

invoke ExitProcess, 0

MaxElemR proc

;in EBX - Pointer to Values array

;in ECX - MaxValue Count

;out EAX - Result

MOV EAX, 0h

@STARTLOOP:

^ MOV EDX, [EBX]

ADD EBX, 4h

CMP EDX, EAX

JBE @NEXT

MOV EAX, EDX

@NEXT:

LOOP @STARTLOOP
@EXIT:

RET

MaxElemR endp
MaxElemS proc

;params at stack

;in first push - Pointer to Values array

;in 2-d - MaxValue Count

;out pop at result - Result

POP EAX

POP ECX

POP EBX

PUSH EAX

MOV EAX, 0h

@STARTLOOP:

^ MOV EDX, [EBX]

ADD EBX, 4h

CMP EDX, EAX

JBE @NEXT

MOV EAX, EDX

@NEXT:

LOOP @STARTLOOP

@EXIT:

POP EBX

PUSH EAX

PUSH EBX

RET

MaxElemS endp
end start
Листинг 1. Код программы на языке ассемблера
^



    1. Язык Паскаль


program Project1;
const

ValuesCount = 5;

AddConstant = 50;
var

Values: array[1..ValuesCount] of Integer = (12,232,255,6,118);

i, tmp: Integer;
//в паскале данная функция оптимизируется компилятором как функция с //передачей параметров через регистры

function MaxElem(const AValues: array of Integer; AValuesCount: Integer):Integer;

var

i: Integer;

begin

Result := AValues[1];

for i := 2 to AValuesCount do

begin

if Result < AValues[i] then

Result := AValues[i];

end;

end;
procedure DummyProc;

begin

asm

//восстановим адрес из которого вызвана ф-я

pop EAX

//получим параметры

pop EBX

pop ECX

nop

//обратно вставим адрес

push EAX

ret

end;

end;
begin

//task1

for i := 1 to ValuesCount do

begin

Values[i] := Values[i] + AddConstant;

end;

//task2, 3

tmp := MaxElem(Values, ValuesCount);
//task4

DummyProc;

//task5

tmp := Values[1]*Values[4];

end.
Листинг 2. Код программы на языке паскаль.
^

6. Карты инфопотоков для операции №5


Для составления карт инфопотоков и временных диаграмм обменов была выбрана операция №5. В этой операции участвуют 2 команды: JMS (вызов подпрограммы) и LRI (загрузка значения в регистры). Карты инфопотоков приведены на рис. 7. и рис. 8.


^


7. Временные диаграммы обменов для операции №5



Синхроимпульс



Шина адреса

Шина данных

Чтение

Запись


Рис. 12. Временная диаграмма обменов данными для команды LRI


Синхроимпульс



Шина адреса

Шина данных

Чтение

Запись


Рис. 13. Временная диаграмма обменов данными для команды JMS
^





8. Выводы о проделанной работе


В ходе выполнения курсовой работы на примере гипотетического микропроцессора были изучены его принцип работы.

Была изучена система команд иллюстративного микропроцессора, его фазы выборки, декодирования и управления, способы адресации, принципы программирования на машинном уровне, составление блок-схем.

Современные процессоры, использующиеся в персональных компьютерах, их архитектура очень схожи с данным гипотетическим процессором. Различия состоят в основном в том, что у современных процессоров более развиты аппаратные функции (такие, как аппаратное умножение, деление, циклические операции), более удобная система косвенной адресации памяти и т.д.

По заданию на курсовой проект, выполнили 5 задач по обработке одномерного массива, в которые входили блок-схемы, код на псевдоязыке иллюстративного микропроцессора, код на языке Ассемблера и Паскаль для процессоров семейства х86.

Как дополнение, были составлены карты инфопотоков для одной из задач и временные диаграммы обмена.
^









9. Библиографический список




  1. Калмыков Ю. В. Методические указания к выполнению курсового проекта для студентов специальности 220301, по дисциплине "Вычислительные, машины системы и сети", 2003 г. (С. 3-5).

  2. Лаврентьев С.М. Ассемблер и Си: Учебное пособие для вузов, 2004г.

  3. http://ru.wikipedia.org/wiki/Masm

  4. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1991.

  5. Калмыков Ю. В. Методические указания к выполнению курсового проекта для студентов специальности 220301, по дисциплине "Вычислительные, машины системы и сети", 2003 г. (С. 44)

  6. Моргун Александр Николаевич. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. – Диалектика 2005 г.

  7. Юров В.И. Аssembler: Учебник для вузов. 2-е изд. СПб. Питер. 2004г. -637с.






Скачать файл (114.8 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru