哪种汇编语言的语法如下?

时间:2016-02-11 22:13:53

标签: assembly x86 bios

and dword ptr [edi], not (1 shl 2)

你是否介意指出描述这种方言的文学和/或在其他方言中提供相同的语法?对这条线的解释对我自己的启发也很有帮助。

FWIW,我试图将这种方言中的指令移植到coreboot,我认为这是一种GNU方言。当我尝试使用此指令进行组合时,我从i386-elf-gcc中得到以下错误:

./src/drivers/intel/fsp/cache_as_ram.inc: Assembler messages:
./src/drivers/intel/fsp/cache_as_ram.inc:74: Error: junk `PTR [edi]' after expression
./src/drivers/intel/fsp/cache_as_ram.inc:74: Error: too many memory references for `and'

1 个答案:

答案 0 :(得分:3)

Microsoft宏汇编程序(ml.exe)[也称为MASM或MASM32]了解此构造。

等于:

and dword ptr [edi], 0fffffffbh

如何?

  1. 1 shl 2等于4(向左移动1个两个位置:基数2中的100或基数10中的4

  2. 因此我们有not 4(您将基数2中的所有位都反转为100)

  3. 在基数2中给出11111111111111111111111111111011(我们在32位上)

  4. 这等于0fffffffbh(0x0fffffffb;十进制为4294967291