3541 ОРГАНИЗАЦИЯ ЭВМ И СИСТЕМ

РАБОТА № 3

РАБОТА С ПАМЯТЬЮ. ПОДПРОГРАММЫ И ЦИКЛЫ

Цель работы: изучение структуры и функций блока микропрограммного управления, микропрограммирование обработки данных, записанных в оперативной памяти (ОП), с использованием циклов и подпрограмм.

1. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

  • по материалам раздела 2 ознакомиться с особенностями работы с ОП;
  • по материалам раздела 3 ознакомиться с принципами микропрограммирования подпрограмм и циклов;
  • используя как образец микропрограмму, приведенную в разделе 4, разработать, закодировать и ввести микропрограмму решения задачи;
  • ввести исходные данные, отладить микропрограмму в режиме МИКРОКОМАНДА, фиксируя изменения состояния модели после выполнения каждой микрокоманды;
  • выполнить микропрограмму на различных наборах исходных данных в режиме АВТОМАТ.

2. РАБОТА С ОПЕРАТИВНОЙ ПАМЯТЬЮ

Ввод данных в ОП производится, как было описано в работе №1. Возможны просмотр и корректировка данных в приостановках после выполнения очередного шага моделирования.

Адресация ОП выполняется различными способами, которые рассматриваются ниже. При этом 16-ричный адрес не должен превышать 3FF.

Прямая адресация. Адрес слова ОП задается в поле CONST микрокоманды (МК). Загрузка адреса происходит через процессор по цепочке «шина DA - MR - ALU - SDA – ARAM» и требует отдельной МК с кодом 2 в поле WM и кодом 5 в поле SRC.

Косвенная регистровая адресация. Адрес хранится в одном из регистров РЗУ, куда он может быть загружен предварительно из поля CONST или сформирован иным образом. Адрес регистра задается полем В. Содержимое регистра передается в ARAM из RGB, для чего в поле WM нужно записать 3. Параллельно в АЛУ могут выполняться различные преобразования информации.

Автоинкрементная адресация. Адрес также передается в ARAM через RGB. Одновременно к регистру прибавляется 2. Это можно сделать, записав число 2 в поле CONST и указав CONST в качестве источника операнда R.

Автодекрементная адресация. Из регистра вычитается 2, полученное значение передается в ARAM с выхода SDA.

Косвенная адресация. Адрес ОП выбирается из другой ячейки ОП, адресуемой полем CONST или регистром РЗУ. Передача адреса в ARAM после его чтения из ОП производится через операционный блок по цепочке «RGR - MS - ALU - SDA – ARAM».

3. ПОДПРОГРАММЫ И ЦИКЛЫ

Работа с подпрограммами выполняется с помощью функций CJS (условный вызов) и CRTN (условный возврат) схемы УПМ. Чтобы сделать их безусловными, в поле JFI записывается 4. При вызове адрес возврата запоминается в стеке и происходит переход по адресу подпрограммы, заданному в поле CONST. При возврате происходят переход по адресу из стека и декремент указателя стека STP.

Для организации циклов с числом повторений N в счетчик RACT загружается  значение N-1 из поля CONST с помощью функции LDCT. Для возврата в начало цикла используют функцию RPCT. Если RACT=0, следующая МК выбирается в естественном порядке. В противном случае происходят декремент счетчика и переход по адресу из поля CONST.

4. МИКРОПРОГРАММИРОВАНИЕ АЛГОРИТМОВ

Пример. В массиве М чисел, записанных в ОП, начиная с адреса NADDR, найти минимальный элемент и записать его в ОП по адресу MIN. Сравнение элементов массива оформить как подпрограмму.

Схемы алгоритмов поиска минимального элемента в массиве и сравнения элементов массива  приведены на рис. 1, а и 1, б соответст-венно. Для адресации памяти используем автоинкрементную адресацию. Для этого в регистр AX  загружаем начальный адрес массива NADDR, а для обращения к следующей ячейке памяти осуществляем инкремент AX (AX:=AX+2). Запись регистра в квадратных скобках означает, что мы работаем не с содержимым регистра, а с содержимым ячейки ОП, адрес которой находится в заданном регистре. Минимальный элемент первоначально получается в ВХ, а затем передается в ОП по требуемому адресу MIN.

При интерпретации программы примем, что основная микропрограмма (табл. 1) начинается с адреса 0, подпрограмма (табл. 2) - с адреса 10, массив из десяти чисел записан, начиная с адреса 100, результат записывается по адресу 20, число циклов подсчитывается в счетчике RACT. Поскольку число выполняемых циклов на 1 больше начального значения счетчика, в него заносится значение 8.

 

