Адрес
| Метка
| Команда
| Операнд
| Машинный код
| Комментарий
|
|
| LXI
| H, 0A00 h
| 21 00 0A
| ; адрес первого слагаемого
|
|
| MVI
| B, 05h
| 06 05
| ; количество слагаемых
|
| ADD B:
| XRA
| AC
| AF
| ; обнуление регистра AC
|
|
| MOV
| C, AC
| 4F
| ; обнуление регистра C
|
| M1:
| ADD
| M
|
| ; суммирование
|
|
| JNC
| M2
| D2 0C 08
| ; условный переход на
; M2, если (TC) = 0
|
080B
|
| INR
| C
| 0C
| ; увеличение содержимого
; регистра C на единицу
|
080C
| M2:
| INX
| H
|
| ; увеличение содержимого
; пары регистров H-L
; на единицу
|
080D
|
| DCR
| B
|
| ; уменьшение на единицу
; содержимого счетчика
; циклов
|
080E
|
| JNZ
| M1
| C2 07 08
| ; условный переход на M1, если (TZ) = 0
|
|
| HLT
|
|
| ; останов
|
Таблица 3.7 – Программа суммирования массива однобайтных чисел на языке
Ассемблер, содержащая подпрограмму
Адрес
| Метка
| Команда
| Операнд
| Машинный код
| Комментарий
|
|
| LXI
| H, 0A00 h
| 21 00 0A
| ; адрес первого слагаемого
|
|
| MVI
| B, 05h
| 06 05
| ; количество слагаемых
|
|
| CALL
| ADD B
| CD 09 08
| ; вызов подпрограммы
; сложения
|
|
| HLT
|
|
| ; останов
|
| ADDB:
| XRA
| AC
| AF
| ; обнуление регистра AC
|
080A
|
| MOV
| C, AC
| 4F
| ; обнуление регистра C
|
080B
| M1:
| ADD
| M
|
| ; суммирование
|
080C
|
| JNC
| M2
| D2 10 08
| ; условный переход на
; M2, если (TC) = 0
|
080F
|
| INR
| C
| 0C
| ; увеличение содержимого
; регистра C на единицу
|
| M2:
| INX
| H
|
| ; увеличение содержимого
; пары регистров H-L на
; единицу
|
|
| DCR
| B
|
| ; уменьшение на единицу
; содержимого счетчика
; циклов
|
|
| JNZ
| M1
| C2 0B 08
| ; условный переход на M1, если (TZ) = 0
|
|
| RET
|
| C9
| ; возврат в основную
; программу
|