Команды записи в стек, восстановления и обмена стеком

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.

Наши рекомендации