我不明白这两个陈述之间有什么区别
mov [var] , 10
和
mov var,10
汇编?
答案 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, 10
和mov [var], 10
在这种情况下意味着相同的事情(它们与NASM sytax中的mov [var], 10
具有相同的含义)。