有很多教科书和资源可以解释cpu的寻址模式,并将X86寻址模式分类为

Immediate 
Register
Memory   -->   direct
         -->   register indirect
         -->   base
         -->   Index
         -->   Base-Index

基本上,寻址模式试图回答这个问题:执行指令的数据在哪里?例如, mov ax, 04 是立即的,因为值 04 是由cpu提取的指令代码的一部分 . 因此,执行指令不需要模式存储器访问 .

另一个例子是 mov ax, [FFH] 被称为直接存储器模式,因为指令代码中没有数据(操作数) . 因此,cpu必须再次访问内存以获取数据 .

现在,我在使用visual studio编译的X86代码的反汇编代码中看到了很多实例

mov     dword ptr [ebp-8],0

很容易理解它试图将 0 放在位于[ebp-8]的内存的四个字节(dword)中 . 该指令代码是 c745f800000000 . 问题是该指令(和其他实例)的寻址模式是什么?

这是一个数据移动指令,因此寻址模式的概念应该是有效的 . 不是吗?