Адрес |
Команда |
Мнемоника |
Комментарии |
L=000 |
041 |
LXI H |
; Загрузка начального адреса в указатель памяти |
001 |
200 |
В2 |
; мл. байт адреса |
002 |
000 |
В3 |
; ст. байт адреса |
003 |
076 |
MVI A |
; Непосредственная загрузка A одним из слагаемых. |
004 |
010 |
В2 |
; Байт данных слагаемого |
005 |
206 |
ADD M |
; Сложение содержимого A c содержимым ячейки памяти |
06 |
167 |
MOV M,A |
; Запоминание значения суммы в ячейке памяти |
007 |
166 |
HLT |
; Останов |
До первого выполнения программы в ячейку памяти по адресу 000200 было записано значение 030. При первом выполнение программы в память по адресу 000200 будет записано значение 040, что является результатом суммирования исходного значения аккумулятора и исходного значения ячейки памяти.
В результате каждого следующего выполнения содержимое ячейки памяти будет увеличиваться на 010.
Программа 3.1
Программа реализует вычитание двух чисел, одно из которых расположено в регистре блока РОН.
Адрес |
Команда |
Мнемоника |
Комментарии |
000 |
041 |
LXI H |
;Загрузка начального адреса памяти |
001 |
200 |
B2 |
;мл. байт адреса |
002 |
000 |
B3 |
;ст. байт адреса |
003 |
006 |
MVI B |
;Загрузка регистра B |
004 |
001 |
B2 |
;Байт |
005 |
076 |
MVI A |
;Загрузка аккумулятора |
006 |
140 |
B2 |
;Байт |
007 |
220 |
SUB B |
;Вычитание значения регистра B из А |
010 |
167 |
MOV M, A |
;запись результата |
011 |
166 |
HLT |
;Останов |
По адресу 000200 предварительно записано число 010.
Результат выполнения программы: по адресу 000200 записана разность чисел 140 и 010 – 130.
Программа 3.2
Программа реализует сложение двоично-десятичных чисел.
Адрес |
Команда |
Мнемоника |
Комментарий |
000 |
041 |
LXI H |
Загрузка начального адреса в указатель памяти |
001 |
200 |
B2 |
младший байт адреса |
002 |
000 |
B3 |
старший байт адреса |
003 |
066 |
MVI M |
Загрузка слагаемого по адресу, заданному в HL |
004 |
X |
B2 |
|
005 |
076 |
MVI A |
Непосредственная загрузка операнда A одним из слагаемым |
006 |
Y |
B2 |
|
007 |
206 |
ADD M |
Сложение содержимого A с содержимым ячейки памяти |
010 |
047 |
DAA |
Десятичная коррекция |
011 |
167 |
MOV M,A |
Загрузка результата в регистр М |
012 |
166 |
HLT |
Останов |
1. Слагаемые: X=026 и Y=045. 0268=1610=000101102, 0458=2510=001001012
В данном случае понадобилась десятичная коррекция, так как при сложении в младшем полубайте результата получилась цифра большая 9. Коррекция осуществляется путём прибавления к этому полубайту 6. Результат 010000012= 1018=4110 , что соответствует результату, полученному при выполнении программы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.