本帖最后由 188610329 于 2021-11-23 14:02 编辑
汇编, 一般都要结合自己的单片机的硬件, 写出合适的代码, 很难像C一样直接抄别人的代码,因为硬件不同,在不知道硬件的情况下,可能只有用加法器是最安全的。但实际上,很多单片机有16位甚至32位除法器,那么代码其实可以极其简单,效率可以很高。既然你走汇编这条路,那么最好就是了解自己搞得这块单片机的硬件特点,用最高的效率来做,不然还是玩C比较好。
沙发给了你一个DA + 加法器的代码,我就顺手给你一个 用 8位除法器的好了。
特意按你的要求改写的,本来是用来做别的事的。
HEX2BCD:
MOV A,31H
ANL A,#0FH
MOV R7,A
MOV A,31H
SWAP A
ANL A,#0FH
MOV R6,A
MOV R5,30H
MOV R2,#5 ;5位数
MOV R1,#10 ;10进制计算,也可以算11进制,9进制等特殊进制。
MOV R0,#44H ;40H 开始 5位数
Transfer:
MOV A,R5
MOV B,R1
DIV AB
MOV R5,A
MOV A,B
SWAP A
ORL A,R6
MOV B,R1
DIV AB
MOV R6,A
MOV A,B
SWAP A
ORL A,R7
MOV B,R1
DIV AB
MOV R7,A
MOV @R0,B
DEC R0
DJNZ R2,Transfer
RET
|