Е.Л. Иванов, Е.В. Бражникова, Б.М. Нефедов, Ю.Д. Тювин - Эмулятор восьмиразрадн
Описание файла
Документ из архива "Е.Л. Иванов, Е.В. Бражникова, Б.М. Нефедов, Ю.Д. Тювин - Эмулятор восьмиразрадн", который расположен в категории "". Всё это находится в предмете "организация эвм" из 6 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "организация эвм, микропроцессорные средства и схемотехника" в общих файлах.
Онлайн просмотр документа "Е.Л. Иванов, Е.В. Бражникова, Б.М. Нефедов, Ю.Д. Тювин - Эмулятор восьмиразрадн"
Текст из документа "Е.Л. Иванов, Е.В. Бражникова, Б.М. Нефедов, Ю.Д. Тювин - Эмулятор восьмиразрадн"
3
М ИНИСТЕРСТВО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Е.Л. Иванов Е.В. Бражникова
Б.М. Нефедов Ю.Д. Тювин
ЭМУЛЯТОР ВОСЬМИРАЗРЯДНОГО
ПРОЦЕССОРА
МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ ДЛЯ СТУДЕНТОВ СПЕЦИАЛЬНОСТИ 220100 «ЭВМ, СИСТЕМЫ, КОМПЛЕКСЫ И СЕТИ» ПО ДИСЦИПЛИНЕ «ОРГАНИЗАЦИЯ ЭВМ И СИСТЕМ»
МОСКВА,2001
С оставители: Е.Л. Иванов, Е.В. Бражникова, Б.И. Нефедов, Ю.Д. Тювин
Редактор В.А. Губарев
Печатается по решению редакционно – издательского Совета Московского институра радиотехники электроники и автоматики, (технический университет).
Рецензенты: К.С.Хомяков, В.И. Лебедев
Московский институт
радиотехники, электроники
и автоматики, (технический унверситет),2001.
1. Цель лабораторных работ.
Целью лабораторных работ является изучение структуры и принципов функционирования 8 – разрядного процессора типа КР580ВМ80.
Изучение выполняется на эмуляторе в потактном, покомандном и автоматическом режимах.
Исследуются основные группы команд в потактном режиме и изучается структура процессора, взаимодействие основных его блоков при выполнении команд различного типа. Эмулятор позволяет фиксировать в каждом такте состояние процессора, а именно состояние всех регисторов, счетчиков, флагов, управляющих сигналов, № текущего такта и № текущего цикла выполнение команды.
Эмулятор позволяет исследовать структуру процессора на программном уровне в покомандном и автоматическом режимах.
2. Описание эмулятора.
Эмулятор 8 – разрядного процессора реализован на ЭВМ типа IBM – PCAT.
При входе в эмулятор открывается окно ПМК КР580ВМ80, в котором изображена структура “стенда”.
В верхней части окна (рис.1) указываются режимы работы: “файл”, “структурная схема”, “система команд”, “помощь”.
Строкой ниже указывается адрес (состояние шины адреса в шестнадцатиричной системе счисления), данные (состаяние шины данных в шестнадцатиричной системе счисления).
Далее показано окно, в котором указывается адрес ОЗУ и его содержимое, или номер регистра и его содержимое.
В окне флагов записывается состояние флагов Z, S, P, C, AC на данный момент выполнения команды процессором, где
Z – признак нулевого результата,
S – знак,
P – признак четного количества единиц результата,
С – признак переноса из старшего разряда,
АС – признак дополнительного переноса из старшего разряда младшей тетрады байта.
Для ввода информации используется клавиатура, которая подразделяется на цифровую от 0 до F и режимную SpL, SpH, PcL, PcH, ОЗУ, Сброс ОЗУ, Регистр, Сброс рег.
Для ввода информации ОЗУ необходимо нажать кнопку «ОЗУ»,затем кнопку «Ввод». После этого ввести в данную ячейку код команды или данные.
Для ввода информации в регистры требуется нажать клавишу «Регистр», клавишу «Ввод», а затем на цифровой клавиатуре произвести ввод данных.
Клавиши SpL, SpH и PcL, PcH позволяют записывать адреса в указатель стека и счетчик команд.
При вводе любой информации необходимо выполнить нажатия “мышкой” на клавишу “ввод”.
В первой части “окна” расположены регистры процессора:
А – аккумулятор;
В,С,D,Е,H,L – общие регистры RON, PC – программный счетчик;
SP – указатель стека.
Указатель стека – указывает вершину стека FFFF (перевернутый стек).
В области окна “выполнение программы” задается режим:
-
автоматический режим – при нажатии кнопки “автоматический режим” – выполняется программа до команды HLT;
-
покомандный режим – при нажатии кнопки “покомандный режим” реализуется весь цикл исполнения команды;
-
потактный режим – при каждом нажатии кнопки “выполнить” осуществляется выполнение одного такта работы процессора.
В правой части окна экрана расположено “окно”, в котором указана “Позиция” адресного пространства ОЗУ, в котором производится набор программы: адрес команды, КОП, ассемблерный код команды. “Позиция” указывает область адресного пространства ОЗУ, в котором прокруткой “∆” или “” можно указывать начало требуемого адресного пространства.
При указании “мышью” позиции “структурная схема” раскрывается следующее окно, в котором показана структурная схема процессора (рис.2).
Структурная схема 8-разрядного процессора включает АЛУ с входными регистрами(“Аккумулятор”, “Буф.Регистр 1”, “Буф.Регистр 2”), “Рег.Признаков”, “Схема десятичной коррекции”; “Регистр команд”, “Деш. команд”, “Блок синхронизации и управления”, “Регистры временного хранения W и Z”, “регистры общего назначения B,C,D,E,H,L”, указатель стека, счетчик команд, схемы инкремента и декремента .
Указанные схемы подключены к внешним шинам адреса и данных через “Буферные регистры” адреса и данных.
Для организации режимов работы, как и в предыдущем окне, в данном расположена клавиатура ввода информации, аналогичная клавиатуре предыдущего окна, и соответствующие режимные клавиши, а также клавиши режима работы:
автоматический режим – AT;
покомандный режим – КМ;
потактный режим – ТК.При потактном режиме можно исследовать выполнение любой команды.
При каждом нажатии кнопки “Вып.” реализуется очередной такт работы процессора. При этом фиксируется на экране все состояния его регистров, номер такта, номер цикла, состояния управляющих сигналов, регистр состояния и PSW.
Режим работы с клавиатурой соответствует предыдущему окну.
При указании “мышью” в окне “ПМК КР580ВМ80” на позицию. “Система команд”, раскрывается окно “Команды” в
котором предоставлена таблица (рис.3) системы команд. Код команды определяется по матрице в 16-ричной системе счисления по столбцу и строке таблицы: например: MOV B, C – 41 или HLT – 76.
3. Система команд процессора.
Команды процессора представлены следующими форматами: однобайтным, двухбайтным и трехбайтным. За одно обращение к памяти выбирается один байт команды и размещается в регистре команд. Если команда имеет 2 или 3 байта, то второй и третий байты записываются в программно недоступные регистры W и Z, которые называются регистрами временного хранения.
В процессоре применяются четыре следующие способа адресации:
-
прямая адресация (относится к командам обращение к памяти, причем во втором и третьем байтах команды записывается адрес ОЗУ);
-
регистровая адресация (используется для обращения к внутренним регистрам процессора);
-
непосредственная адресация (в поле команды размещается операнд);
-
регистровая косвенная адресация (в поле команды размещается адрес регистровой пары, в которой записан адрес ОЗУ); в качестве регистровых пар могут быть использованы пары регистров В-С, D-Е, H-L, причем последняя пара H-L – адресует ячейку памяти М, которая называется псевдорегистром.
Система команд процессора включает 5 групп команд:
-
команды пересылок;
-
команды арифметических операций;
-
команды логических операций;
-
команды передачи управления;
-
команды обращение к стеку, ввода-вывода и управление МП – системой.
Группы команд пересылок
Эти команды производят обмен между регистрами POН и ОЗУ.
1. МОV R1,R2 | передать с регистра на регистр, (R2) R1 |
2. MOV R,M | передать из памяти ОЗУ РОН, т.е. [HL] R, (H) – старший полуадрес ячейки памяти , (L)- младший полуадрес; |
3. MOV M,R | передать в память (POH) ОЗУ, т.е. содержимое регистра R записать в ОЗУ по адресу, указанному в регистровой паре HL: (R) ОЗУ [HL] |
4. MVI R, data | передать непосредственный операнд, в R передается 8 – разрядный операнд, который находится во втором байте команды; |
5. MVI M, data | передать в память непосредственный операнд <data> ОЗУ [HL]. |
6. LXI RP, data | загрузить непосредственный 16-разрядный операнд. Команда 3-байтная. Здесь RP=BC, DE,HL Ri байт 3 Ri+I байт 2, где Ri – B, D,H. Ri+I – C, E, L. |
7. LDA addr | загрузить аккумулятор содержимым ячейки памяти адреса addr; команда трехбайтная, 2 и 3. |
8. STA addr | запомнить содержимое аккумулятора в ОЗУ по <addr>, т.е. (A) ОЗУ [байт3, байт2 адреса <addr>]. |
9. LHLD addr | загрузить регистры H и L операндом из ОЗУ по addr; команда выполняется следующим образом: 1 этап: (addr) L. 2 этап: инкремент адреса (addr) +I. 3 этап: (addr) + IH. |
10 SHLD addr | запомнить содержимое регистров H и L в ОЗУ по адресу addr; команда выполняется следующим образом: 1 этап: (L) ОЗУ [addr]. 2 этап: инкремент адреса [(addr) + I]. 3 этап: (H) ОЗУ [(addr) +I]. |
11. LDAX RP | загрузить А с косвенной адресацией, т.е. из ОЗУ, адрес ячейки которого указан в регистровой паре, прочитать операнд и передать его в аккумулятор. |
Группа команд арифметических операций
Эти команды выполняют арифметические операции и поразрядные булевы операции над данными, размещенными в регистрах РОН и в памяти. Они вырабатывают признаки, которые поступают в регистр признаков. Эти признаки еще называются флажками. Сложение и вычитание делаются в дополнительном коде.
1.ADD R | сложить с регистром (R)+(A) A |
2. ADD M | сложить с памятью (A)+[HL] A |
3. ADI data | сложить непосредственно (A)+<data> A., т.е. сложить содержимое аккумулятора со вторым байтом команды, результат записать в аккумулятор. |
4. ADC R | сложить с регистром и с битом переноса (A)+(R)+C . A |
5.ADC M | сложить с памятью и с битом переноса (A)+[HL]+C A |
6.ACI data | сложить с непосредственным операндом и битом переноса (A)+<data>+C A |
7.SUB R | вычесть содержимое регистра (A)-(R) A |
8.SUB M | вычесть содержимое памяти (A)-[HL] A |
9.SUI data | вычесть непосредственный операнд |
10. SBB R | вычесть содержимое регистра с займом (A)-(R)-C A |
11. SBB R | вычесть содержимое памяти с займом (A)-(R)-C A |
12. SBI data | вычесть непосредственный операнд с займом (A)-<data>-C A |
13. INR R | увеличить на “I” содержимое регистра (R)+I R |
14. INR M | увеличить на “I” содержимое памяти по адресу, указанному в HL. |
15. DCR R | уменьшить на “I” содержимое регистра (R)-I R |
16.DCR M | уменьшить на “I” содержимое памяти по адресу, указанному в HL. |
17. INX RP | увеличить на “I” содержимое регистровой пары. |
18. DAD RP | сложить содержимое регистров HL RP и результат записать в регистровую пару HL. |
19. DAA | выполнить десятичную коррекцию содержимого аккумулятора; десятичная операция выполняется по правилам десятичной арифметики. |
Примечание. Команды 13-17 используются для организации счетчиков циклов в программах.
Группа команд логических операций.
1. ANA R | логическая “И” c регистром РОН; (A)(R) A,C:=0, AC:=0. Команда используется для выделения части слова: 0011011100001111=00000111 |
2. ANA M | логическая “И” c памятью; [HL](A) A,C:=0, AC:=0. |
3. ANI data | логическая “И” c непосредственным операндом; <data><R> A,C:=0, AC:=0. |
Примечание. Команды 1-3 используются для выделения частей машинных слов.
4. XRA R | сложение по mod 2 с регистром (A)(R) . A |
5. XRA M | сложить по mod2 содержимое А с содержимым памяти по адресу HL. |
6. XRI data | сложить по mod2 содержимое А с непосредственным операндом. |
7. ORA R | “ИЛИ” с регистром (А)(R) A,C:=0, AC:=0. |
8. ORA M | “ИЛИ” с памятью [HL](A) A,C:=0, AC:=0. |
9. ORA data | “ИЛИ” с непосредственным операндом (A) <data> A,C:=0, AC:=0. |
10. CMP R | сравнить с регистром. Сравнение делается через вычитание (A)-(R) результат в А не записывается, но регистр признаков устанавливается в соответствии с результатом вычитания: если(A)=(R), то Z:=1, если (A) (R),то S:=1, иначе Z:=0, S:=0. |
11. CMP M | сравнение с памятью (A) –[HL]. |
12. CPI data | сравнение с непосредственным операндом; (A)-<data>. В остальном – аналогично команде CMP R. |
13. RLC | циклический сдвиг влево. Все сдвиги делаются только над содержимым А. Сдвиг на один разряд: косая передача в АЛУ. Сдвиг на n разрядов можно организовать только программно). |
14. RRC | циклический сдвиг вправо A(n+1) A(n) |
15. RAL | арифметический сдвиг влево. |
16. RAR | арифметический сдвиг вправо. |
17. STS | установить в единицу триггер переноса: 1 C. |
18. CMC | инвертировать содержимое триггера переноса C C. |
19. CMA | инвертировать содержимое аккумулятора (A) A. |
Группа команд передачи управления