Команды записи в стек, восстановления и обмена стеком
PUSH B – запись в стек содержимого рег. пары BC;
PUSH D – запись в стек содержимого рег. пары DE;
PUSH H – запись в стек содержимого рег. пары HL;
PUSH PSW – запись в стек содержимого рег. пары F, A;
POP B – восстановление содержимого пары рег. BC;
POP D – восстановление содержимого пары рег. DE;
POP H – восстановление содержимого пары рег. HL;
POP PSW – восстановление содержимого пары рег. F, A;
XTHL – обмен содержимого верх. эл. стека и пары рег. HL.
2.1 Записать в память, начиная с адреса 0800Н, коды программы сохранения содержимого регистров: BC, DE, HL, F, A, которая указана в таблице 73.
Таблица 73 – Контрольная программа сохранения содержимого пар регистров
Адрес | Команда | Операнд | Машинный код | Комментарий |
LXI | SP,0B20H | 31 20 0В | ; Загр. SP=0B20H, нижняя ; граница стека | |
PUSH | B | C5 | ; ЗП сод. пары рег. BC в стек | |
PUSH | D | D5 | ; ЗП сод. пары рег. DE в стек | |
PUSH | H | E5 | ; ЗП сод. пары рег. HL в стек | |
PUSH | PSW | F5 | ; ЗП сод. пары рег. F, A в ; стек | |
HLT | ;останов |
2.2 Выполнить программу:
СТ0800 0807ВП.
Проверить содержимое пар регистров и заполнить таблицу 74. Результаты записать в рабочую тетрадь.
Таблица 74 – Результаты выполнения контрольной программы сохранения
содержимого пар регистров
(BC) | (DE) | (HL) | (PSW) | (SP) |
2.3 Изменить содержимое регистров микропроцессора:
B, C, D, E, H, L, A, F.
2.4 Записать в память программу восстановления содержимого пар регистров, которая указана в таблице 75.
Таблица 75 – Контрольная программа восстановления содержимого пар регистров
Адрес | Команда | Операнд | Машинный код | Комментарий |
POP | PSW | F1 | ; Восст. сод. пары рег. F, A | |
POP | H | E1 | ; Восст. сод. пары рег. HL | |
POP | D | D1 | ; Восст. сод. пары рег. DE | |
POP | B | C1 | ; Восст. сод. пары рег. BC | |
HLT | ; Останов |
2.5 Выполнить программу:
СТ0810 0814ВП.
Проверить содержимое пар регистров и заполнить таблицу 76.
Таблица 76 – Результаты выполнения контрольной программы восстановления содержимого пар регистров
(BC) | (DE) | (HL) | (PSW) | (SP) |
Содержимое регистров B, C, D, E, H, L, F, A должно совпадать с соответствующими значениями таблицы 74. Содержимое указателя стека (SP) = 0B20H.
2.6 Записать в память программу пересылки данных из одного массива в другой (таблица 77), используя для адресации рег. пару HL и команду обмена стеком XTHL.
2.7 Выполнить программу:
СТ0820 0837ВП.
Таблица 77 – Контрольная программа пересылки данных из одного массива памяти в другой
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
LXI | H, 0900H | 21 00 09 | ; Загр. HL=0900H, адр. 2 ; масс. | ||
LXI | SP, 0B00H | 31 00 0B | ; Загр. SP=0B00H, нижняя ; граница стека | ||
PUSH | H | E5 | ; ЗП в стек (HL)=0900H, ; адр. 2 масс. | ||
LXI | H, 0100H | 21 00 01 | ; Загр. HL=0100H адр. 1 ; масс. | ||
082A | MVI | C, 80H | 0E 80 | ; Загр. C=80H – длина ; массива | |
082C | М1 | MOV | A, M | 7E | ; Перес. A ← (M), элем. 1 ; масс. |
082D | INX | H | ; HL=(HL)+1, увел. на 1 адр. ; 1 массива | ||
082E | XTHL | E3 | ; Обмен сод. стека и HL, ; (HL) – адр. 2 масс., ; [(SP)] – адр. 1 масс. | ||
082F | MOV | M, A | ; ЗП M ← (A) эл. во 2 масс. | ||
INX | H | ; HL=(HL)+1, адр. 2 масс.+1 | |||
XTHL | E3 | ; Обмен сод. стека и HL, ; (HL) – адр. 1 масс., [(SP)] ; адр. 2 масс. | |||
DCR | C | 0D | ; С=(С)-1, уменьш. длину ; масс. | ||
JNZ | М1 | C2 2C 08 | ; Продолжить, если (Iz)=0 | ||
POP | D | D1 | ; Очистка стека | ||
HLT | ;останов |
Подсчитать контрольную сумму (КС) исходного массива (0100Н…017FH) и КС 2 массива (0900H…097FH), они должны совпадать (см. таблицу 78). Для подсчета КС использовать команду ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР.
Таблица 78 – Результаты выполнения контрольной программы пересылки данных из одного массива в другой
КС массива (0100Н…017FH) | КС массива (0900Н…097FH) |
Задание 1:
Написать и выполнить программу обмена регистровыми парами, используя команды записи в стек PUSH ri и восстановления POP ri, следующим образом:
BC → DE;
DE → HL;
HL → BC.
Начальный адрес программы 0А00Н, нижняя граница стека 0В10Н. Исходные данные для загрузки регистровых пар указаны в таблице 79.
Таблица 79 – Исходные данные и результаты выполнения проверочной программы записи в стек и восстановления
Вариант | |||||
(BC) – исх. | 0B0C | ||||
(DE) – исх. | 0D0E | 191A | |||
(HL) – исх. | 090A | 0F10 | 1B1C | ||
(DE) – рез. | |||||
(HL) – рез. | |||||
(BC) – рез. |
Проверочную программу записать в таблицу, аналогичную по форме таблице 77. Выполнить программу, результаты записать в таблицу 79.