966

Разработка программы для гипотетического (иллюстрированного) микропроцессора

Курсовая

Информатика, кибернетика и программирование

Задан массив из пяти элементов - целых положительных чисел. Необходимо написать программу для гипотетического (иллюстрированного) микропроцессора. Эта программа позволит выполнять различные манипуляции с элементами массива.

Русский

2013-01-06

425 KB

16 чел.

МИНОБРНАУКИ РОССИИ

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

Самарский государственный технический университет

в г. Сызрани

         Кафедра «Автоматизация технологических процессов и производств»

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

по дисциплине «Вычислительные машины, системы и сети»

Вариант 1,2,5,4,3min,6,7.

                Исполнитель: студент гр. ЭАЗ-405(32) ______ Доровских А.О.       

                                                                             (подпись)

         Руководитель КП:   доцент               _  Тараканов А.В.                               

                                                                                                                                                                          (подпись)

______________

(оценка работы)

______________

       (дата)

2012 г.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ

2 ОПИСАНИЕ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

3 ОПИСАНИЕ ОПЕРАЦИЙ

3.1 Блок-схема для операции №1

3.2 Блок-схема для операции №2

3.3 Блок-схема для операции №5

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

3.5 Блок-схема для операции №3min

3.6 Блок-схема для операции №6

3.7 Блок-схема для операции №7

4 ОПЕРАЦИЯ ЗАГРУЗКИ ПРОГРАММЫ

5 КОД ПРОГРАММЫ ДЛЯ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

6 КАРТЫ ИНФОПОТОКОВ

7 ЗАКЛЮЧЕНИЕ

8 БИБЛИОГРАФИЧЕСКИЙ СПИСОК

ПРИЛОЖЕНИЕ (АЛГОРИТМ)

ВВЕДЕНИЕ

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

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

Первые четыре функции обычно выполняются одним функциональным блоком — микропроцессором. Функции хранения информации осуществляет запоминающее устройство. В него могут входить как постоянная память, так и оперативная. Наконец, внешние коммуникации осуществляют блоки, называемые портами ввода/вывода; Каждый такой порт является интерфейсом между микропроцессором и: каким-либо внешним устройством, например терминалом, внешней памятью для хранения больших объемов информации, контроллером технологических процессов или измерительным прибором.

Структура микрокомпьютера, состоящего из подобных блоков, приведена на рисунке 1. Взаимодействие блоков осуществляется при помощи шин трех типов: адресных шин, шин данных и управляющих шин.

Рисунок 1  - Структура микрокомпьютера с шинной организацией

1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ

Задан массив из пяти элементов - целых положительных чисел. Необходимо написать программу для гипотетического (иллюстрированного) микропроцессора. Эта программа позволит выполнять различные манипуляции с элементами массива.

  1.  Операция №1, сложение каких-либо двух элементов массива.
  2.  Операция №2, сложение  элементов массива с константой.
  3.  Операция №5, переход к подпрограмме с передачей параметров через регистры.
  4.  Операция №4, сложение всех элементов массива.
  5.  Операция №3, нахождение наименьшего из элементов массива.
  6.  Операция №6, переход к подпрограмме с передачей параметров через стек.
  7.  Операция №7, умножение двух элементов массива.

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

Написать программу, выполняющую первую операцию, на языке Ассемблер для процессора i8086.

Для первой  операции составить блок-схему алгоритма и  карты инфопотоков.

2 ОПИСАНИЕ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

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

Рисунок 2 - Структура гипотетического микропроцессора

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

Микропроцессор работает со словами, состоящими, из 8 бит. Такие слова, называемые байтами, удобны при выполнении арифметических и логических операций. Если в расчетах встречаются числа "большей длины", то применяются специальные программы для вычислений с "двойной точностью", "тройной точностью" и т. д.

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

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

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

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

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

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

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

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

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

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

3 ОПИСАНИЕ ОПЕРАЦИЙ

