ВУЗ:
Составители:
158
ANL A,#00001111b ; выделяем мл тетраду
INC R1 ;
MOV @R1,A ;
INC R0 ;
INC R1 ;
INC R2 ;
CJNE R2,#5,BCD10BCD_1 ;
RET
;-------------------------------------------------------------------------------
;Подпрограмма преобразования 16-разрядного двоичного целого числа без знака в
;3-байтное целое беззнаковое упакованное двоично-десятичное число.
; Вход: R5R4 - 16-разрядное двоичное число (ст байт, мл байт).
; Выход: R1R2R3 - двоично-десятичные цифры (мл половина R1 - дес тыс,
; ст половина R2 - тыс,... мл половина R3 - ед.)
;-------------------------------------------------------------------------------
B16BCDD: MOV R1,#0 ;--------------------------
MOV R2,#0 ; нач обнуление результата
MOV R3,#0 ;--------------------------
MOV B,#16 ;
SJMP B16BCDD_2 ;пропуст первое (лишнее) умнож на 2
B16BCDD_1: MOV A,R3 ;
ADD A,R3 ;
DA A ;
MOV R3,A ;
MOV A,R2 ;
ADDC A,R2 ;
DA A ;
MOV R2,A ;
MOV 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
;-----------------------------------------------------------------------------
;Подпрограмма преобразования 3-байтового упакованного двоично-десятичн числа
;в 6-байтовое неупакованное двоично-десятичное число.
;Упакованное двоично-десятичного число нужно предварительно поместить в R1R2R3
;(мл половина R1 - дес тыс, ст половина R2 - тыс,... мл половина R3 - ед.).
; Неупакованное двоичн-дес число возвращается в РОНах
; IND_DESTIS_R, IND_TIS_R, IND_SOT_R, IND_DES_R, IND_ED_R,
;-----------------------------------------------------------------------------
BCD5BCD: MOV A,R1 ;---------------------
ANL A,#00001111b ; выделяем мл тетраду R1
MOV IND_DESTIS_R,A ;получ дес тыс
MOV A,R2 ;---------------------
SWAP A ;
ANL A,#00001111b ; выделяем ст тетраду R2
MOV IND_TIS_R,A ;получ тыс
MOV A,R2 ;---------------------
ANL A,#00001111b ; выделяем мл тетраду R2
MOV IND_SOT_R,A ;получ сот
MOV A,R3 ;---------------------
SWAP A ;
ANL A,#00001111b ; выделяем ст тетраду R3
MOV IND_DES_R,A ;получ дес
MOV A,R3 ;---------------------
Страницы
- « первая
- ‹ предыдущая
- …
- 156
- 157
- 158
- 159
- 160
- …
- следующая ›
- последняя »
