这是我的打印功能,它应该输出一个3digit结果。我将结果存储在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
答案 0 :(得分:1)
“div bx”将dx:ax除以bx。那么,你的dx是什么?
答案 1 :(得分:0)
我相信你正在使用“RES”的地址而不是它的值,这需要括号或括号。
答案 2 :(得分:0)
在十级阶段,你的余数在AH,而不是AX。
并且从不发出诸如“将AX保存在堆栈上”或“恢复AX”之类的评论。任何对汇编程序有流畅性的人(自从我写了任何内容已有20年,但包括我在内),都会知道这些指令在做什么。
评论应该解释你正在做的为什么,而不是你在做什么。
我已经足够生气了,我不会发誓没有更多的错误,我只是指出一个我看到的。