0

我只是需要一些帮助。我不完全理解,而且我对 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?” 而不是“结果数据库?” 而不是 AL BL 寄存器,我应该使用 AX BX .... 现在我被卡住了。

任何帮助,将不胜感激!对不起,如果这些问题看起来太琐碎。无论如何,提前谢谢!:DD

4

1 回答 1

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 添加RESULTDX。您可能应该添加'0'toDL而不是 to 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 位。

于 2013-07-09T10:29:06.840 回答