+ -
当前位置:首页 → 问答吧 → 简单的mov寻址问题

简单的mov寻址问题

时间:2011-05-09

来源:互联网

有一个函数,参数为一个地址,如下:

int test(int *p)
{
  *p = 10;  
}

反汇编代码
mov eax,dword ptr [p]
mov dword ptr [eax],0Ah 
根据mov指令的定义,mov指令以DS为基地址寻址 p 指向的变量(实模式), 如果传递给函数的的变量是堆栈上临时分配的变量,那么应该以SS为基地址来寻址,那么函数是怎么样正确寻址的?

另外,我看了一下 DS 和 SS 的值是相等,所以不管以DS 还是SS 寻址都是正确的,是不是DS == SS?



作者: xumin0210   发布时间: 2011-05-09

引用楼主 xumin0210 的回复:
有一个函数,参数为一个地址,如下:

int test(int *p)
{
*p = 10;
}

反汇编代码
mov eax,dword ptr [p]
mov dword ptr [eax],0Ah
根据mov指令的定义,mov指令以DS为基地址寻址 p 指向的变量(实模式), 如果传递给函数的的变量是堆栈上临时分配的变量,那么……


在保护模式下 DS 指向全局或局部描述符表中的描述符

作者: xumin0210   发布时间: 2011-05-09