B=3
A=1
Задание 7.
Составить программу вычисления следующего выражения:
N=(a+b)-(c*d)
Числа однобайтные. При составлении программы использовать команду обращения к подпрограммам, а в качестве подпрограммы – программу из задания 5.
Адрес ОЗУ |
Команда |
Параметры команды |
HEX |
Описание |
0000 0001 |
MVI |
A,E2 |
3E E2 |
;в регистр A заносится шестнадцатеричное значение E2 |
0002 0003 |
MVI |
B,E4 |
06 E4 |
;в регистр B заносится шестнадцатеричное значение E4 |
0004 |
ADD |
B |
80 |
;прибавляет к содержимому регистра A содержимое регистра B |
0005 0006 0007 |
CC |
adr |
DC 20 00 |
;переход программы по адресу, если произошло переполнение регистра, т.е. если флаг ;C принял значение 1. Адрес перехода устанавливается путем конкатенации значений ;второго и третьего адреса команды |
0008 |
MOV |
H,C |
61 |
;поместить в регистр H значение регистра C |
0009 |
MOV |
L,A |
6F |
;поместить в регистр L значение регистра A |
000A 000B 000C |
CALL |
adr |
CD 00 30 |
;безусловный переход. Адрес следующей команды вычисляется путем конкатенации ;второго и третьего байта команды |
000D |
MOV |
C,B |
48 |
;поместить в регистр C значение регистра B |
000E |
MOV |
D,A |
57 |
;поместить в регистр D значение регистра A |
000F |
MOV |
A,L |
7D |
;поместить в регистр A значение регистра L |
0010 |
SUB |
D |
92 |
;вычесть из регистра A значение регистра D. Результат записывается в регистр A |
0011 0012 0013 |
CM |
adr |
FC 60 00 |
;переход программы по адресу, при отрицательном значении регистра, т.е. если флаг S ;принял значение 1. Адрес перехода устанавливается путем конкатенации второго и ;третьего байта данной команды |
0014 |
MOV |
L,A |
6F |
;поместить в регистр L значение регистра A |
0015 |
MOV |
A,H |
7C |
;поместить в регистр A значение регистра H |
0016 |
SUB |
C |
91 |
;вычесть из регистра A значение регистра D. Результат записывается в регистр A |
0017 |
MOV |
H,A |
67 |
;поместить в регистр H значение регистра A |
0018 |
HLD |
76 |
;завершение работы программы |
|
0020 |
INR |
C |
0C |
;увеличение значения регистра C на единицу |
0021 |
RET |
C9 |
;завершение работы процедуры, вызванной командой перехода |
|
0030 0031 |
MVI |
A,0 |
3E 00 |
;в регистр A заносится шестнадцатеричное значение 00 |
0032 0033 |
MVI |
C,13 |
0E 13 |
;в регистр C заносится шестнадцатеричное значение 13 |
0034 0035 |
MVI |
D,12 |
16 12 |
;в регистр D заносится шестнадцатеричное значение 12 |
0036 0037 |
MVI |
B,0 |
06 00 |
;в регистр B заносится шестнадцатеричное значение 00 |
0038 |
ADD |
D |
82 |
;прибавляет к содержимому регистра A содержимое регистра D |
0039 003A 003B |
CC |
adr |
DC 50 00 |
;переход программы по адресу, если произошло переполнение регистра, т.е. если флаг ;C принял значение 1. Адрес перехода устанавливается путем конкатенации значений ;второго и третьего адреса команды |
003C |
DCR |
C |
0D |
;уменьшить значение регистра C на единицу |
003D 003E 003F |
CNZ |
adr |
C4 38 00 |
;вызов по ненулевому результату, т.е. осуществляется переход, если флаг Z принимает ;значение 1. Адрес перехода устанавливается путем конкатенации второго и третьего ;байта данной команды |
0040 |
RET |
C9 |
;завершение работы процедуры, вызванной командой перехода |
|
0050 |
INR |
B |
04 |
;увеличение значения регистра B |
0051 |
RET |
C9 |
;завершение работы процедуры, вызванной командой перехода |
|
0060 |
DCR |
H |
25 |
;уменьшение значения регистра H |
0061 |
RET |
C9 |
;завершение работы процедуры, вызванной командой перехода |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.