我正在网上搜索十六进制到十进制的代码,我偶然发现了这一点.我测试了它,它完美地工作,虽然我不明白为什么.
DATA SEGMENT
NUM DW 01FH
BUFFER DB 10 DUP ('$')
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV AX,NUM
LEA SI,BUFFER
CALL HEX2DEC
LEA DX,BUFFER
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
LOOP1:
MOV DX,0
DIV BX ;<--------------------------------
ADD DL,30H ;<----------???
PUSH DX
INC CX
CMP AX,9
JA LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2:
POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
Run Code Online (Sandbox Code Playgroud)
尽管分裂发生了,但是这个人使用DL而不是AL,只是将它推到了堆栈中.这是如何运作的?
归档时间: |
|
查看次数: |
1198 次 |
最近记录: |