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).
Ссылка на скачивание - внизу страницы.