Организация условных и безусловных переходов в программах и маскирование данных

Страницы работы

Содержание работы

Лабораторная работа №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 запись не производилась.

Похожие материалы

Информация о работе