[an error occurred while processing this directive]
|
B16BCDD:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма преобразования целового 16-ти битного двоичного числа без ;знака в двоично-десятичное.
;Вход: R5R4 - 16-ти разрядное двоичное число.
;Вход: R1R2R3 - двоично-десятичные цифры (R1 - десятки тысяч)
;Используемые регистры: R5, R4, B, A
;Требует свободных байт в стеке: 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov R1,#0
mov R2,#0
mov R3,#0 ; обнулить результат
mov B, #16
sjmp B16BCDD_2 ;B16BCDD_1:
mov A,R3
add A,R3
da A
mov R3,Amov A,R2
addc A,R2
da A
mov R2,Amov A,R1
addc A,R1
mov R1,A ; R1R2R3 умножено на 2 по правилам 10-чной системыB16BCDD_2:
mov A,R4
rlc A
mov R4,A
mov A,R5
rlc A
mov R5,A ; число сдвинуто влевоmov A,R3
addc A,#0
mov R3,A ; добавили старший разряд к единицам результата R1R2R3
djnz B,B16BCDD_1; зацикливание
ret
E-mail: info@telesys.ru