这是我的打印函数,它应该输出一个3位数的结果。我将结果存储在RES中,这是一个dw。推送和弹出解决了我以前的打印问题,现在我不知道哪里出了问题。
XOR AX, AX
XOR BX, BX
;this divides my 3digit number by 100 giving me my, hundredth digit
MOV AX, RES
MOV BX, 100
DIV BX
;prints the hundredth digit
ADD AL, '0'
MOV DL, AL
PUSH AX ; save AX on the stack
MOV AH, 02h
INT 21h
POP AX ; restore ax
;divides the remainder by 10 giving me my tens digit
MOV BX, 10
DIV BX
;prints my tens digit
ADD AL, '0'
MOV DL, AL
PUSH AX ; save AX on the stack
MOV AH, 02h
INT 21h
POP AX ; restore ax
;print my last remainder which is my ones
ADD AH, '0'
MOV DL, AH
MOV AH, 02h
INT 21h发布于 2013-07-16 05:28:41
"div bx“将dx:ax除以bx。那么,你的dx是什么?
发布于 2013-07-16 05:29:47
我相信你取的是"RES“的地址,而不是它的值,它需要一个括号或括号。
发布于 2013-07-16 06:35:08
在十进制阶段,你的余数是AH,而不是AX。
而且从来不会在上放“将AX保存在堆栈上”或“恢复AX”之类的注释。任何精通汇编语言的人(我已经有20年没有用它写东西了,包括我自己)都知道这些指令在做什么。
评论应该是解释你为什么这样做,而不是你正在做什么。
我对此已经很生疏了,我不会发誓没有更多的bug,我只是指出了我看到的一个。
https://stackoverflow.com/questions/17664108
复制相似问题