关于单片机编写程序 将A中的二进制数变换成3为BCD码 并将百,十,个位数分别防御内部RAM的50H 51H 52H中

2025-01-11 18:55:21
推荐回答(2个)
回答1:

这程序也写的太复杂了!既然51单片机有DIV指令,并且只是把A中的数字转变为BCD,那就用DIV直接运算:
MOV A,#0FDH
MOV B,#100
DIV AB
MOV 50H,A
MOV A,B
MOB B,#10
DIV AB
MOV 51H,A
MOV 52H,B
计算完成,这样50H就是百位数,51H是十位数,52H是个位数

回答2:

这个运算是通过移位的方式,将一个十六进制的数据做十进制调整,这条指令DJNZ R7,LOOP执行完之后,BCD码的百位在50H,十位和个位在51H。 MOV A,#0FDH,0FDH是待转换的十六进制数据。最终通过这一段指令
INC R1

MOV A,#00H

XCHD A,@R1

MOV 52H,A

MOV A,@R1

SWAP A

MOV @R1,A之后,50H,51H,52H就依次存放的是百十个位了