Помощь в написании студенческих работ
Антистрессовый сервис

Вычислительные машины, системы и сети

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Регистры распределены следующим образом: R2-счетчик итераций, R3-множимое 1 элемент массива, R4-множитель 2 элемент, R5-старшая часть произведения рн, R6 — младшая часть произведения PL. Операция начинается с инициализации цикла — установка нулей в регистрах старшей и младшей части произведений, установка начального значения счётчика. Затем происходит загрузка множителя 1-го в аккумулятор… Читать ещё >

Вычислительные машины, системы и сети (реферат, курсовая, диплом, контрольная)

МИНОБРНАУКИ РОССИИ Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

" Самарский государственный технический университет" в г. Сызрань Кафедра «Информатика и системы управления»

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

" Вычислительные машины, системы и сети"

Исполнитель: студент гр. ЭАБЗ-301

Головин К.О.

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

  • 1. Введение
  • 2. Описание микропроцессора
  • 3. Описание операций
  • 4 Код программы для иллюстрированного процессора
  • 5. Блок — схема программы
  • 6. Карты информационных потоков
  • 7. Заключение
  • 8. Библиографический список

1. Введение

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

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

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

Основная задача микропроцессора — исполнение программного кода (команд). И команды, и данные, которые они обрабатывают, хранятся в памяти в одном виде — а именно в виде двоичных чисел. Использование двоичной системы счисления позволяет существенно упростить устройство микропроцессора и других систем ЭВМ. Программирование для технологических микропроцессоров, для которых не существует трансляторов с языков высокого уровня, производится с помощью непосредственного задания операндов и номеров команд с использованием, однако, не двоичной, а боле удобной в употреблении шестнадцатеричной системы счисления.

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

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

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

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

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

2. Операция № 4 — цикл (сложение всех элементов массива).

3. Операция № 7 — умножение двух элементов массива.

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

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

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

7. Операция № 1 — сложение каких-либо двух элементов массива.

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). Чтобы пояснить подобную косвенную адресацию, предположим, что регистр 0001, т. е. регистр Н, содержит 1 011 101, а регистр 0010, т. е. регистр L, содержит 101 011. Тогда любая команда, ссылающаяся на регистр 1111, вызовет выборку операнда из ячейки памяти с адресом 101 110 100 101 011.

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

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

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

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

1. Операция загрузки программы.

Специальная программа-загрузчик выполняет операции по вводу требуемой программы с некоторого устройства ввода и размещению ее в памяти. Главная процедура четырежды обращается к подпрограмме ввода для ввода первых четырех адресных слов, передавая эти слова каждый-раз в новые общие регистры. Затем начинается цикл передачи вводимых слов в память. Каждое слово вводится подпрограммой ввода и затем передается в соответствующую ячейку памяти, адрес которой задается текущим значением адреса (ТА). ТА увеличивается на 1 при каждом прохождении цикла, т. е. при поступлении каждого слова. В конце цикла происходит проверка, не превышает ли ТА значение конечного адреса (КА). Если это так, процедура загрузки заканчивается; в противном случае — цикл повторяется. Программа-загрузчик начинается в ячейке 0000. Программа обращается к двум портам ввода: к порту 00 — за информацией о состоянии и к порту 01 — за данными. Первая группа команд соответствует главной процедуре. Подпрограмма ввода начинается с ячейки 001D. Общие регистры 1, 2, 3 и 4 хранят соответственно ТАН TAL, KAH и KAL. Они загружаются адресной информацией, поступающей с устройства ввода. Для этого каждый раз выполняется команда перехода на подпрограмму и команда пересылки.