В начале программы определяются некоторые константы. Постоянная единица, хранится в регистре RЕ и служит для различных, необходимых для нас операций. Например, упрощения увеличения или уменьшения счетчиков. Данные в оперативной памяти располагаются сразу после кода. Определим их в массиве как  целые и положительные и однобайтовые числа.

  1.  Операция №1. Сложение каких-либо двух элементов массива. Регистр   R0 используется для хранения первого слагаемого, R1 - второго. Результат  сложения  записывается   в  память   после  произведения  двух элементов массива. Блок-схема представлена на рис. 3.
  2.  Операция  №2.   Сложение   элементов   массива  с   константой. Однобайтовая константа загружается  в регистр R3, в регистре R5 находится счётчик для цикла перебора всех элементов массива. Блок-схема представлена на рис. 4.
  3.  Операция №5.  Через регистры     подпрограмме передается  четыре однобайтовых значения 01, 02, 03, 04. Результат в .  Блок-схема представлена на рис. 5.
  4.  Операция  №4.   Сложение  всех  элементов массива.  Результат суммирования   будет  хранится   в  паре  регистров  R3 : R4   регистр R5, используется как счётчик.  Результат операции записывается в память. Блок-схема представлена на рис. 6.
  5.  Операция №3. Нахождение наименьшего из элементов массива.

В начале операции в регистре R3, записывается наибольшее однобайтовое значение (00 16), регистр R5, служит счётчиком. В конце операции в регистре R3 будет   находиться   значение   наименьшего  элемента   массива,   которое записывается  в память.  Блок-схема представлена на рис. 7.

  1.  Операции  №6,  Через стек подпрограмме передается  четыре однобайтовых значения 01, 02, 03, 04, эти значения в подпрограмме должны быть помещены соответственно в регистры R3, R4, R5, R6. Адрес возврата временно сохраняется в паре регистров R7: R8.  Подпрограмма выполняет логическое умножение (АND) между регистрами R3 и R5 R4, и R6, результаты записываются в регистры R5   и   R6 соответственно. Блок-схема представлена на рис. 8.
  2.  Операция  №7.   В    регистр R3  помещается   первый множитель, второй помещается в R4, результат умножения помещается в пару регистров R5:R6.  Результат записывается в память.  Блок-схема представлена на рис. 9.

3.1 Блок-схема для операции №1

Сложение каких-нибудь двух элементов  массива.

3.2 Блок-схема для операции №2

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

3.3  Блок-схема для операции №5

Переход к подпрограмме с передачей параметров через регистры.

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

Сложение всех элементов массива.

3.5 Блок-схема для операции №3

Нахождение наименьшего из элементов массива

3.6 Блок-схема для операции №6

Переход к подпрограмме с передачей параметров через стек

3.7 Блок-схема для операции №7

Умножение двух элементов массива.

4 ОПЕРАЦИЯ ЗАГРУЗКИ ПРОГРАММЫ

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

В R1 : R2 указатель на ячейку памяти куда производится запись, в  R3:R4 хранится конечный адрес.

Приведённый код программы для гипотетического микропроцессора, соответствует указанной выше блок-схеме загрузчика. Текст кода состоит из четырёх частей (столбцов, слева на право): адрес ячейки, машинный код операции, символический код операции и комментарии. Все числа в шестнадцатеричной системе счисления.

Таблица 1

0000

7F

JMS

; Обращение к подпрограмме ввода

0001

00

00

0002

1F

1F

0003

01

MOV 0 to 1

; Получение начального адреса записи (H)

0004

7F

JMS

; Обращение к подпрограмме ввода

0005

00

00

;

0006

1F

1F

;

0007

02

MOV 0 to 2

; Получение начального адреса записи (L)

0008

7F

JMS

; Обращение к подпрограмме ввода

0009

00

00

;

000A

1F

1F  

;

000B

03

MOV 0 to 3

; Получение конечного адреса записи (H)

000C

7F

JMS

; Обращение к подпрограмме ввода

000D

00

00

;

000E

1F

1F

;

000F

04

MOV 0 to 4

; Получение конечного адреса записи (L)

0010

7F

JMS

; Обращение к подпрограмме ввода

0011

00

00

;

0012

1F

1F

;

0013

0F

MOV 0 to F

; Запись полученного байта в память

0014

F5

IHL

;

0015

14

MOV 0 from 4

; Сравнение текущего и конечного адресов

0016

A2

SUB 2

;

0017

13

MOV 0 from 3

;

0018

B1

SBC 1   

;

0019

7C

JCZ

;Если конечный больше, то считать след. байт

001A

00

00

;

001B

10

10

;

001C

7B

JMP

;

001D

00

00

001E

27

27

001F

FD

INP

;

0020

00

00

; Подпрограмма ввод, проверка – готово ли

0021

7A

JAP

; устройство к чтению с него байта

0022

00

00

; Если нет, то повторить проверку

0023

1F

1F

;

0024

FD

INP

;

0025

01    

01

; Если готово, то считывается байт

0026

F8

RET

