ASM语言中的算术运算

时间:2013-07-09 10:16:52

标签: math assembly masm32 operations q

我只需要一些帮助。我不完全明白,而且我对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

1 个答案:

答案 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位。