Цикл начинается командой перехода на подпрограмму ввода. После возврата из нее очередное введенное слово находится в аккумуляторе. Это слово передается в ячейку памяти с помощью имеющегося в иллюстративном микропроцессоре механизма косвенной адресации. А именно, команда MOV О to F передает содержимое аккумулятора в ячейку памяти, адрес которой задан содержимым регистров 1 и 2 (т.е. Н и L). Поскольку эти регистры содержат значение ТА, слово попадает в нужное место памяти. Следующая команда, IHL, увеличивает на 1 значение ТА. Сравнение адресов ТА и КА осуществляется при помощи процедуры вычитания с двойной точностью и последующего условного перехода. Для вычитания с двойной точностью сначала вычитаются младшие части ТА и КА, а затем старшие части с участием заема, оставшегося от младших частей. Окончательный заем остается в триггере С. Следующая команда — «переход при нулевом переносе» на начало цикла. При С=0 снова входим в цикл, при С= 1 программа останавливается.

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

Первые две команды заполняют регистры H и L старшей и младшей частями адреса первого числа соответственно. Следующая команда PUSH отправляет значения этих регистров в стек. После чего стек опускается дважды. Второе число отправляется в стек аналогичным образом. После того, как данные отправились в стек, происходит переход на подпрограмму, которая осуществляет разгрузку стека с использованием команды POP. Извлечённые из стека данные передаются в ячейки памяти командой STR. Команда RET — выход из подпрограммы.

3. Операция № 4 — сложение всех элементов массива.

Первые две команды заносят в Н и L адрес первого числа. Затем в регистр 3 помещается начальное значение, равное 5. Регистр 3 будет выполнять функции счетчика количества суммируемых чисел. Сумма накапливается в общем регистре 4, в него заносится нулевое начальное значение. Наконец, в общий регистр 5 загружается константа 1, которая будет вычитаться из счетчика в процессе суммирования чисел. Рабочая часть цикла начинается с загрузки текущей частной суммы в аккумулятор из регистра 4. Далее следует команда сложения ADD F, содержащая специальный указатель F, который на самом деле соответствует ячейке главной памяти с адресом в паре регистров Н и L. Содержимое этой ячейки прибавляется к частной сумме в аккумуляторе. После этого результат передается в общий регистр 4. Далее команда IHL модифицирует регистры Н и L, так, чтобы они содержали адрес данных, которые должны обрабатываться при следующей итерации. Затем содержимое счетчика цикла передается в аккумулятор, уменьшается на 1 и снова возвращается в регистр 3. Когда вычисления завершаются, в аккумуляторе будет 0. Это условие тестируется командой «условный переход при ненулевом аккумуляторе». Если в аккумуляторе 0, тогда переход не происходит, и программа выходит на команду останова, в противном случае выполняется следующая итерация.

4. Операция № 7 — операция умножения двух элементов массива.

Регистры распределены следующим образом: R2-счетчик итераций, R3-множимое 1 элемент массива, R4-множитель 2 элемент, R5-старшая часть произведения рн, R6 — младшая часть произведения PL. Операция начинается с инициализации цикла — установка нулей в регистрах старшей и младшей части произведений, установка начального значения счётчика. Затем происходит загрузка множителя 1-го в аккумулятор из регистра 4, сдвиг множителя циклически вправо и возвращение результата в регистр 4. Таким образом, очередной разряд множителя, определяющий частное произведение, оказывается на триггере переноса С. Затем для подготовки сложения и сдвигов старшая часть произведения рн переносится в аккумулятор. Тестирование С = 1 осуществляется командой «переход при ненулевом переносе». Она обеспечивает пропуск следующей команды при С=0. Эта следующая команда прибавляет множимое 2-ой к аккумулятору (который содержит рн) и сохраняет перенос из старшего разряда в С. Затем Рн и С циклически сдвигаются вправо командой RTR. После сдвига новое значение рн возвращается в регистр 5. Затем pl и С сдвигаются вправо, для чего pl из регистра 6 загружается в аккумулятор, циклически сдвигается вместе с С и результат возвращается в регистр 6. После этого счетчик в регистре 2 уменьшается на 1 командой DHL, результат передается в аккумулятор и тестируется командой «переход при ненулевом аккумуляторе». Если аккумулятор содержит 0, то выполняется выход из подпрограммы; в противном случае управление передается на начало цикла.

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

