鱼C论坛

 找回密码
 立即注册
查看: 2842|回复: 9

“call word ptr 内存单元地址”问题

[复制链接]
发表于 2013-9-15 21:17:19 | 显示全部楼层 |阅读模式
4鱼币
本帖最后由 绝世公子 于 2013-9-15 21:18 编辑

如图,哪位大神能解释一下这个程序(主要解释一下:call word ptr ds:[0eh])求ax的值?麻烦详细点,谢谢

3K$9TRHI)QFL~`FI9IT%UDI.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-15 23:02:20 | 显示全部楼层
ds设为栈的对应段地址,call word ptr ds:[0eh]等同于下面两句
push ip                              ;此时ip为call下一句,即inc ax的入口地址,入栈即将其存入ss:[0eh]
jmp word ptr ds:[0eh]         ;(ip)=ds:[0eh]=ss:[0eh]
所以执行完call后CPU还是指向call的下一句即inc ax
执行完毕(ax)=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-16 08:53:16 | 显示全部楼层

call下一句的ip不是17H么:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-16 08:57:09 | 显示全部楼层
绝世公子 发表于 2013-9-16 08:53
call下一句的ip不是17H么

跟ip具体值是多少没关系,不管是多少,都指向call下一句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-16 11:59:41 | 显示全部楼层
tsembrace 发表于 2013-9-16 08:57
跟ip具体值是多少没关系,不管是多少,都指向call下一句

我的意思是,执行call后,(ip)=ds:[0eh]=ss:[0eh],,但是,ss:[0eh]的地址是哪句?也就是说执行call后,cs:ip指向哪了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-16 12:53:11 | 显示全部楼层
绝世公子 发表于 2013-9-16 11:59
我的意思是,执行call后,(ip)=ds:[0eh]=ss:[0eh],,但是,ss:[0eh]的地址是哪句?也就是说执行call后, ...

指向call后面的inc ax啊
我2楼说得那么清楚,你不看的么
还是我没看懂你的问题??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-16 18:15:22 | 显示全部楼层
tsembrace 发表于 2013-9-16 12:53
指向call后面的inc ax啊
我2楼说得那么清楚,你不看的么
还是我没看懂你的问题??

看了,我在3楼不是也说了么、、call下一句的ip不是17H么????我就是不能理解为什么inc ax的ip是ss:[0eh]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-16 22:27:32 | 显示全部楼层
绝世公子 发表于 2013-9-16 18:15
看了,我在3楼不是也说了么、、call下一句的ip不是17H么????我就是不能理解为什么inc ax的ip是ss:[0e ...

我只能说到2楼这么明白了,你还不明白,只能建议看书,了解下call word ptr的含义
为什么inc ax的ip是ss:[0eh]?
只因为call的时候先把inc ax的ip压入栈,即存放到ss:[0eh]中了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-30 22:58:20 | 显示全部楼层

图

如图所示,AX里面是栈段的内容,MOV DS,AX是把栈段地址放到DS里面,call word ptr ds:[0eh]是这样的,首先000E=0E07,也就是说在这个指令没执行之前DS:000E这个位置的数据是0E07,而在这个指令执行之后0E07这个数据就跑到DS:000C这个位置去了,而这时DS:000E这个位置的数据就变了,我想这个指令时把DS:000E的数据向前移了一个字的单位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-30 23:21:18 | 显示全部楼层
哦,我知道了,这个指令也就是执行了两步操作,也就是把IP的地址入栈到SP=000E处,再把IP的地址放到DS:000E处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 18:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表