ВУЗ:
Составители:
40
В результате выполнения процедуры в младшей тетраде R1 хранятся сотни, в
аккумуляторе -- десятки и единицы двоично-десятичного эквивалента исходного двоичного
числа.
Обратное преобразование (из двоично-десятичного кода в двоичный) осуществляется
делением исходного числа на 16 по правилам десятичной арифметики. Программа
преобразования приведена ниже. Исходный двоично-десятичный код хранится в
аккумуляторе.
После окончания работы программы в А находится двоичный эквивалент
исходного двоично-десятичного числа.
Программа универсальна и может выполняться в МК48 и в МК51, так как команда
DIV АВ (МК51) не может быть использована для деления чисел по правилам десятичной
арифметики:
BDB: CALL DIV16 ; Деление исходного кода на 16
SWAP A ; Передача остатка в старшую
; тетраду аккумулятора
ORL A,R1 ; Загрузка частного в младшую
; тетраду аккумулятора
SWAP A ;Формирование результата
; в аккумуляторе
JMP EXIT ; Выход из процедуры преобразования
; Подпрограмма деления на 16
; Делимое — в аккумуляторе
; Результат: в R1 — частное, в аккумуляторе — остаток
DIV16: MOV R1,0 ; Сброс частного
SUB16: ADD A,(NOT (10)+1) ; Вычитание из делимого числа 16,
; представленного в десятичной форме
DA A ; Коррекция
INC R1 ; Инкремент частного
JC SUB16 ; Цикл, если остаток
≥ 0
DEC R1 ; Восстановление частного
ADD A,16H ; Восстановление остатка
DA A ; Коррекция
RET ; Возврат
EXIT: . . .
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »