DBUF1 EQU 40H ;定義數據存儲區起始地址
NUM EQU 5AH ;給定轉換的數據
ORG 0000H
CALL HEXDIV
SJMP $
HEXDIV:
MOV R1, #DBUF1 ;R1指向數據存儲區的起始地址
MOV A, #NUM
MOV B, #100
DIV AB ;除以100,求得百位值
MOV @R1, A ;百位存放在存儲區起始地址單元中
MOV A, #10 ;
XCH A, B ;把余數放A,除數放B
DIV AB ;除以10,求得十位值
INC R1 ;
MOV @R1, A ;十位放在存儲區起始地址+1單元中
INC R1 ;
MOV A, B
MOV @R1, A ;個位放在存儲區起始地址+2單元中
RET
END
---------------
這個子程序,編寫的太濫了,去掉三分之壹的指令,都是可以的。
簡化後,功能完全相同,如下。
MOV A, #NUM
MOV B, #100
DIV AB ;除以100,求得百位
MOV DBUF1, A ;百位存放到存儲區的起始地址單元中
MOV A, #10 ;
XCH A, B ;把余數放A,除數放B
DIV AB ;除以10
MOV DBUF1 + 1, A ;十位放到存儲區起始地址+1單元中
MOV DBUF1 + 2, B ;個位放到存儲區起始地址+2單元中
RET
原文的註釋,有些,寫的也不對路。
如傳送指令的註釋,應該寫:數據存放到...,它卻寫:數據存放在...。
有些書,就是在瞎編,不看也罷。