; Конец подпрограммы вывода

5 КОД ПРОГРАММЫ ДЛЯ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

Приведённый код программы для гипотетического микропроцессора, соответствует указанным выше операциям. Текст кода состоит из четырёх частей (столбцов, слева на право): адрес ячейки, машинный код операции, символический код операции и комментарии. Все числа в шестнадцатеричной системе счисления.

Таблица 2

Ячейка

памяти

Команда

на машинном языке

Команда в символьной форме

Комментарий

0027

70

LDR 0

;начало операции №1     

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

0028

00

00

0029

D1

D1              

002A

71

LDR 1

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

002B

00

00                

002C

D2

D2               

002D

81

ADD 1

Далее суммирование с содержимым Асс

002E

74

STR 0            

Запись результата в память

002F

00

00          

0030

DC

DC

;конец операции №1

0031

70

LDR 0

;начало операции №2. Загрузка первого элемента в Асс

0032

00

00

;

0033

D1

D1

;

0034

61

LRI 1

Загрузка константы в регистр 1

0035

D6

D6

0036

81

ADD 1

;сложение1 с константой cумма в аккумулятор

0037

74

STR 0

Запись результата в память

0038

00

00

0039

D7

D7

003A

70

LDR 0

Передача содержимого ячейки памяти в Асс

003B

00

00

003C

D2

D2

003D

81

ADD 1

;сложение2 с константой cумма в аккумулятор

003E

74

STR 0

Запись результата в память

003F

00

00

0040

D8

D8

0041

70

LDR 0

Передача содержимого ячейки памяти в Асс

0042

00

00

0043

D3

D3

0044

81

ADD 1

;сложение3 с константой cумма в аккумулятор

0045

74

STR 0

Запись результата в память

0046

00

00

0047

D9

D9

0048

70

LDR 0

Передача содержимого ячейки памяти в Асс

0049

00

00

004A

D4

D4

004B

81

ADD 1

;сложение4 с константой cумма в аккумулятор

004C

74

STR 0

Запись результата в память

004D

00

00

004E

DA

DA

004F

70

LDR 0

Передача содержимого ячейки памяти в Асс

0050

00

00

0051

D5

D5

0052

81

ADD 1

;сложение с константой cумма в аккумулятор

0053

74

STR 0

Запись результата в память

0054

00

00

0055

DB

DB

0056

DD

DD

;конец операции №2

0057

70

LDR 0

;загрузка операции №5

0058

00

00

0059

D1

D1

005A

71

LDR 1                

005B

00

00            

005C

D2

D2           

005D

72

LDR 2            

005E

00

00            

005F

D3    

D3

0060

7F

JMS

;переход к подпрограмме

0061

00

00                

0062

CD

CD

;конец операции №5

0063

61

LRI 1

;начало операции №4. Установка в HL адреса первого элемента.

0064

00

00

0065

62

LRI 2            

0066

D1

D1                

0067

63

LRI 3            

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

0068

05

05         

цикла равным 5

0069

64

LRI 4

Установка частной суммы равной  0

006A

00

00       

006B

65

LRI 5     

Загрузка в R5 единицы для уменьшения

006C

01

01       

счетчика

006D

14

MOV 0 from 4

Суммирование частной суммы с первым

006E

8F

ADD F            

элементом

006F

04

MOV 0 to 4    

помещение в регистр

0070

F5

IHL      

Инкремент HL

0071

13

MOV 0 from 3

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

0072               

A5

SUB 5            

0073

03

MOV 0 to 3      

0074

7D

JAN

Проверка конца цикла

0075

00

00

;

0076

6D

6D       

0077

14

MOV 0 from 4

Запись результата в память

0078

74

STR 0

0079

00

00      

007A

DE

DE               

;конец операции №4.

007B

61

LRI 1

;начало операции №3 наименьшее значение.

007C

00

00

Загрузка адреса первого элемента в HL.

007D

62

LRI 2

007E

D1

D1

007F

1F

MOV 0 from F

;загрузка первого элемента

0080

05

MOV 0 to 5

Пересылка его, как минимального в регистр 5

0081

63

LRI 3

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

0082

04

04

0083

64

LRI 4

Загрузка в регистр 4 единицы для уменьшения счетчика

0084

01

01

0085

F5

IHL

Начало цикла : инкремент HL

0086

1F

MOV 0 from F

Считывание элемента

0087

A5

SUB 5

;вычитание из него минимального

0088

JCZ

Проверка С: если этот элемент не меньше

