MOVR0,TH1
MOVR1,TL1
CALLHEX2BCD;呼叫子程式把R0R1中的數字,轉換成BCD碼,送到R2R3R4
;-------下面,把萬千百十個位,分別存入R4R3R2R1R0
MOVA,R4
MOVB,#16
DIVAB;除以16,目的是分離出高、低四位
MOVR1,A;存放十位
MOVR0,B;存放個位
;
MOVA,R2
MOVR4,A;存放萬位
MOVA,R3
DIVAB
MOVR3,A
MOVR2,B
SJMP$;到此,完成了題目要求
;------------------------------------------------------------------
;兩個位元組的二進位制數轉換成BCD碼的程式如下:
;功能:16位二進位制數變換成為BCD碼;
;入口:R0R1中是16位二進位制數,其中R0中是高8位;
;出口:R2R3R4中是BCD碼,其中R2中是萬位,R3中是千、百位,R4中是十、個位。
HEX2BCD:
CLRA
MOVR2,A;先清零
MOVR4,A
MOVR5,#16;共轉換十六位數
LOOP:
CLRC
MOVA,R1;從待轉換數的高階移出一位到Cy
RLCA
MOVR1,A
MOVA,R0
MOVR0,A
MOVA,R4;送到BCD碼的低端
ADDCA,R4;帶進位加。自身相加,相當於左移一位
DAA;十進位制調整,變成BCD碼
ADDCA,R3
DAA
ADDCA,R2
MOVR2,A
DJNZR5,LOOP;共轉換十六位數
RET
MOVR0,TH1
MOVR1,TL1
CALLHEX2BCD;呼叫子程式把R0R1中的數字,轉換成BCD碼,送到R2R3R4
;-------下面,把萬千百十個位,分別存入R4R3R2R1R0
MOVA,R4
MOVB,#16
DIVAB;除以16,目的是分離出高、低四位
MOVR1,A;存放十位
MOVR0,B;存放個位
;
MOVA,R2
MOVR4,A;存放萬位
;
MOVA,R3
MOVB,#16
DIVAB
MOVR3,A
MOVR2,B
SJMP$;到此,完成了題目要求
;------------------------------------------------------------------
;兩個位元組的二進位制數轉換成BCD碼的程式如下:
;功能:16位二進位制數變換成為BCD碼;
;入口:R0R1中是16位二進位制數,其中R0中是高8位;
;出口:R2R3R4中是BCD碼,其中R2中是萬位,R3中是千、百位,R4中是十、個位。
HEX2BCD:
CLRA
MOVR2,A;先清零
MOVR3,A
MOVR4,A
MOVR5,#16;共轉換十六位數
LOOP:
CLRC
MOVA,R1;從待轉換數的高階移出一位到Cy
RLCA
MOVR1,A
MOVA,R0
RLCA
MOVR0,A
MOVA,R4;送到BCD碼的低端
ADDCA,R4;帶進位加。自身相加,相當於左移一位
DAA;十進位制調整,變成BCD碼
MOVR4,A
MOVA,R3
ADDCA,R3
DAA
MOVR3,A
MOVA,R2
ADDCA,R2
MOVR2,A
DJNZR5,LOOP;共轉換十六位數
RET