在单片机中经常用到16(2)进制转bcd码,虽然用c语言编程起来较为方便,但是汇编中还是经常需要的
这里暂且以24位二进制转bcd码的为例,其中bcd码是采取压缩方式存放的,即4位存放一个
/* 入口参数 r1,r2,r3存放24位二进制数,r1位最高8位 出口参数 r4,r5,r6,r7 */ MOV R4,#0 MOV R5,#0 MOV R6,#0 MOV R7,#0 CLR C MOV R0,#24 //移位次数 //以上为初始化 LOOP:MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R1 RLC A MOV R1,A // MOV A,R7 ADDC A,R7 DA A MOV R7,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R0,LOOP
如果更多位数,只需要加寄存器,可以用地址空间内存,
移位次数也相应增加就行了