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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,37 Мб
  • Опубликовано:
    2015-04-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

высшего профессионального образования

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

Кафедра "Информатика и системы управления"






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

к курсовой работе

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


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

Головин К.О.

Руководитель КР: к. п. н., доцент

Тараканов А.В.






Содержание

 

1. Введение

2. Описание микропроцессора

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

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

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

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

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

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

1. Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

.        Операция № 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, т.е. регистр Н, содержит 1011101, а регистр 0010, т.е. регистр L, содержит 00101011. Тогда любая команда, ссылающаяся на регистр 1111, вызовет выборку операнда из ячейки памяти с адресом 101110100101011.

программирование микропроцессор программный код

Все арифметические и логические операции выполняются в арифметико-логическом устройстве (АЛУ). Входами АЛУ служат две 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 - операция перехода к подпрограмме с передачей параметров через регистры.

Команда 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 находится счётчик для цикла перебора всех элементов массива.

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

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

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


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

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

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

Комментарий

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

0000

7F

JMS

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

0001

00

00


0002

1F

1F


0003

01

MOV 0 to 1


0004

7F

JMS

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

0005

00

00


0006

1F

1F


0007

02

MOV 0 to 2


0008

7F

JMS

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

0009

00

00


000A

1F

1F


000B

03

MOV 0 to 3


000C

7F

JMS

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

000D

00

00


000E

1F

1F


000F

04

MOV 0 to 4


0010

7F

JMS

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

0011

00

00


0012

1F

1F


0013

OF

MOV 0 to F

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

0014

F5

IHL

ТА + 1 - >ТА.

0015

14

MOV 0 from 4

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

0016

A2

SUB 2

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

0017

13

MOV 0 from 3


0018

Bl

SBC 1


0019

7C

JCZ

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

001A

00

00

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

001В

10

10


001С

7B

JMP

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

001D

00

00


001E

27

27


001F

FD

INP

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

0020

00

00

состояния.

0021

7A

JAP

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

0022

00

00

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

0023

1F

1F


0024

FD

INP

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

0025

01

01

ввода

0026

F8

RET

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

Операция №6

0027

61

LRI 1

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

0028

01

01

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

0029

62

LRI 2


002A

02

02


002B

77

PUSH

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

002C

61

LRI 1

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

002D

01

01

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

002E

62

LRI 2


002F

03

03


0030

77

PUSH

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

0031

7F

JMS

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

0032

00

00


0033

F4

F4


Операция №4

0034

61

LRI 1

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

0035

01

01

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

0036

62

LRI 2


0037

02

02


0038

63

LRI 3

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

0039

05

05

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

003A

64

LRI 4

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

003B

00

00


003C

65

LRI 5

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

003D

01

01


003E

14

MOV 0 from 4

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

003F

8F

ADD F

 

0040

04

MOV 0 to 4


0041

F5

IHL

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

0042

13

MOV 0 from 3

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

0043

A5

SUB 5

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

0044

03

MOV 0 to 3


0045

7D

JAN

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

0046

00

00


0047

3E

3E


0048

14

MOV 0 from 4

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

0049

74

STR 0

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

004A

01

01


004B

07

07


Операция №7

004C

LRI 5

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

004D

00

00


004E

66

LRI 6


004F

00

00


0050

61

LRI 1


0051

00

00


0052

62

LRI 2

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

0053

08

08

значения 8

0054

74

LDR 4

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

0055

01

01


0056

02

02


0057

14

MOV 0 from 4

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

0058

F2

RTR

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

0059

04

MOV 0 to 4

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

005А

15

MOV 0 from 5

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

005B

JCZ

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

005C

00

00


005D

62

62


005E

73

LDR 3

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

005F

01

01


0060

03

03


0061

83

ADD 3

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

0062

F2

RTR

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

0063

05

MOV 0 to 5

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

0064

16

MOV 0 from 6

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

0065

F2

RTR

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

0066

06

MOV 0 to 6

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

0067

F6

DHL

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

0068

12

MOV 0 from 2

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

0069

7D

JAN

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

006A

00

00

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

006B

57

57


006C

35

MOV 1 from 5

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

006D

56

MOV 2 from 6

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

006E

75

SТR 1

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

006F

01

01


0070

08

08


0071

76

SТR 2

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

0072

01

01


0073

09

09


Операция №5

0074

70