Команда LDR 0 загружает первое число в аккумулятор, затем команда MOV передаёт данные в регистр 5. Далее происходит загрузка второго числа в аккумулятор и передача данных в регистр 6. Аналогично загружается третье число, данные передаются в регистр 7. Затем происходит переход к подпрограмме, которая передаёт данные из регистров 5, 6, 7 в ячейки памяти с использованием команд MOV и STR. Команда RET — выход из подпрограммы.

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

Команда LDR 0 загружает 1 элемент в аккумулятор, команда LDR 1 помещает 2 элемент в общий регистр 1. Затем осуществляется их сравнение путем вычитания 2 из 1. Если 2 элемент строго больше первого, тогда возникает заем в старший разряд, который сохраняется в виде единицы в триггере переноса С. Однако еще до проверки переноса С значение 1-ого, как «пробное» наибольшее из 1-го и 2-го загружается в регистр 2. Затем выполняется команда условного перехода по значению С. Если С не равно нулю, то претендент на роль наибольшего, т. е.1 элемент, заменяется на 2 элемент. Если С=0, то происходит переход на загрузку третьего элемента массива, и в этом случае в качестве большего значения остается третий — происходит вычитание из наибольшего чисел 1 и 2, проверяется наличие заёма. Если заем есть, то 3-ий больше и происходит передача 3-его в регистр 2, заменяющая наибольшее из 1 и 2. При любом варианте наибольшее значение из чисел находится в регистре 2, и оно будет аналогичным образом сравниваться со следующим 4 элементом, а затем пятым элементом массива. После сравнения всех 5 чисел, команда STR 2 осуществляет передачу содержимого регистра 2, т. е. наибольшего значения из чисел в ячейку памяти.

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

Команда LDR 1 загружает в регистр 1 константу 2D, команда LDR 0 осуществляет загрузку 1 элемента заданного массива в аккумулятор. Затем с использованием команды ADD 1 происходит сложение значения, которое хранится в аккумуляторе, со значением, которое храниться в регистре 1. Результат суммы передается в ячейку памяти с использованием команды STR. Затем в аккумулятор аналогично загружаются оставшиеся элементы массива 2,3,4,5, складываются с константой. Однобайтовая константа загружается в регистр R3, в регистре R5 находится счётчик для цикла перебора всех элементов массива.

8. Операция № 1 — сложение каких-либо двух элементов массива.

Команда LDR 0 загружает в аккумулятор 1-ое число, команда LDR 1 загружает в регистр 1 второе число. Затем происходит сложение загруженных чисел с использованием команды ADD 1. Результат суммы сохраняется в аккумуляторе. Команда STR 0 передаёт значение аккумулятора в ячейку памяти.

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

Ячейка памяти

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

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

Комментарий

Программа-загрузчик

7F

JMS

Обращение к подпрограмме ввода за ТАН

1F

1F

MOV 0 to 1

7F

JMS

Обращение за ТАL

1F

1F

MOV 0 to 2

7F

JMS

Обращение за КАН

000A

1F

1F

000B

MOV 0 to 3

000C

7F

JMS

Обращение за KAL

000D

000E

1F

1F

000F

MOV 0 to 4

7F

JMS

Начинается цикл ввода слов

1F

1F

OF

MOV 0 to F

Передача слова в М [ТА]

F5

IHL

ТА + 1 — >ТА.

MOV 0 from 4

Вычитание с двойной точностью ТА из КА

A2

SUB 2

Устанавливается С=1, если ТА > КА

MOV 0 from 3

Bl

SBC 1

7C

JCZ

Проверка заема в С. Если нет заема

001A

ввод нового слова

001В

001С

7B

JMP

Переход к операциям

001D

001E

001F

FD

INP

Начало программы ввода. Ввод слова

состояния.

7A

JAP

Проверка разряда знака в слове состояния.

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

1F

1F

FD

INP

Ввод слова в аккумулятор из устройства

ввода

F8

RET

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

Операция № 6

LRI 1

Установка в регистрах H и L адреса

первого элемента

LRI 2

002A

002B

PUSH

Передача в стек

002C

LRI 1

