;;;;;;8 位二进制数转BCD 码子程序;;;;;;;;;
bintobcd: bcr status,c movia 08h ;循环移位次数8 次 movar count clrr r0 clrr r1
loop: rlr byte,1 rlr r1,1 rlr r0,1 ;byte 左移一位至r1,r0 中 decrsz count,1 goto adj_dec ;将r0,r1 移位结果进行bcd 调整 return
adj_dec: movia r1 movar fsr call adj_bcd movia r0 movar fsr call adj_bcd goto loop
adj_bcd: movia 03h addar indf,0 ;低半字节+3>7 吗? movar temp btrsc temp,3 movar indf ;是,低半字节+3>7,lsd+3--->lsd
movia 30h addar indf,0 ;高半字节+3>7 吗? movar temp btrsc temp,7 movar indf ;是,高半字节+3>7,msd+3--->msd
return |