LDR 0

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

0075

01

01


0076

02

02


0077

0D

MOV 0 to 5


0078

70

LDR 0

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

0079

01

01


007A

03

03


007B

0D

MOV 0 to 6


007C

70

LDR 0

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

007D

01

01


007E

04

04


007F

0D

MOV 0 to 7


0080

7F

JMS

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

0081

00

00


0082

E7

E7


Операция №3

0083

70

LDR 0

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

0084

01

01


0085

02

02


0086

71

LDR 1

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

0087

01

01


0088

03

03


0089

A1

SUB 1

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

008A

72

LDR 2

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

008B

01

01


008С

02

02


008D

7C

JCZ

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

008E

00

00


008F

93

93


0090

72

LDR 2

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

0091

01

01


0092

03

03


0093

71

LDR 1

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

0094

01

01


0095

04

04


0096

12

MOV 0 from 2

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

0097

A1

SUB 1

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

0098

7C

JCZ

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

0099

00

00


009A

9E

9E


009B

72

LDR 2

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

009C

01

01


009D

04

04


009E

71

LDR 1

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

009F

01

01


00A0

05

05


00A1

12

MOV 0 from 2

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

00A2

A1

SUB 1

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

00A3

JCZ

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

00A4

00

00

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

00A5

A9

A9


00A6

72

LDR 2

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

00A7

01

01


00A8

05

05


00A9

71

LDR 1

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

00AA

01

01


00AB

06

06


00AC

12

MOV 0 from 2

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

00AD

A1

SUB 1

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

00AE

7C

JCZ

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

00AF

00

00

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

В4

В4


00B1

72

LDR 2

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

00B2

01

01


00В3

06

06


00В4

76

STR 2

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

00В5

01

01


00В6


Операция №2

00В7

70

LDR 0

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

00В8

01

01

0102 в Асс

00В9

02

02


00BA

61

LRI 1

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

00BB

2D

2D


00BC

81

ADD 1

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

00BD

74

STR 0

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

00BE

01

01


00BF

0B

0B


00C0

70

LDR 0

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

00C1

01

01

0103 в Асс

00C2

03

03


00C3

81

ADD 1

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

00C4

74

STR 0

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

00C5

01

01


00C6

0C

0C


00C7

70

LDR 0

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

00C8

01

01

0104 в Асс

00C9

04

04


00CA

81

ADD 1

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

00CB

74

STR 0

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

00CC

01

01


00CD

0D

0D


00CE

70

LDR 0

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

00CF

01

01

0105 в Асс

00D0

05

05


00D1

81

ADD 1

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

00D2

74

STR 0

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

00D3

01

01


00D4

0E

0E


00D5

70

LDR 0

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

00D6

01

01

0106 в Асс

00D7

06

06


00D8

81

ADD 1

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

00D9

74

STR 0

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

00DA

01

01


00DB

0F

0F


Операция №1

00DC

70

LDR 0

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

00DD

01

01

0102 в Асс

00DE

02

02


00DF

70

LDR 1

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

00E0

01

01

0103 в регистр 1

00E1

03

03


00E2

81

ADD 1

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

00E3

74

STR 0

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

00E4

01

01


00E5

10

10


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

00E6

FA

HLT

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

00E7

11

MOV 0 from 5

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

00E8

74

STR 0

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

00E9

01

01


00EA

11

11


00EB

11

MOV 1 from 6

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

00EC

75

STR 1

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

00ED

01

01


00EE

12

12


00EF

11

MOV 2 from 7

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

00F0

76

STR 2

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

00F1

01

01


00F2

13

13


00F3

F8

RET

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

00F4

73

POP

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

00F5

75

STR 1

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

00F6

01

01


00F7

14

14


00F8

76

STR 2

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

00F9

01

01


00FA

15

15


00FB

73

POP

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

00FC

75

STR 1

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


01

01


00FD

16

16


00FE

76

STR 2

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

00FF

01

01


0100

17

17


0101

F8

RET

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

0102



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

0103



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

0104



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

0105



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

0106



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

0107



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

0108



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

0109



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

010A



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

010B



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

010C



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

010D



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

010E



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

010F



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

0110



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

0111



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

0112



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

0113



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

0114



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

0115



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

0116



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

0117



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


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.

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

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

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

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

Похожие работы на - Вычислительные машины, системы и сети

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!