Установка в регистрах H и L адреса

002D

второго элемента

002E

LRI 2

002F

PUSH

Передача в стек

7F

JMS

Переход к подпрограмме в ячейку 00F4

F4

F4

Операция № 4

LRI 1

Установка в регистрах H и L адреса

первого элемента

LRI 2

LRI 3

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

счетчика цикла равным 5

003A

LRI 4

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

003B

003C

LRI 5

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

003D

003E

MOV 0 from 4

Прибавление числа

003F

8F

ADD F

MOV 0 to 4

F5

IHL

Увеличение H и L

MOV 0 from 3

Загрузка начального значения счётчика в Асс

A5

SUB 5

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

MOV 0 to 3

7D

JAN

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

3E

3E

MOV 0 from 4

Загрузка данных из 4 регистра в Асс

STR 0

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

004A

004B

Операция № 7

004C

LRI 5

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

004D

004E

LRI 6

004F

LRI 1

LRI 2

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

значения 8

LDR 4

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

MOV 0 from 4

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

F2

RTR

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

MOV 0 to 4

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

005А

MOV 0 from 5

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

005B

JCZ

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

005C

005D

005E

LDR 3

Загрузка множимого в регистр 3

005F

ADD 3

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

F2

RTR

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

MOV 0 to 5

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

MOV 0 from 6

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

F2

RTR

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

MOV 0 to 6

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

F6

DHL

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

MOV 0 from 2

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

7D

JAN

Тестирование Асс. Повторение

006A

цикла, если не нуль

006B

006C

MOV 1 from 5

Передача ст. части произведения в регистр 1

006D

MOV 2 from 6

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

006E

SТR 1

Передача содержимого регистра 1 в ячейку 0108

006F

SТR 2

Передача содержимого регистра 2 в ячейку 0109

Операция № 5

LDR 0

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

0D

MOV 0 to 5

LDR 0

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

007A

007B

0D

MOV 0 to 6

007C

LDR 0

Загрузка третьего аргумента в регистр 7

007D

007E

007F

0D

MOV 0 to 7

7F

JMS

Переход на подпрограмму в ячейку 00E7

E7

E7

Операция № 3

LDR 0

Передача 1го элемента из памяти в Асс

LDR 1

Передача 2го из памяти в регистр 1

A1

SUB 1

Вычитание 2 эл. из 1эл. Триггер C устанавливается, если 2 эл. больше, чем 1

008A

LDR 2

Передача 1числа в регистр 2, как возможно большего

008B

008С

008D

7C

JCZ

Проверка С на наличие заема. Если нет заема, то 1 > 2, и следующая команда опускается

008E

008F

LDR 2

Передача 2 элемента массива в регистр 2, заменяющая 1, если 2 > 1

LDR 1

Передача 3 элемента массива из памяти в регистр 1

MOV 0 from 2

Передача наибольшего из 1го и 2го в аккумулятор из рег.2

A1

SUB 1

Вычитание 3его из наибольшего среди 1,2 чисел. С устанавливается, если 3 больше

7C

JCZ

Проверка С на наличие заема. Если заем есть, то 3 больше, в противном случае, следующая команда опускается.

009A

9E

9E

009B

LDR 2

Передача 3его в регистр 2, заменяющий наибольшее из 1 и 2 чисел, если 3 больше

009C

009D

009E

LDR 1

Передача 4 элемента массива из памяти в регистр 1

009F

00A0

00A1

MOV 0 from 2

Передача наибольшего из 1,2,3 чисел в аккумулятор из регистра 2

00A2

A1

SUB 1

Вычитание 4го из наибольшего среди 1,2,3.

С устанавливается, если 4ый больше.

00A3

JCZ

Проверка С на наличие заема. Если заем есть, то 4

00A4

больше, в противном случае, следующая команда опускается.

00A5

A9

A9

00A6

LDR 2

Передача 4ого в регистр 2, заменяющая наибольшее из массива 1,2,3 если 4 больше

00A7

00A8

00A9

LDR 1