Рис. 1. Схемы алгоритмов:

а – поиск минимального элемента а массиве;

б – сравнение элементов массива

Отметим особенности микропрограмм. По микрокоманде 00 начальный адрес массива заносится одновременно в AX и ARAM. По микрокоманде 01 первый элемент массива читается в ВХ, а в счетчик RACT заносится число циклов из поля CONST. Таким образом, три команды интерпретируются двумя микрокомандами. Команда записи результата интерпретируется двумя микрокомандами: четвертая заносит в ARAM адрес, а пятая записывает по этому адресу минимальный элемент массива.

По микрокоманде 10 подпрограммы к содержимому АХ прибавляется 2, и полученная сумма засылается в АХ и ARAM как адрес следующего элемента. В последующих трех микрокомандах по этому адресу выбирается число соответственно для сравнения в CX и записи в ВХ, если оно меньше того, что там находится. В микрокоманде 12 предусмотрен условный, а в микрокоманде 13 - безусловный выход из подпрограммы.

Микропрограмма нахождение минимального элемента         Таблица 1

Адрес МК

Операция

Поле

Значение

Функция

00

AX:=100

SRC

CONST

DST

WM

5

100

4

2

DA

Адрес массива

Запись в РЗУ

Запись в ARAM

01

BX:= [AX]

 

 

RACT:=8

B

MEM

DST

CHA

CONST

3

5

1

6

8

ВХ

Чтение слова из ОП

РЗУ[B]:= RGR

LDCT

02

LMIN:

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

SRAV

JFI

CHA

CONST

4

1

10

Б/у переход

CJS

Адрес подпрограммы

03

if RACT<>0   then

RACT:=RACT-1

goto LMIN

CHA

CONST

4

2

RPCT

Адрес метки LMIN

04

ARAM:=20

SRC

WM

CONST

5

2

20

DA

Запись в ARAM

Адрес MIN

05

[20]:=BX

 

A

WM

MEM

JFI

3

1

7

5

BX

Запись в RGW

Запись слова в ОП

Останов

Микроподпрограмма сравнения                            Таблица 2

Адрес МК

Операция

Поле

Значение

Функция

10

SRAV:

AX:=AX + 2

SRC

ALU

DST

CONST

WM

 

5

3

4

2

2

DA, RGB

R+S

Запись в РЗУ

 

Запись в ARAM

11

СX:= [AX]

B

MEM

DST

 

1

5

1

СХ

Чтение слова из ОП

РЗУ[B]:= RGR

 

 

 

Окончание табл. 2

Адрес МК

Операция

Поле

Значение

Функция

12

BX – СX

 

 

 

 

Условный возврат из подпрограммы,

если установлен флажок N или Z

A

B

ALU

CCX

 

CC

CHA

3

1

2

1

 

6

5

BX

CX

R-S-1+C0

C0=1

 

N v Z

CRTN

13

BX:=CX

Безусловный возврат из подпрограммы

 

B

A

DST

JFI

CHA

3

1

4

4

5

BX

CX

РЗУ[B]:=SDA

Б/у переход

CRTN

5. СОДЕРЖАНИЕ ОТЧЕТА

В отчет входят следующие пункты:

1)    схемы алгоритма решаемой задачи;

2)    микропрограмма и микроподпрограмма с подробными коммента-риями;

3)    исходные данные с указанием их размещения в ОП;

4)    результаты решения задачи в режиме МИКРОКОМАНДА (трасса) и АВТОМАТ.

6. КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Опишите структуру блока микропрограммного управления и функции его составляющих. Для каких целей используются стек, счетчик, мультиплексор кода условия в вашей микропрограмме?
  2. Какие способы формирования адреса следующей МК реализуются в БМУ?
  3. Проанализируйте формирование условий перехода в зависимости от значения поля СС. В каких случаях используется инверсия условия? Когда следует использовать дополнительный регистр флажков?
  4. Какие инструкции БМУ используются для организации циклов и подпрограмм? Можно ли в вашей микропрограмме организовать циклы и подпрограммы иначе, чем вы это сделали? Как это повлияет на качество микропрограммы?
  5. Опишите способы адресации ОП, используемые в процессоре. Какие из них имеют место в вашей микропрограмме?

