现在的位置: 首页 > 综合 > 正文

special addressing mode

2017年12月28日 ⁄ 综合 ⁄ 共 657字 ⁄ 字号 评论关闭

特殊的地址访问模式, 其内存引用,总是由带偏移量的地址访问方式所引用。如[EBP-4],[1000H]等。

C7 45 00 00 00 00 00      MOV     DWORD PTR[EBP+0],0X0

C7 45 FC 00 00 00 00     MOV     DWORD PTR[EBP-4],0X0

89  45 00                            MOV     DWORD PTR[EBP],EAX

所有指令的REG域都为零。 但其不代表总是指EAX。

当源操作数与目标操作数的形式不一致时,指令码字节中的操作码是不一样的。
  如在MOV指令下,mod-reg->r/m                            时为  89
                                  mod-reg - r/m, 立即数->内存,  时为  C7.
C7时,reg域被忽略,始终为000;

当出现由EBP进行内存地址索引([EBP+X])时, R/M域总为EBP的索引值。此时可认为R/M域被忽略。

忽略的条件是MOD域为零。否则[EBP]代表真实的寄存器索引的内存地址值。

以上指令的共同点是操作码字节后的字节,MOD-REG-R/M完全相同。
主要因为,内存地址及寄存器的数据访问模式并不完全由第二指令字节决定,所以出现special addressing mode,

这可能主要是由于intel指令兼容性考虑,而造成的指令理解上的复杂度,逻辑复杂度。


FC=>1111 1100, 减一取反,为4. ->取反加一,-4。指令码的第三字节,会是,比例因子。 偏移值,立即数

【上篇】
【下篇】

抱歉!评论已关闭.