0089

00

00

минимального, то переход

008A

8D

8D

008B

1F

MOV 0 from F

Иначе – считывание элемента и принятие  за минимальный

008C

05

MOV 0 to 5

008D

13

MOV 0 from 3

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

008E

A4

SUB 4

008F

03

MOV 0 to 3

0090

7D

JAN

;проверка условия :если Асс # 0 , перейти на начало цикла

0091

00

00

0092

85

85

0093

15

MOV 0 from 5

; иначе записать минимальный элемент  в память

0094

74

STR 0

0095

00

00

0096

DF

DF

;конец операции №3

0097

70

LRI 0

;Начало операции №6

Загрузка первого аргумента в вершину стека

0098

00

00              

0099

D1

D1

009A

77

PUSH

009B

70

LRI 0            

Загрузка второго аргумента

009C

00

00                

009D

D2

D2

009E

77

PUSH

009F

7F

JMS

;переход к подпрограмме

00A0

00

00                

00A1

CF

CF      

;конец операции №6

00A2

70

LDR 0

;начало операции №7. Загрузка множимого в аккумулятор

00A3

00

00      

00A4

D1

D1      

00A5

03

MOV 0 to 3

Загрузка множителя в аккумулятор Асс;далее в регистр 3

00A6

70

LDR 3

00A7

00

00                

00A8

D2

D2               

00A9

04

MOV 0 to 4

;далее в регистр 4

00AA

65

LRI 5

;подготовка регистров 5 и 6 к работе

00AB

00

00                

00AC

66

LRI 6

00AD

00

00                

00AE

61

LRI 1

Загрузка в регистры 1 и 2 кол-ва бит множителя

00AF

00

00

00B0

62

LRI 2

00B1

08

08

00B2

14

MOV 0 from 4

Множитель в Асс (начало цикла)

00В3

F2

RTL               

Сдвиг влево, мл.бит - в С

00В4

04

MOV 0 to 4      

Далее сохранение в регистре 4

00В5

15

MOV 0 from 5

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

00В6

7C

JCZ

Проверка С: если С=0, то перейти дальше

00В7

00

00

00В8

BA

BA

00В9

83

ADD 3

В противном случае прибавить множимое

00BA

F2

RTL               

Сдвиг влево

00BB

05

MOV 0 to 5    

Далее сохранение в регистре 5

00BC

16

MOV 0 from 6

Мл. часть произведения в Асс

00BD

F2

RTL               

Сдвиг влево

00BE

06

MOV 0 to 6    

Далее сохранение в регистре 6

00BF

F6

DHL

Декремент HL

00C0

12

MOV 0 from 2

00C1

7D

JAN

Проверка Асс : если Асс#0, то на начало цикла

00C2

00

00

00C3

B2

B2

00C4

15

MOV 0 from 5

Иначе сохранить остаток в регистре 5

00C5

74

STR 0                

Сохранение в памяти

00C6

00

00

00C7

E0

E0

00C8

16

MOV 0 from 6

Мл. Часть в Асс

00C9

74

STR 0                

далее в память

00СА

00

00

00СВ

E1

E1

;конец операции №7

00СС

FA

HLT

останов программы

00СD

13

MOV 0 to 3

;начало подпрограммы для операции №5  

00CE

F8

RET   

;возврат из  подпрограммы операции № 5

00CF

73   

POP  

;начало подпрограммы для операции №6

00D0

F8

RET

;точка возврата из

подпрограммы  операции № 6

00D1

1 элемент массива

00D2

2 элемент массива

00D3

3 элемент массива

00D4

4 элемент массива

00D5

5 элемент массива

00D6

константа

00D7

Сложение 1-го элемента с константой

00D8

Сложение 2-го элемента с константой

00D9

Сложение 3-го элемента с константой

00DA

Сложение 4-го элемента с константой

00DB

Сложение 5-го элемента с константой

00DC

1- Сумма двух элементов

00DD

2- Сумма всех элементов с константой

00DE

4- Сумма  элементов массива

00DF

3- Наименьший  элемент

00E0

7- Произведение двух элементов

00E1

…………..

6 КАРТЫ ИНФОПОТОКОВ

Наша программа  для первой операции состоит из следующих команд: STR, ADD, LDR

