2. Слагаемые: X=031 и Y=030. 0318=1910=000110012, 0308=1810=000110002
В данном случае понадобилась десятичная коррекция, так как при сложении произошел перенос из младшего полубайта. Коррекция осуществляется путём прибавления к этому полубайту 6. Результат 001101112= 678=3710 , что соответствует результату, полученному при выполнении программы.
3. Слагаемые: X=062 и Y=124. 0628=3210=001100102, 1248=5410=010101002
В данном случае коррекция не потребуется. Результат 100001102= 2068=8610 , что соответствует результату, полученному при выполнении программы.
Вывод: Десятичная коррекция применяется при сложении чисел в двоично-десятичном формате, когда происходит перенос из полубайта соответствующего одной десятичной цифре или значение полубайта превышает 9, и заключается в том, что к полубайту, отвечающему одному из двух условий, прибавляется 6.
Программа 3.3
Программа реализует вычитание двоично-десятичных чисел.
Адрес |
Команда |
Мнемоника |
Комментарий |
000 |
041 |
LXI H |
Загрузка адреса в память |
001 |
200 |
B2 |
младший байт адреса |
002 |
000 |
B3 |
старший байт адреса |
003 |
006 |
MVI B |
Загрузка вычитаемого в регистр B |
004 |
031 |
B2 |
|
005 |
076 |
MVI A |
Загрузка 9910 в аккумулятор для получения |
006 |
231 |
B2 |
дополнительного кода |
007 |
220 |
SUB B |
N=99-N0, N0 – уменьшаемое |
010 |
074 |
INR A |
Доп. код = N+1 |
011 |
107 |
MOV B,A |
Запись доп. кода 19 в регистр B |
012 |
076 |
MVI A |
Загрузка уменьшаемого в аккумулятор |
013 |
066 |
B2 |
|
014 |
200 |
ADD B |
Сложение в доп. кодах |
015 |
047 |
DAA |
Десятичная коррекция |
016 |
167 |
MOV M,A |
Запись результата |
017 |
166 |
HLT |
Останов |
Результат вычитания 19 из 36 – 17, что совпадает с результатом программы.
Программа 3.4
Программа реализует сложение двух 16-разрядных двоичных чисел.
Адрес |
Команда |
Мнемоника |
Комментарии |
000 |
001 |
LXI B |
Загрузка регистровой пары B |
001 |
377 |
B2 |
B2 -> (С) |
002 |
000 |
B3 |
B3 -> (B) |
003 |
021 |
LXI D |
Загрузка регистровой пары D |
004 |
001 |
B2 |
B2 -> (E) |
005 |
001 |
B3 |
B3 -> (D) |
006 |
173 |
MOV A, E |
Копирование значение E в А |
007 |
201 |
ADD C |
Сложение А с С, с учётом переноса |
010 |
062 |
STA |
Запоминание А (прямое) |
011 |
200 |
B2 |
Мл. байт адреса |
012 |
000 |
B3 |
Ст. байт адреса |
013 |
172 |
MOV A, D |
Копирование значения D в A |
014 |
210 |
ADC B |
Сложение с переносом содержимого А и B |
015 |
062 |
STA |
Запоминание А (прямое) |
016 |
201 |
B2 |
Мл. байт адреса |
017 |
000 |
B3 |
Ст. байт адреса |
020 |
166 |
HLT |
Останов |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.