16位二进制整数转换为组合BCD码的问题

二进制整数转换为十进制整数--将16位二进制整数存入R3R4寄存器中,转换为十进制整数,以组合BCD形式存储在RAM的20H,21H,22H单元中 程序如下: ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #20H MOV A, R0 PUSH ACC MOV R7, #03H CLR A LP1: MOV @R0, A DEC R0 DJNZ R7, #16H LP2: PUSH ACC CLR C MOV A, R4 RLC A MOV R4, A MOV A, R3 RLC A MOV R3, A MOV B, #03H LP3: MOV A, @R0 ADDC A, @R0 DA A MOV @R0, A DEC R0 DJNZ B, LP3 POP ACC MOV R0, A DJNZ R7, LP2 SJMP $ 上面为做 实验时老师给的程序,实验完全正确。小弟到LP2之前看的懂,然后从LP3的时候就开始不明白了,请高手帮忙解惑。

二进制数转换bcd码的方法是将二进制码左移8次,每次移位后都检查低四位lsd+3是否大于7,如是则加3,否则不加,高4位msd作同样处理"
比如
0000
0001
1010
1100b这个数是十进制数428;而bcd码的意思是用二进制表示十进制数,所以要把428的每一位用一个4位二进制数表示,就是0100
0010
1000.
希望可以帮到你!!!
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