Выполнение любой команды состоит из двух этапов. Первый этап - это чтение команды из памяти. 16- битовый адрес  первого байта команды передается в память по шине адреса с программного счетчика. Устройство управления формирует сигнал «чтение», благодаря которому  содержимое ячейки  выдается из памяти на шину данных  и затем  принимается в регистр команд. Чтение каждого байта занимает один машинный цикл (три такта). После считывания первого байта (код операции), который попадает в регистр команд, блок управления определяет, из какого количества байт состоит команда. Если есть еще один или два байта, то соответственно затрачивается один или два машинных цикла на их считывание. Эти байты попадают в регистр адреса данных.

Второй этап - это выполнение команды. Некоторые команды выполняются за последний такт машинного цикла, а другим для выполнения нужен еще один машинный цикл (команды загрузки и сохранения регистра и команды, использующие косвенную адресацию).

Представим карты информационных потоков для операции №1.

Команда STR r является трехбайтовой и служит для запоминания регистра. Содержимое  общего регистра r передаётся в ячейку главной памяти. Старшие 8 разрядов адреса ячейки во втором байте команды, а младшие 8 разрядов – в третьем байте. Как видно из рисунка 11 после завершения фазы выборки дешифрации происходит передача второго и третьего байта  с шины данных в регистр адреса данных, откуда происходит их пересылка на шину адреса. Затем происходит посыл управляющего сигнала на шину управления от блока управления и синхронизации и  выполняется пересылка одного из регистров на шину данных.

Рисунок 11 - Информационные потоки в фазе выполнения команды STR

Рисунок 12 - Инфопотоки команды ADD

Команда ADD F представляет собой команду суммы, содержащую специальный указатель F ,  который соответствует ячейке главной памяти  с адресом в паре регистров H и L. Содержимое общего регистра R прибавляется к содержимому аккумулятора. Результат сложения становится новым содержимым аккумулятора, а перенос из старшего разряда становится новым содержимым триггера переноса С. Все числа считаются целыми без знаков.

Рисунок 13 - Инфопотоки команды LDR

После выборки этой команды в течение одного машинного цикла происходит ее дешифрация и выборка еще двух байт, определяющий адрес ячейки, из которой требуется извлечь данные, что занимает еще два цикла. После этого БУС подает импульс на чтение, по которому происходит выборка из памяти. По третьему импульсу четвертого цикла команда завершается пересылкой данных в указанный командой регистр. Передача содержимого ячейки памяти в общий регистр r.Старшие 8 разрядов адреса ячейки берутся из второго байта команды, а младшие 8 разрядов - из третьего байта.

7 ЗАКЛЮЧЕНИЕ

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

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

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

8 БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1.  Методические указания к выполнению курсового проекта для студентов по дисциплине "Вычислительные, машины системы и сети". 2003г.
  2.  Каган Б.М. Электронные вычислительные машины и системы. – М.: Энегроатомиздат, 1997.
  3.  Пятибратов А.П., Гудыно Л.П., Кириченко А.А. Вычислительные     системы, сети и телекоммуникации. – М.: Финансы и статистика, 2002.
  4.  Гивоне Д., Россер Р. Микропроцессоры и микрокомпьютеры. – М.: Мир,1993.
  5.  Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1991.
  6.  Вирт Н Алгоритмы и структуры данных. – М.: Мир, 1999.
  7.  Пильщиков В.Н. Программирование на языке ассемблера IBM РС.– М.: Диалог-Мифи, 1996.


В
R1 : R2 адрес второго слагаемого

Конец №1

Начало №1

В R0 первое слагаемое

R0 =

= R0 +[R1 : R2]

В R1 : R2 адрес суммы двух элементов

[R1 : R2]= R0

R1 : R2 =

=(R1 : R2)+1

[R1 : R2 ]=C

Рисунок 3 -  Блок-схема для операции №1

Конец №2

ачало №2

R3 = 01

В R1 : R2 адрес начала массива

[R1 : R2 ]=

= [R1 : R2]+ R3

R1 : R2 =

= (R1 : R2)+ 1

Рисунок 4 -  Блок-схема для операции №2

R4=02 

Конец №5

Начало №5

R3 = 01

R5 = 03

R6 = 04

R6 = R4 ANDR6 

Выход

Вход

R5 = R3 ANDR5 

Обращение к

подпрограмме

Рисунок  5 - Блок-схема для операции №5

 Да

 Нет

R3 : R4 = 00 

Конец №4

Начало №4

R5 = 05

В R1 : R2 адрес начала массива

R4=

= [R1 : R2]+ R4

R3 = R3 + С

R5 = R5 - 1

R5=0

R1 : R2 =

