DAA – десятичная коррекция.
В результате выполнения программы в памяти по адресу L = 200 записан результат сложения: 110 + 101 = 211 (01 001 000 + 01 000 001 = 10 001 001; 48 + 41 = 89).
Программа 3.3: вычитание двоично-десятичных чисел
В результате выполнения программы будем иметь:
10 010 110
+
00 010 111
01 111 001, т.е. 962/10 – 172/10 = 792/10
Адрес |
Код команды |
Мнемоника команды |
Комментарии |
L = 000 001 002 |
041 200 000 |
LXI H B2 B3 |
|
003 004 |
006 10 010 110 |
MVI B B2 |
|
005 006 |
016 00 010 111 |
MVI C B2 |
|
007 010 |
076 232 |
MVI A B2 |
записываем в аккумулятор 100 |
011 |
221 |
SUB C |
ищем дополнительный код |
012 |
200 |
ADD B |
|
013 |
047 |
DAA |
десятичная коррекция |
014 |
167 |
MOV M, A |
|
015 |
166 |
HLT |
Программа 3.4: сложение двух 16-разрядных двоичных чисел
Адрес |
Код команды |
Мнемоника команды |
Комментарии |
L = 000 001 002 |
001 11 010 001 00 001 000 |
LXI B B2 B3 |
непосредственная загрузка пары регистров |
003 004 005 |
021 01 011 100 00 000 000 |
LXI D B2 B3 |
|
006 |
171 |
MOV A, C |
младшие биты: пересылка данных из RC в Акк |
007 |
203 |
ADD E |
сложение содержимого регистра и Акк |
010 |
157 |
MOV L, A |
пересылка из Акк в RL |
011 |
170 |
MOV A, B |
старшие биты: пересылка данных из RB в Акк |
012 |
212 |
ADC D |
сложение Акк с RD с переносом |
013 |
147 |
MOV H, A |
пересылка из Акк в RН |
014 015 016 |
042 200 000 |
SHLD B2 B3 |
прямое запоминание регистровой пары |
017 |
166 |
HLT |
останов |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.