Передача 5 элемента массива из памяти в регистр 1

00AA

00AB

00AC

MOV 0 from 2

Передача наибольшего из элементов массива 1,2,3,4 в аккумулятор из регистра 2

00AD

A1

SUB 1

Вычитание 5 из наибольшего среди 1,2,3,4.

С устанавливается, если 5 больше

00AE

7C

JCZ

Проверка С на наличие заема, если заем есть, то 5 больше,

00AF

в противном случае, следующая команда опускается.

00B0

В4

В4

00B1

LDR 2

Передача 5 в регистр 2, заменяющая наибольшее из 1,2,3,4, если 5 больше.

00B2

00В3

00В4

STR 2

Передача наибольшего элемента в ячейку 010А

00В5

00В6

Операция № 2

00В7

LDR 0

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

00В8

0102 в Асс

00В9

00BA

LRI 1

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

00BB

2D

2D

00BC

ADD 1

Сложение 1 числа с константой, сумма Асс

00BD

STR 0

Передача содержимого Асс в ячейку 010B

00BE

00BF

0B

0B

00C0

LDR 0

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

00C1

0103 в Асс

00C2

00C3

ADD 1

Сложение 2 числа с константой, сумма Асс

00C4

STR 0

Передача содержимого Асс в ячейку 010C

00C5

00C6

0C

0C

00C7

LDR 0

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

00C8

0104 в Асс

00C9

00CA

ADD 1

Сложение 3 числа с константой, сумма Асс

00CB

STR 0

Передача содержимого Асс в ячейку 010D

00CC

00CD

0D

0D

00CE

LDR 0

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

00CF

0105 в Асс

00D0

00D1

ADD 1

Сложение 4 числа с константой, сумма Асс

00D2

STR 0

Передача содержимого Асс в ячейку 010E

00D3

00D4

0E

0E

00D5

LDR 0

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

00D6

0106 в Асс

00D7

00D8

ADD 1

Сложение 5 числа с константой, сумма Асс

00D9

STR 0

Передача содержимого Асс в ячейку 010F

00DA

00DB

0F

0F

Операция № 1

00DC

LDR 0

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

00DD

0102 в Асс

00DE

00DF

LDR 1

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

00E0

0103 в регистр 1

00E1

00E2

ADD 1

Сложение 0 и 1 регистров, сумма Асс

00E3

STR 0

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

00E4

00E5

Окончание операций

00E6

FA

HLT

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

00E7

MOV 0 from 5

Начало подпрограммы для операции № 5. Передача содержимого регистра 5 в Асс

00E8

STR 0

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

00E9

00EA

00EB

MOV 1 from 6

Передача содержимого регистра 6 в регистр 1

00EC

STR 1

Передача содержимого регистра 1 в ячейку 0112

00ED

00EE

00EF

MOV 2 from 7

Передача содержимого регистра 7 в регистр 2

00F0

STR 2

Передача содержимого регистра 2 в ячейку 0113

00F1

00F2

00F3

F8

RET

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

00F4

POP

Начало подпрограммы для операции № 6. Извлечение данных из стека

00F5

STR 1

Передача содержимого регистра 1 в ячейку 0114

00F6

00F7

00F8

STR 2

Передача содержимого регистра 2 в ячейку 0115

00F9

00FA

00FB

POP

Извлечение данных из стека

00FC

STR 1

Передача содержимого регистра 1 в ячейку 0116

00FD

00FE

STR 2

Передача содержимого регистра 2 в ячейку 0117

00FF

F8

RET

Возврата из подпрограммы операции № 6

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

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

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

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

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

Результат сложения всех чисел

Результат умножения двух чисел (ст. часть)

Результат умножения двух чисел (мл. часть)

010A

Результат нахождения наибольшего числа

010B

Результат сложения 1 числа с константой

010C

Результат сложения 2 числа с константой

010D

Результат сложения 3 числа с константой

010E

Результат сложения 4 числа с константой

010F

Результат сложения 5 числа с константой

Результат сложения 2 чисел

Данные из регистра

Данные из регистра

