32位处理器兼容16位处理器的寻址方式,可以运行传统的16位代码。但是由于32位的处理器都拥有32位的寄存器和算数逻辑部件,而且同内存芯片之间的数据通路至少是32位的,因此,所有需要从寄存器或者内存地址处取得操作数的指令都被扩充,以适应32位的逻辑操作,比如mov和add 指令现在可以操作32位数据:
mov eax,0xf05b
add eax,edx
例如下面
add eax,[0x2008]
sub eax,[eax+0x80]
mov ecx,[eax+ebx*8+0x02]
值得说明的是,16处理器的内存寻址方式不允许在指令中使用栈指针寄存器SP
因此
mov ax,[sp]
这个是不正确的
但是在32位处理器上,允许内存操作数中使用栈指针寄存器ESP
因此,下面的指令
mov eax,[esp]
这个是合法的