2015-09-01 65 views
0

我不明白的是這兩個語句mov命令與沒有括號?

mov [var] , 10 

mov var,10  
組裝

之間的區別?

+0

對於哪個彙編程序(NASM,MASM,TASM,...)?它很重要,因爲它們使用不同的語法。 – Michael

+0

我的意思是nasm –

+1

雖然邁克爾的回答是完整和正確的,但我只是想確保你意識到括號意思是**解除引用**。 –

回答

6

對於這樣一個變量:

var: db 0 

指令mov var,10不會被NASM被允許的,因爲在NASM語法編寫var像(方括號)表示您要的var作爲地址即時。並且沒有變體mov需要一個immediate, immediate操作數對。

添加方括號使其成爲內存中地址的引用。因此mov [var], 10表示將值10存儲在var。實際上,你必須指定要存儲的值的大小,例如mov byte [var], 10。否則,NASM不知道你是否想要存儲一個字節,一個字或一個雙字,因爲直接10可以用任何這些大小表示。

請注意,在MASM/TASM語法中,mov var, 10mov [var], 10在這種情況下意味着相同的事情(它們的含義與NASM協議中的mov [var], 10相同)。