2013-07-09 71 views
0

我只需要一些帮助。我不完全明白,而且我对masm32相当陌生,所以如果你能解释的话,那会很棒!ASM中的算术运算语言

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

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'DL而不是RESULT


现在师。
MOV AX, 30
MOV BX, 12
DIV BX
MOV RESULT, AX
持有什么商?如果我读的是正确的,那就是AX,而DX就是其余的......?

DIV BXBX除以32位值DX:AX,所以你应该分裂之前清除DX。商数最终将在AX之后,其余部分将在DX之后。


有人建议我声明我的变量RESULT dw ?

如果你打算从变量移动16位值/(如MOV RESULT,AX),那么你应该做的可变(至少)16位。