7. ЗАДАНИЯ НА МИКРОПРОГРАММИРОВАНИЕ

  1. Построить массив Q квадратов элементов массива А. Вычисление квадрата оформить как подпрограмму.
  2. Заданы два массива положительных чисел А и В. Сформировать массив С, каждый элемент которого есть произведение  А[I]*B[I]. Умножение двух чисел оформить как подпрограмму.
  3. Заданы два массива положительных чисел А и В. Сформировать массив С, каждый элемент которого – наибольший общий делитель (НОД) двух чисел А[I] и B[I]. Вычисление НОД выполнить, используя алгоритм Евклида, и оформить как подпрограмму.
  4. Задан массив 4-разрядных положительных десятичных чисел. Преобразовать его в массив двоичных чисел. Преобразование выполнить по формуле B=((D1*10+D2)*10+D3)*10+D4, где Di - тетрады числа, начиная со старшей, и оформить как подпрограмму.
  5. Определить номера Н1 и Н2 первых элементов двух массивов, равных M и N соответственно. Определение номера элемента оформить как подпрограмму.
  6. Сформировать 2 массива, элементы которых равны остаткам и частным от деления одноименных элементов исходного массива А на целую степень двойки. Вычисление остатка и частного для одноименного элемента оформить как подпрограмму.
  7. Сформировать массив остатков от деления элементов исходного массива А на 15. Вычисление остатка оформить как подпрограмму.
  8. Сформировать массив остатков от деления десятичных чисел на 9. Вычисление остатка оформить как подпрограмму.
  9. Подсчитать число элементов массива А, которые дают ненулевые остатки при делении на 15. Вычисление остатка оформить как подпрограмму.
  10. Элементы исходного массива А дополнить остатками от деления этих элементов на 15: коды исходных чисел сдвигаются на 4 бита влево, а остатки записываются на освободившееся место. Вычисление остатка оформить как подпрограмму.
  11. Вычислить количество нулевых, положительных и отрицательных элементов массива. Выборку и анализ элемента оформить как подпрограмму.
  12. Вычислить суммы положительных, отрицательных и количество нулевых элементов массива. Выборку и анализ элемента оформить как подпрограмму.

РАБОТА № 4

ЭМУЛЯЦИЯ КОМАНД МИКРОПРОЦЕССОРА i8086

Цель работы: ознакомление с принципами микропрограммной эмуляции ЭВМ с программным управлением, микропрограммирование машинных команд микропроцессора i8086 (МП-86).

1. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

  • по материалам раздела 2 ознакомиться с принципами микропрограммной эмуляции;
  • по материалам раздела 3 ознакомиться с архитектурой МП-86 и основными этапами выполнения машинных команд в МП-86;
  • по материалам раздела 4 ознакомиться с режимами адресации (регистровый, непосредственный и относительный) и соответствующими форматами команд;
  • в соответствии с вариантом задания разработать алгоритм, написать программу  на языке ассемблера, закодировать  и ввести ее в оперативную память (ОП);
  • составить список операций, входящих в программу решения задачи;
  • пользуясь рекомендациями раздела 5, разработать микропрограммы операций и разместить их в микропрограммной памяти;
  • составить и ввести в модель таблицу преобразования адресов;
  • ввести исходные данные и установить указатель команды IP на начало программы;
  • отладить программу в режиме МИКРОКОМАНДА;
  • выполнить программу на различных наборах исходных данных в режимах КОМАНДА и АВТОМАТ, фиксируя изменения состояния модели после выполнения каждой команды.

2. ПРИНЦИПЫ МИКРОПРОГРАММНОЙ ЭМУЛЯЦИИ

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

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

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

3. АРХИТЕКТУРА ПРОЦЕССОРА И ОСНОВНЫЕ ЭТАПЫ ВЫПОЛНЕНИЯ МАШИННЫХ КОМАНД

В состав процессора  входят (рис. 1) регистр команд RGK, арифметико-логическое устройство (АЛУ), устройство управления (УУ) и регистры, доступные программисту на уровне команд программы. Эти регистры можно разделить на четыре группы:

а) регистры общего назначения (РОНы). РОНы разделены на две половины – старшую и младшую. В некоторых командах РОНы специализированны. Это отражается в их названиях:

  • аккумулятор (AX) – главный рабочий регистр, команды, относящиеся к нему, являются самыми короткими;
  • база (BX) – кроме общего назначения, этот регистр используется также для адресации операндов в памяти;
  • счетчик (CX) – в некоторых командах содержимое CL или CX используется как счетчик.