x86汇编语法检查

PNC*_*PNC 2 syntax x86 assembly

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

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

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

Mic*_*ael 5

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

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

NEG si另一方面,直接在寄存器上操作si,而不是在内存上操作.由于大小si已知(它是16位),因此指定操作数的大小没有意义.