966
Разработка программы для гипотетического (иллюстрированного) микропроцессора
Курсовая
Информатика, кибернетика и программирование
Задан массив из пяти элементов - целых положительных чисел. Необходимо написать программу для гипотетического (иллюстрированного) микропроцессора. Эта программа позволит выполнять различные манипуляции с элементами массива.
Русский
2013-01-06
425 KB
26 чел.
Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
в г. Сызрани
Кафедра «Автоматизация технологических процессов и производств»
Расчетно-пояснительная записка к курсовому проекту
по дисциплине «Вычислительные машины, системы и сети»
Вариант 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 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
Задан массив из пяти элементов - целых положительных чисел. Необходимо написать программу для гипотетического (иллюстрированного) микропроцессора. Эта программа позволит выполнять различные манипуляции с элементами массива.
В качестве дополнительной операции привести операцию загрузки программы.
Написать программу, выполняющую первую операцию, на языке Ассемблер для процессора 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Е и служит для различных, необходимых для нас операций. Например, упрощения увеличения или уменьшения счетчиков. Данные в оперативной памяти располагаются сразу после кода. Определим их в массиве как целые и положительные и однобайтовые числа.
В начале операции в регистре R3, записывается наибольшее однобайтовое значение (00 16), регистр R5, служит счётчиком. В конце операции в регистре R3 будет находиться значение наименьшего элемента массива, которое записывается в память. Блок-схема представлена на рис. 7.
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 |
7С |
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 БИБЛИОГРАФИЧЕСКИЙ СПИСОК
В 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 - Блок схема загрузчика
А также другие работы, которые могут Вас заинтересовать | |||
19644. | Характеристика цивилизации Древнего Востока | 10.39 KB | |
Характеристика цивилизации Древнего Востока На рубеже 43 тысячелетия заканчивается период первобытности и мир переходит в эпоху цивилизации. Признаки цивилизации: Государство появление городов письменность ирригация искусственные каналы для орошения полей со... | |||
19645. | Характеристика античной цивилизации | 11.41 KB | |
Характеристика античной цивилизации. Море это главное богатство греков оно давало возможность заниматься ремеслом торговлей мореплаванием. Занимались скотоводством выращиванием оливок и винограда. ВЕЛИКАЯ ГРЕЧЕСКАЯ ЦИВИЛИЗАЦИЯ Причины колонизации: 1. быстры... | |||
19646. | Становление Древнерусского государства. Норманская теория | 11.2 KB | |
Становление Древнерусского государства. Норманская теория В IX веке у восточных славян возникает госво. Согласно норманнской теории сформулированной немецкими учеными Г. Ф. Миллером и Г.З. Байером в XVIII веке создание русского госва приписывалось скандинавским викинга | |||
19647. | Первые Киевские князья | 14.56 KB | |
Первые Киевские князья В 879 г. Рюрика на новгородском престоле сменил Олег Вещий.В 882г. Олег совершил поход на Киев и убил правящих там князей Дира и Аскольда а затем провозгласил себя правителем единого киевсконовгородского государства. Позднее в XIX веке оно получит н | |||
19648. | Причины феодальной раздробленности на Руси | 14.66 KB | |
Причины феодальной раздробленности на Руси: Господство натурального хозяйства и как следствие слабые экономические связи между районами государства. Усиление отдельных княжеств правители которых уже не желают подчиняться киевскому князю. Постоянные усобиц... | |||
19649. | Значение Батыева нашествия и установления монгольского ига | 15.09 KB | |
31 мая 1223 г. на реке Калке монголы разгромили лишенное единства русское войско. Это поражение имело большое моральное значение для будущего завоевания Руси возник миф о непобедимости монголов. В 1237 г. началось нашествие монголов на Русь. Были разорены Рязань Москва Сузд... | |||
19650. | Причины образования единого Российского государства | 16.25 KB | |
В XIII-XIV веках сложились предпосылки образования русского централизованного государства экономические и политические. Причины образования единого Российского государства: Потребность в сплочении сил Руси для освобождения от ордынского ига Необходимость по | |||
19651. | Иван Грозный | 14.34 KB | |
Вопрос № 11. 3 февраля 1565 г. Иван Грозный учредил опричнину. Опричнина период в истории России с 1565 года до самой смерти Ивана Грозного обозначившийся государственным террором и системой чрезвычайных мер. Также это система управления по которой территория делится на д... | |||
19652. | Реформы Избранной Рады | 14.53 KB | |
1533-1584 правление Ивана Грозного. Для подготовки проекта преобразований Иван создает неформальный кружок единомышленников Избранную Раду. Реформы Избранной Рады: 1550 г. принят новый Судебник основой для которого послужил Судебник 1497 г. Помещики именуются го | |||