mov命令与没有括号?

时间:2015-09-01 19:02:03

标签: variables assembly x86 nasm

我不明白这两个陈述之间有什么区别

mov [var] , 10  

mov var,10     

汇编?

1 个答案:

答案 0 :(得分:6)

对于这样的变量:

var: db 0

NASM不允许使用指令mov var,10,因为在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 sytax中的mov [var], 10具有相同的含义)。