Лабораторная работа №3. Организация условных и безусловных переходов в программах и маскирование данных.
Цель работы: изучение программных способов организации условных и безусловных переходов и маскирования данных.
Перечень команд логических операций для Intel 8080 (МП КР580ВМ80) представлен в виде таблицы (Табл.1.).
Табл.1. Перечень команд логических операций для Intel 8080 (МП КР580ВМ80).
ANA r |
1010 0sss |
1 |
1 |
4 |
(A)&(r) ® A |
Поразрядная конъюнкция с РОН |
ANA M |
1010 0110 |
1 |
2 |
7 |
(A)&(M) ® A |
Поразрядная конъюнкция с памятью, косвенно адресуемой по (HL) |
ANI b2 |
1110 0110 |
2 |
2 |
7 |
(A)&b2 ® A |
Поразрядная конъюнкция с непосредственным операндом |
ORA r |
1011 0sss |
1 |
1 |
4 |
(A)v(r) ® A |
Поразрядная дизъюнкция с РОН |
ORA M |
1011 0110 |
1 |
2 |
7 |
(A)v(M) ® A |
Поразрядная дизъюнкция с памятью, косвенно адресуемой по (HL) |
ORI b2 |
1111 0110 |
2 |
2 |
7 |
(A)vb2 ® A |
Поразрядная дизъюнкция с непосредственным операндом |
XRA r |
1010 1sss |
1 |
1 |
4 |
(A)Å(r) ® A |
Поразрядно сложить по модулю 2 с РОН |
XRA M |
1010 1110 |
1 |
2 |
7 |
(A)Å(M) ® A |
Поразрядно сложить по модулю 2 с памятью, косвенно-адресуемой по (HL) |
XRI b2 |
1110 1110 |
2 |
2 |
7 |
(A)Åb2 ® A |
Поразрядно сложить по модулю 2 с непосредственным операндом |
Перечень команд условных переходов для Intel 8080 (МП КР580ВМ80) представлен в виде таблицы (Табл.2.).
Табл.2. Перечень команд условных переходов для Intel 8080 (МП КР580ВМ80).
JNZ b3b2 |
1100 0010 |
3 |
3 |
10 |
Если Z = 0, то b3b2 ® PC |
Перейти, если результат ненулевой |
JZ b3b2 |
1100 1010 |
3 |
3 |
10 |
Если Z = 1, то b3b2 ® PC |
Перейти, если результат нулевой |
JNC b3b2 |
1101 0010 |
3 |
3 |
10 |
Если C = 0, то b3b2 ® PC |
Перейти, если не было переноса/заема |
JPO b3b2 |
1110 0010 |
3 |
3 |
10 |
Если P = 0, то b3b2 ® PC |
Перейти, если число единичных бит в результате нечетное |
JPE b3b2 |
1110 1010 |
3 |
3 |
10 |
Если P = 1, то b3b2 ® PC |
Перейти, если число единичных бит в результате четное |
JC b3b2 |
1101 1010 |
3 |
3 |
10 |
Если C = 1, то b3b2 ® PC |
Перейти, если был переноса/заема |
JP b3b2 |
1111 0010 |
3 |
3 |
10 |
Если S = 0, то b3b2 ® PC |
Перейти, если результат положительный |
JM b3b2 |
1111 1010 |
3 |
3 |
10 |
Если S = 1, то b3b2 ® PC |
Перейти, если результат отрицательный |
1. Исследование программы маскирования отдельных разрядов числа.
Листинг программы приведен ниже:
Адрес |
Код |
Мнемокод |
Примечание |
8400h 8401h 8402h 8403h 8404h 8405h 8406h 8407h 8408h |
21h 00h 86h 7Eh E6h 08h 23h 77h E7h |
LXI 00h 86h MOV A,M ANI 08h INX H MOV M,A RST 4 |
Запись в регистровую пару HL числа 8600h Получить число из [HL] Поразрядная конъюнкция аккумулятора и числа 08h Инкремент пары HL Записать число в [HL] Конец и вызов монитора. |
В качестве 1-ого тестового значения по адресу 8600h было помещено число FFh. Результатом выполнения программы стало число 08h, расположенное по адресу 8601h.
В качестве 2-ого тестового значения по адресу 8600h было помещено число F7h. Результатом выполнения программы стало число 00h, расположенное по адресу 8601h.
Заменяя команду ANI 08h, расположенную по адресу 8404h на команды, представленные в Табл.3., получен следующий результат:
Табл.3. Результат выполнения программы в
зависимости от команды по адресу 8404h.
Содержимое ячейки 8600h |
Команда по адресу 8404h |
Содержимое ячейки 8601h |
FFh F7h FFh F7h |
ORI 08h ORI 08h XRI 08h XRI 08h |
FFh FFh F7h FFh |
При выполнении программы в пошаговом режиме были отслежены изменения содержимого программно-доступных регистров A, H, L и ячейки памяти 8601h.
2. Исследование программы проверки содержимого третьего разряда числа, записанного в ячейке памяти 8600h.
Листинг программы приведен ниже:
Адрес |
Код |
Мнемокод |
Примечание |
8400h 8401h 8402h 8403h 8404h 8405h 8406h 8407h 8408h 8409h 840Ah 840Bh 840Ch 840Dh 840Eh 840Fh 8410h 8411h 8412h 8413h 8414h |
21h 00h 86h 7Eh E6h 08h C2h 0Fh 84h 23h 36h 0Fh C3h 14h 84h 3Eh 33h 32h 15h 84h E7h |
LXI 00h 86h MOV A,M ANI 08h JNZ 0Fh 84h INX H MVI M 0Fh JMP 14h 84h MVI A 33h STA 15h 84h RST 4 |
Запись в регистровую пару HL числа 8600h Получить число из [HL] Поразрядная конъюнкция аккумулятора и числа 08h Переход на адрес 850Fh, если результат не 0. Инкремент пары HL Записать число 0Fh в память по [HL] Безусловный переход на адрес 8414h Запись числа 33h в аккумулятор Запись числа из аккумулятора в ячейку с адресом 8415h Конец и вызов монитора. |
В качестве 1-ого тестового значения по адресу 8600h было помещено число FFh. Результатом выполнения программы стало число 33h, расположенное по адресу 8415h. В ячейку памяти с адресом 8601h запись не производилась.
В качестве 2-ого тестового значения по адресу 8600h было помещено число F7h. Результатом выполнения программы стало число 0Fh, расположенное по адресу 8601h. В ячейку памяти с адресом 8415h запись не производилась.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.