[an error occurred while processing this directive]
|
;Эта подпрограмма преобразовывает 3-байное двоичное беззнаковое
; число в упакованное BCD-число (занимает 4 байта).
;(Максимальные возможности 0xffffff -> .16777215)
;
;Вход подпрограммы:
;------------------
; BIN0, BIN1, BIN2 - 3-байтное двоичное число, размещенное
; в последовательно расположенных в памяти ячейках (BIN0 - младший байт).
;
;Выход подпрограммы:
;-------------------
; BCD0, BCD1, BCD2, BCD3 - BCD-число (возвращается в последовательно
; расположенных ячейках, где в младших 4 битах BCD0 размещается младший разряд
; BCD - числа).
;
;Используется алгоритм сдвига двоичного числа в двоично-десятичную
; разрядную сетку.
;
; 985 циклов
clrfbcd0
clrfbcd1
clrfbcd2
clrfbcd3
movlwd'24'
movwfcount
gotolab
nextmovfbcd0,W
callcorr
movwfbcd0
movfbcd1,W
callcorr
movwfbcd1
movfbcd2,W
callcorr
movwfbcd2
movfbcd3,W
callcorr
movwfbcd3
labrlfbin0
rlfbin1
rlfbin2
rlfbcd0
rlfbcd1
rlfbcd2
rlfbcd3
decfszcount,F
gotonext
return
corraddwfPCL,F
retlwb'00000000';0
retlwb'00000001';1
retlwb'00000010';2
retlwb'00000011';3
retlwb'00000100';4
retlwb'00001000';5+3=8
retlwb'00001001';6+3=9
retlwb'11000011';9+3=C 3
retlwb'11000100';9+3=C 4
retlwb'11001000';9+3=C5+3=8
retlwb'11001001';9+3=C 6+3=9
retlwb'11001010';9+3=C7+3=A
retlwb'11001011';9+3=C8+3=B
retlwb'11001100';9+3=C 9+3=C
E-mail: info@telesys.ru