2013-07-09 62 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位。