我只需要一些帮助。我不完全明白,而且我对masm32还不熟悉,所以如果你能解释一下,那就太棒了!
MOV AX, 200
ADD AX, 300
MOV RESULT, AX
结果是否等于500?我尝试添加3和2并使用它来显示输出:
MOV DX, RESULT
ADD RESULT, '0'
MOV AH, 02H
INT 21H
但输出是糖果手杖!哪里错了?
现在我假设减法将与添加相同,所以我们去乘法。 这就是我为乘法所做的事情
MOV AX, 30
MOV BX, 8
MUL BX
MOV RESULT, AX
RESULT的值是否等于240?.... 我试过AX为3,BX为2.输出是一个铲子。你能指出我正确的方向吗?
现在分裂。
MOV AX, 30
MOV BX, 12
DIV BX
MOV RESULT, AX
商是什么?如果我读到的内容是正确的,那就是AX,DX保留其余部分......?
我已经完成了8位算术运算(使用AL,BL,DL ......),我试图在这里应用它,遗憾的是,当RESULT大于128时,它只输出垃圾。有人建议我应该将变量声明为'RESULT dw?'而不是'RESULT db?'而不是AL BL寄存器我应该使用AX BX ....现在我被卡住了。
任何帮助将不胜感激!对不起,如果这些问题看起来太微不足道了。无论如何,提前谢谢! :DD
答案 0 :(得分:1)
MOV AX, 200
ADD AX, 300
MOV RESULT, AX
结果是否等于500?
是
我尝试添加3和2并使用它来显示输出:
MOV DX, RESULT
ADD RESULT, '0'
MOV AH, 02H
INT 21H
但输出是糖果手杖特征!哪里错了?
在移动'0'
到RESULT
之后,您将RESULT
添加到DX
。您应该将'0'
添加到DL
而不是RESULT
。
现在分裂。
MOV AX, 30
MOV BX, 12
DIV BX
MOV RESULT, AX
该商有什么用?如果我读到的内容是正确的,那就是AX,DX保留其余部分......?
DIV BX
将32位值DX:AX
除以BX
,因此您应该在除法前清除DX
。商将以AX
结尾,余数将以DX
结尾。
有人建议我将变量声明为
RESULT dw ?
如果您要将16位值移入/移出变量(例如MOV RESULT,AX
),那么您应该使变量(至少)为16位。