Вариант 7. Выполнить операцию инвертирования чисел FA и 21, хранящиеся по адресам 0F11 и 0C22. Над полученными результатами выполнить операцию логического сложения и конечный результат записать по адресу 0F22. Остановить программу.
Задание 2
Вариант 7. Изменить содержимое 3-го разряда данного, хранящегося в ячейке памяти 01A6. При получении результата с четным количеством единиц, записать его в ячейку памяти с адресом 0CC0, в противном случае результат записать в ячейку памяти 0CD0. Остановить программу.
Решение задания 1 с использованием прямой адресации.
При разработке программ все данные и адреса в командах записываются в шестнадцатеричной системе счисления.
Таблица 1. Программа, записанная в мнемокодах языка Ассемблера.
Мнемокод
Комментарий
LXI H, 0F11
Занесение содержимого второго и третьего байта команды (11 и 0F) в регистровую пару HL
MVI C, FA
Записать в регистр C целочисленную константу FA
MOV M, C
Пересылка данных из регистра C в ячейку памяти, адрес которой указан в регистровой паре HL
LXI H, 0C22
Занесение содержимого второго и третьего байта команды (22 и 0C) в регистровую пару HL
MVI C, 21
Записать в регистр C целочисленную константу 21
MOV M, C
Пересылка данных из регистра C в ячейку памяти, адрес которой указан в регистровой паре HL
LDA 0F11
Запись в аккумулятор содержимого ячейки памяти, адрес которой записан в b2, b3
CMA
Инвертировать содержимое аккумулятора (логическая операция НЕ)
MOV B, A
Пересылка данных из регистра Aв регистр B
LDA 0C22
Запись в аккумулятор содержимого ячейки памяти, адрес которой записан в b2, b3
CMA
Инвертировать содержимое аккумулятора (логическая операция НЕ)
ORA B
Поразрядное ИЛИ над содержимым аккумулятора и регистра B
STA 0F22
Записать содержимое аккумулятора в ячейку памяти 0F22
HLT
Остановить программу
Для записи программы в память микроЭВМ необходимо перевести мнемокоды команд в машинные коды. Так как команды в программе могут быть одно-, двух- или трехбайтовые, следовательно, они должны занимать соответственно одну, две или три ячейки памяти. Пользуясь таблицей соответствия мнемокодов и машинных кодов, запишем программу в машинных кодах с указанием адресов ячеек памяти каждого байта программы (табл. 2).
Таблица 2. Программа, записанная в машинных кодах с размещением по адресам памяти.
Адрес
Число
Комментарий
Код команды LXI H, 0F11
Второй байт команды
0F
Третий байт команды
0E
Код команды MVI C, FA
FA
Целочисленная константа FA
Код команды MOV M, C
Код команды LXI H, 0C22
Второй байт команды
0C
Третий байт команды
0E
Код команды MVI C, 21
000A
Целочисленная константа 21
000B
Код команды MOV M, C
000C
3A
Код команды LDA 0F11
000D
Второй байт команды
000E
0F
Третий байт команды
000F
2F
Код команды CMA
Код команды MOV B, A
3A
Код команды LDA 0C22
Второй байт команды
0C
Третий байт команды
2F
Код команды CMA
B0
Код команды ORA B
Код команды STA 0F22
Младший байт адреса
0F
Старший байт адреса
Код команды HLT
Предварительную запись программ удобно проводить в более компактной форме. В программе указывается начальный адрес каждой команды, при этом в зависимости от длины, команды в памяти будут занимать от одной до трех последовательных ячеек. При такой записи в левом столбце указываются адреса команд в программе (табл. 3).
Таблица 3. Программа, записанная в общем виде.
Адрес
Машинный код
Метка
Мнемокод
Комментарий
21 11 0F
LXI H, 0F11
Занесение содержимого второго и третьего байта команды (11и 0F) в регистровую пару HL
0E FA
MVI C, FA
Записать в регистр C целочисленную константу FA
MOV M, C
Пересылка данных из регистра C в ячейку памяти, адрес которой указан в регистровой паре HL
21 22 0C
LXI H, 0C22
Занесение содержимого второго и третьего байта команды (22 и 0C) в регистровую пару HL
0E 21
MVI C, 21
Записать в регистр C целочисленную константу 21
000B
MOV M, C
Пересылка данных из регистра C в ячейку памяти, адрес которой указан в регистровой паре HL
000C
3A 11 0F
LDA 0F11
Запись в аккумулятор содержимого ячейки памяти, адрес которой записан в b2 , b3 (11 и 0F)
000F
2F
CMA
Инвертировать содержимое аккумулятора
MOV B, A
Пересылка данных из регистра A в регистр B
3A 22 0C
LDA 0C22
Запись в аккумулятор содержимого ячейки памяти, адрес которой записан в b2 , b3 (22 и 0C)
2F
CMA
Инвертировать содержимое аккумулятора
B0
ORA B
Поразрядное ИЛИ над содержимым аккумулятора и регистром B
32 22 0F
*
STA 0F22
Записать содержимое аккумулятора в ячейку памяти 0F22