x86汇编语法检查

时间:2014-08-25 13:54:21

标签: assembly syntax x86

我们将在下周对x86程序集进行一次考试,这段代码在语法检查中让我感到很困惑。

x86汇编中字节ptr,word ptr等意味着什么?

例如NEG byte ptr [si]NEG word ptr [si]我知道这两个在x86汇编时是有效的语法,但为什么NEG byte ptr siNEG word ptr si无效?

1 个答案:

答案 0 :(得分:5)

[si]是一个内存操作数,即位于ds:si指定地址的内存中的一些数据。如果您只是说NEG [si]汇编程序无法判断您是否想要取消内存中的字节或单词(或双字......)。

因此,您使用byte/word/dword ptr来消除不同可能的指令编码之间的歧义。例如,对于NEG byte ptr [si],您告诉汇编器您希望它生成机器代码序列,该代码序列将取消位于ds:si内存中的字节。

另一方面,

NEG si直接在寄存器si上运行,而不是在内存上运行。由于si的大小已知(它是16位),因此您无需指定操作数的大小。