«Сложение двух целых беззнаковых двоично-десятичных чисел»
Входные параметры:
(H,L)- Адрес младшего байта (МЛБ) слагаемого 2 (0910)
(В,С)- Адрес младшего байта (МЛБ) слагаемого 1 (0900)
(Е)- Количество байт (N) числа (08)
Выходные параметры:
(В,С)- Адрес МЛБ суммы (совпадает с адресом МЛБ слагаемого 1)
CY=1- признак переполнения суммы
Используются все регистры, сохраняются (B,C) и Е. Глубина стека -2.
адрес
| машинный
код
| метка
| мнемокод
| примечание
|
|
|
| LXI B 0900
| Загрузка адреса МЛБ слагаемого 1
|
|
|
| LXI H 0910
| Загрузка адреса МЛБ слагаемого 2
|
| 1E08
|
| MVI E,08
| Загрезка количества байт числа
|
| CD5008
|
| CALL C8N10
| Вызов программы сложения
|
080B
| FF
|
| RST 7
| Переход на программу «Монитор»
|
|
| C8N10
| MOV D,E
| Сохранение (E)
|
| C5
|
| PUSH B
| Сохранение в стеке МЛБ слагаемого 1
|
| AF
|
| XRA A
| Обнуление А, CY=0
|
| 0A
| MC1
| LDAX B
| Загрузка байта слагаемого 1
|
| 8E
|
| ADC M
| Сложение байта слагаемых
|
|
|
| DAA
| Двоично-десятичная коррекция
|
|
|
| STAX B
| Запоминание байта суммы
|
|
|
| INX B
| Увеличение адреса слагаемого 1
|
|
|
| INX H
| Увеличение адреса слагаемого 2
|
| 1D
|
| DСR E
| Уменьшение содержимого счетчика количества байт числа
|
085A
| C25308
|
| JNZ 0853
| Переход на МС1, если Z=0
|
085D
| C1
|
| POP B
| Восстановление адреса слагаемого 1
|
085E
| 5A
|
| MOV E,D
| Восстановление счетчика количества байт
|
085F
| C9
|
| RET
| Возврат в основную программу
|