Данные из регистра

Данные из стека

Данные из стека

Данные из стека

Данные из стека

5. Блок — схема программы

6. Карты информационных потоков

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

Представим карты информационных потоков для операции № 6. Программа для операции № 6 состоит из следующих операций: LRI, PUSH, JMS, POP, STR, RET.

Рисунок 3 — Карта информационных потоков для команды LRI

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

Одной из специальных команд программного кода является однобайтовая команда PUSH, которая служит для помещения данных в стек. Стек опускается дважды. В результате во втором регистре стека оказывается значение аккумулятора с переносом, а в первом (вершине стека) содержимое пары регистров Н и L. Карта инфопотоков представлена на рисунке 4.

Рисунок 4 — Карта информационных потоков для команды PUSH

Следующей в заданной операции № 6 является команда JMS, которая содержит три байта и служит командой обращения к подпрограмме. Стек опускается и содержимое счетчика команд помещается в вершину стека. Содержимое последнего регистра стека теряется. Содержимое счетчика команд замещается вторым и третьим байтами команды JMS, причем второй байт замещает старшие 8 разрядов счетчика команд, а третий байт-младшие 8 разрядов, что вызывает передачу управления в заданную ячейку. Карта инфопотоков представлена на рисунке 5.

Рисунок 5 — Карта информационных потоков для команды JMS

Следующей специальной командой программного кода является однобайтовая команда POP, которая служит для извлечения данных из стека. Содержимое вершины стека передается на пару регистров Н и L. Содержимое младшей половины второго регистра стека передается в аккумулятор, а младший бит старшей половины этого же регистра передается на триггер переноса С. Стек поднимается дважды, состояние двух нижних регистров остаётся без изменений. Карта инфопотоков представлена на рисунке 6.

Рисунок 6 — Карта информационных потоков для команды РОР

Команда STR R является трехбайтовой. Она служит для запоминания регистра, причем во втором и третьем байте этой команды содержатся старшая и младшая часть ячейки памяти, в которую необходимо сохранить содержимое нужного нам регистра. Содержимое регистра адреса данных, загруженного в фазе выборки-дешифрации вторым и третьим байтами команды, подается на адресную шину, а содержимое общего регистра r подается на шину данных. Затем устройство управления формирует сигнал «запись», стробирующий запись данных в адресуемую ячейку памяти. Фаза выполнения требует одного внешнего обмена и занимает один машинный цикл. Следовательно, полный командный цикл занимает четыре машинных цикла: три на фазу выборки-дешифрации и один на фазу выполнения. Карта представлена на рисунке 7.

Завершающей командой обращения к подпрограммам является команда возврата из подпрограммы RET, которая содержит один байт. Стек опускается и содержимое счетчика команд помещается в вершину стека. Содержимое последнего регистра стека теряется.

Содержимое счетчика команд замещается вторым и третьим байтами команды JMS, причем второй байт замещает старшие 8 разрядов счетчика команд, а третий байт-младшие 8 разрядов, что вызывает передачу управления в заданную ячейку. Карта инфопотоков представлена на рисунке 8.

Рисунок 7 — Карта информационных потоков для команды STR

Рисунок 8 — Карта информационных потоков для команды RET

7. Заключение

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

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

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

1. Вирт Н. Алгоритмы и структуры данных. — М.: Мир, 1999.

2. Гивоне Д., Россер Р. Микропроцессоры и микрокомпьютеры. — М.: Мир, 1993.

3. Гудман С., Хидетниеми С.

Введение

в разработку и анализ алгоритмов. — М.: Мир, 1991.

4. Каган Б. М. Электронные вычислительные машины и системы. — М.: Энегроатомиздат, 1997.

5. Методические указания к выполнению курсового проекта для студентов, по дисциплине «Вычислительные, машины системы и сети». 2003 г.

6. Пятибратов А. П., Гудыно Л. П., Кириченко А. А. Вычислительные системы, сети и телекоммуникации. — М.: Финансы и статистика, 2002.

Показать весь текст
Заполнить форму текущей работой