|
本帖最后由 188610329 于 2021-11-23 14:02 編輯
匯編, 一般都要結(jié)合自己的單片機(jī)的硬件, 寫出合適的代碼, 很難像C一樣直接抄別人的代碼,因?yàn)橛布煌诓恢烙布那闆r下,可能只有用加法器是最安全的。但實(shí)際上,很多單片機(jī)有16位甚至32位除法器,那么代碼其實(shí)可以極其簡(jiǎn)單,效率可以很高。既然你走匯編這條路,那么最好就是了解自己搞得這塊單片機(jī)的硬件特點(diǎn),用最高的效率來做,不然還是玩C比較好。
沙發(fā)給了你一個(gè)DA + 加法器的代碼,我就順手給你一個(gè) 用 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位數(shù)
MOV R1,#10 ;10進(jìn)制計(jì)算,也可以算11進(jìn)制,9進(jìn)制等特殊進(jìn)制。
MOV R0,#44H ;40H 開始 5位數(shù)
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
|
|