МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ №2
«Исследование выполнения простых программ в эмуляторе
«ЕMU КР580»»
для студентов специальности 09.02.01 Компьютерные системы и комплексы
2016
Цель работы:
1. Изучение работы команд микропроцессора КР580ВМ80А в пошаговом режиме
2. Знакомство с форматом команд и этапами их выполнения
3. Изучение команд пересылки данных и арифметических команд
4. Исследование простейших программ
Теоретическая часть
С помощью программного счетчика микропроцессора на шину адреса системы выдается адрес выполняемой команды. Считанная из памяти по этому адресу команда (ее код) поступает на шину данных, затем считывается микропроцессором, декодируется и выполняется. В программном счетчике (счетчике команд) автоматически формируется адрес следующей команды. После окончания исполнения текущей команды на шину адреса поступает адрес очередной команды, и процедура повторяется вновь.
Под управлением команд пересылки микропроцессор может выполнять обмен между внутренними регистрами процессора, между внутренними регистрами и памятью микро-ЭВМ.
|
|
Список команд пересылки микропроцессора КР580ИК80А включает следующие команды (табл. 1).
Таблица 1-Команды пересылки данных
| ,Формат байт | Число тактов | ||||||
Мнемоника | Описание | Флаги | ||||||
S Z AC P C | ||||||||
| ||||||||
| ||||||||
| ||||||||
MOV r1, r2 | Пересылка данных из реги- | 1 | 5 | ----- | ||||
стра r2 в регистр r1: r1←r2 | ||||||||
MOV M, r | Пересылка данных из реги- | 1 | 7 | ----- | ||||
стра r в регистр М: M ← r | ||||||||
MOV r, M | Пересылка данных из реги- | 1 | 7 | ----- | ||||
стра М в регистр r: r ← M | ||||||||
MVI r, Д8 | Запись в регистр r одного | 2 | 7 | ----- | ||||
байта данных: r←Д8 | ||||||||
MVI M, Д8 | Запись в регистр М одного | 2 | 10 | ----- | ||||
байта данных: М←Д8 | ||||||||
В аккумулятор загружается | ||||||||
LDA A16 | число из адреса А16: | 3 | 13 | ----- | ||||
А←(А16) | ||||||||
Выгрузка | содержимого | ак- | ||||||
STA A16 | кумулятора по указанному | 3 | 13 | ----- | ||||
адресу: (А16)←А |
| |||||||
Загрузка в аккумулятор чис- | |||||||||||||||||||||
ла из ячейки памяти с адре- | |||||||||||||||||||||
LDAX rp | сом, указанным в регистро- | 1 | 7 | ----- | |||||||||||||||||
вой паре (B-C или D-E): |
| ||||||||||||||||||||
| А←(rp) |
| |||||||||||||||||||
Выгрузка | из аккумулятора | ||||||||||||||||||||
STAX rp | по адресу в регистровой па- | 1 | 7 | ----- | |||||||||||||||||
ре (B-С или D-Е): (rp)←A
| |||||||||||||||||||||
Непосредственная запись в | |||||||||||||||||||||
LXI rp, D16 | регистровую пару (B, D, H, | 3 | 10 | ----- | |||||||||||||||||
SP) двухбайтного числа: |
| ||||||||||||||||||||
(rp)←D16 |
| ||||||||||||||||||||
Загрузка пары регистров H- | |||||||||||||||||||||
L из двух соседних ячеек | |||||||||||||||||||||
LHLD А16 | памяти, начиная с адреса | 3 | 10 | ----- | |||||||||||||||||
указанного в команде: |
| ||||||||||||||||||||
L←(A16); H←(A16+1) |
| ||||||||||||||||||||
Обратно | предыдущей |
| |||||||||||||||||||
SHLD A16 | команде |
|
| 3 | 16 | ----- | |||||||||||||||
(A16)←L; (A16+1)←H |
| ||||||||||||||||||||
Обмен данными между ре- | |||||||||||||||||||||
XCHG | гистровыми парами H-L и | 1 | 4 | ----- | |||||||||||||||||
D-E: H↔D, L↔E |
| ||||||||||||||||||||
Обмен между регистровой | |||||||||||||||||||||
парой H-L и двумя верхни- | |||||||||||||||||||||
XTHL | ми ячейками стека, при этом | 1 | 18 | ----- | |||||||||||||||||
содержимое указателя стека | |||||||||||||||||||||
не меняется: |
| ||||||||||||||||||||
L↔(SP); H↔(SP+1) |
| ||||||||||||||||||||
Занесение | содержимого | па- | |||||||||||||||||||
SPHL | ры регистров H-L в указа- | 1 | 5 | ----- | |||||||||||||||||
тель стека: SP←HL |
| ||||||||||||||||||||
Занесение в стек содержи- | |||||||||||||||||||||
мого пары регистров (B, D, | |||||||||||||||||||||
PUSH rp | H). Содержимое указателя | 1 | 11 | ----- | |||||||||||||||||
стека уменьшается на 2. |
| ||||||||||||||||||||
(SP) ←мл. r; (SP+1) ←ст. r. | |||||||||||||||||||||
Извлечение | пары | чисел в | |||||||||||||||||||
регистровую | пару | из стека | |||||||||||||||||||
POP rp | (обратно предыдущей ко- | 1 | 10 | ----- | |||||||||||||||||
манде): |
|
| |||||||||||||||||||
мл.r←(SP); ст.r←(SP+1); | |||||||||||||||||||||
SP=SP+2 |
| ||||||||||||||||||||
Копирование в стек аккуму- | |||||||||||||||||||||
PUSH PSW | лятора и регистра призна- | 1 | 11 | ----- | |||||||||||||||||
ков: (SP) ←F; (SP+1) ←A | |||||||||||||||||||||
Выдача из стека данных в | |||||||||||||||||||||
POP PSW | аккумулятор и регистр при- | 1 | 10 | +++++ | |||||||||||||||||
знаков |
|
| |||||||||||||||||||
F←(SP); A←(SP+1) | |||||||||||||||||||||
Ввод в аккумулятор данных | ||||||||
из внешнего | устройства, | |||||||
IN port | подключенного к указанно- | 2 | 10 | ----- | ||||
му в команде порту: | ||||||||
A←(port) | ||||||||
Выгрузка 1-го байта из ак- | ||||||||
OUT port | кумулятора | в | соответст- | 2 | 10 | ----- | ||
вующий порт: (port)←A | ||||||||
В списке команд пересылки под r, r1 и r2 понимается содержимое регистров процессора A, B, C, D, E, H, L. Под M – содержимое ячейки памяти (ОЗУ или ПЗУ), адрес которой предварительно записан в регистровой паре HL. Под D8 – байт данных, непосредственно содержащийся в команде. Под D16 – двухбайтовое число, непосредственно содержащееся в команде. Под (rp) – содержимое регистровых пар. Под А16 – двухбайтовый адрес, непосредственно записанный в команде. Под (А16) – содержимое ячейки памяти (ОЗУ или ПЗУ), адрес которой указан в команде.
Практическая часть
Часть 1
Составить простейшую программу для вычисления формулы:
(Х – 200 b + Y) ® Z,
где «X», «Y» – содержимое ячеек памяти с адресами «0B00 h» и «0B01 h» соответственно, где располагаются первый и второй операнд; «200 b» – заданная константа в десятичной системе исчисления; «Z» – указывает на местоположение результата, а именно на ячейку памяти с адресом «0В02 h».
В соответствии с формулой требуется загрузить из адреса «0В00 h» число «X», вычесть из него константу 200 и сложить с числом «Y», загруженным из ячейки памяти «0В01h». Результат необходимо сохранить в памяти по адресу «0В02 h».
|
|
Программа представлена в виде таблицы 1, при этом условно считается за начало расположения программного кода адрес «0800 h».
Весь процесс разбивается на циклы, обозначаемые M1, M2, M3, M4, M5. Выполнение каждой команды занимает от одного до пяти машинных циклов. Машинный цикл требуется всякий раз, когда микропроцессор обращается к памяти или устройствам ввода-вывода (портам).Если команда занимает несколько байтов, то для выбора каждого байта требуется по одному машинному циклу.
Таблица 1
Программа 1.1
№ этапа | Адрес, h | Мнемокод | Число байт в команде | Машинный код, h | Комментарий |
1 | 0800 | LDA 0B00 h | 3 | 3A | Назначение команды LDA: содержимое ЯП, адрес которой указан во втором и третьем байтах команды загрузить в регистр «А». |
0801 | 00 | Младший байт адреса. | |||
0802 | 0B | Старший байт адреса. | |||
2 | 0803 | SUI C8 h | 2 | D6 | Назначение команды SUI: из содержимого «А» отнимается второй байт команды. |
0804 | C8 | Второй байт команды (операнд) | |||
3 | 0805 | LXI H,0B01 h | 3 | 21 | Назначение команды LXI: Непосредственная загрузка пары регистров H»,«L». |
0806 | 01 | Младший байт адреса, который пересылается в регистр «L». | |||
0807 | 0B | Старший байт адреса, который пересылается в регистр «H». | |||
4 | 0808 | ADD M | 1 | 86 | Назначение команды ADD: содержимое ЯП, адрес которой записан в регистрах «H»,»L» складывается с содержимым «А»; результат в «А». |
5 | 0809 | STA 0B02 h | 3 | 32 | Назначение команды STA: содержимое «А» пересылается в ЯП, адрес которой указан во втором и третьем байтах команды. |
080A | 02 | Младший байт адреса. | |||
080B | 0B | Старший байт адреса. | |||
- | 080C | HLT | 1 | 76 | Назначение команды HLT: Останов. |
Команда «LDA 0B00h» (см. выше) занимает три ячейки памяти «0800h», «0801h», «0802h», в которых хранятся коды «3Аh», «00h», «0Вh».
Выполнение команды начинается, когда на программном счетчике имеется число «0800h». В первом машинном цикле по адресу «0800h» выбирается первый байт команды «3А», передается в микропроцессор, где производится дешифрация этого кода. Во втором машинном цикле из следующей ячейки «0801h» выбирается число «00h» и записывается в регистр «L». В третьем машинном цикле из ячейки «0802h» выбирается число «0Вh» и записывается в регистр «Н». Таким образом, в паре регистров «Н», «L» сформировался адрес ЯП, содержимое которой по команде «3Аh» необходимо передать в аккумулятор. Поэтому в четвертом машинном цикле число из ячейки «0В00h» передается в аккумулятор. На этом выполнение команды заканчивается и к содержимому счетчика прибавляется единица, то есть микропроцессор переходит к выполнению следующей команды. Первым машинным циклом при извлечении любой команды является цикл M1 – выбор первого байта команды. Самые длинные по времени исполнения команды выполняются в пять циклов.
|
|
Порядок выполнения работы:
Задание 1. Запись в память микропроцессора простейшей программы.
Занести программу 1.1 (таблица 1) в память микропроцессорной системы. Записать по адресам «0В00h» и «0В01h» числа по своему варианту, согласно таблице 2 (номер варианта выдается преподавателем)
Таблица 2 -Варианты чисел для программы 1.1
Адреса ячеек, h | Значения чисел по вариантам, h | ||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
0B00 | 05 | 0E | 5A | 12 | B5 | B0 | 25 | A0 | EE | 34 | 55 | D5 | 12 | 6F | 1D |
0B01 | 06 | 0F | 6A | 11 | B6 | A0 | 26 | 99 | FF | 35 | 54 | D6 | 13 | 7F | 1E |