=(R1 : R2 ) +1

R1 : R2 =

=[ R3 : R4 ]

В R1 : R2 адрес

суммы всех

элементов

Рисунок 6 -  Блок-схема для операции №4

Начало №3

R5=05

R3=FF

В R1:R2 адрес начала массива

R5 = R5 - 1

С=[ R1:R2]- R3

C=1

R3=[ R1:R2]

R5=0

R1:R2 =(R1:R2 )+1

В R1:R2 адрес наименьшего

[ R1:R2] =R3

Конец №3

Да

Да

Нет

Нет

Рисунок 7 -  Блок-схема для операции №3

R2 = 02

R0 = 01

С: R0 -> Stack

R1 : R2 -> Stack

С: R0 -> Stack

R1 : R2 -> Stack

R0 =03

R2 =04

С: R0 -> Stack

R1 : R2 -> Stack

Обращение к подпрограмме

С: R0 <- Stack

R1 : R2 <- Stack

Начало №6

Конец  №6

С: R0 <- Stack

R1 : R2 <- Stack

Вход

R7 : R8 = R1 : R2

R6 =  R0

С: R0 <- Stack

R1 : R2 <- Stack

R5 : R0 = R2 : R0

С: R0 <- Stack

R1 : R2 <- Stack

R3 =  R2

R5 = R3 AND R5

R6 = R4 AND R6

R1 : R2 = R7 : R8

С: R0 -> Stack

R1 : R2 -> Stack

Выход

Рисунок  8 -  Блок-схема для операции №6

 Да

Начало №7

R3= R4 =0

C=0

Конец №7

В R2 первый множитель

R5=0

В R0 второй множитель

С=0

R0 = R0 >> 1

R0 ->Stack

C=0

C=0

R1:R2 =

=R1:R2 << 1

R0 <- Stack

R3:R4=

= R3:R4 + R1:R2

В R1:R2 адрес произведения

[R1:R2 ]= R3:R4

Нет

Нет

Да

Рисунок 9 - Блок-схема для операции №7

R1 =  R0 

Конец №7

Начало

Обращение к подпрограмме ввода

Обращение к подпрограмме ввода

R2 =  R0 

Обращение к подпрограмме ввода

Обращение к подпрограмме ввода

R1 :R2 < < R3 :R4

R3 =  R0 

 Да

 Нет

R4 =  R0 

Обращение к подпрограмме ввода

R1 :R2 = (R1 :R2 )+1

RF =  R0 

Начало подпр. ввода

Конец подпр. ввода

 R0 <=  состояние устройства ввода

R1 :R2 < < R3 :R4

 R0 <=    слово из устройства ввода

 Да

 Нет

Рисунок 10 -  Блок – схема загрузчика

  1.  

 

А также другие работы, которые могут Вас заинтересовать

50336. Разработка программы «Конвертер валют» 189.5 KB
  Программа должна обеспечивать: таблицу перевода 5, 10, 15, …, 120 долларов США в рубли по текущему курсу (значение курса вводится с клавиатуры). Каждую задачу тремя способами – используя операторы цикла while, do while и for.
50337. Оценка финансового состояния войсковой части 3009 325.5 KB
  Определить суть анализа финансового состояния бюджетной организации, его задачи и методы; выявить основные направления финансовой деятельности организации; рассмотреть методику оценки финансовой деятельности организации и дать характеристику ее основным показателям; рассмотреть организационно-экономическую характеристику объекта исследования; провести анализ финансовой деятельности организации...
50340. Использование библиотеки элементов графического интерфейса Qt 111.5 KB
  План простейшее графическое приложение на Qt работа с компоновщиками создание приложения ColorViewer использование QFileDilog создание простейшего обозревателя текста Инструкция по выполнению лабораторной работы Простейшее GUIприложение на Qt Рассмотрим следующий фрагмент кода представляющий простейшее GUIприложение созданное с использованием элементов Qt. QWidget базовый класс для всех элементов графического интерфейса виджетов в Qt начиная с кнопок и кончая сложными диалогами. Попробуйте добавить в корневой...
50341. Постройка графа состояний P-схемы 166 KB
  Для СМО из задания 1 построить имитационную модель и исследовать ее (разработать алгоритм и написать имитирующую программу, предусматривающую сбор и статистическую обработку данных для получения оценок заданных характеристик СМО). Распределение интервалов времени между заявками во входном потоке и интервалов времени обслуживания – геометрическое с соответствующим параметром (ρ, π1, π2).