鱼C论坛

 找回密码
 立即注册
查看: 2042|回复: 2

检测点10.4求助

[复制链接]
发表于 2012-10-21 19:43:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
P}~(U60IVFGSM$WLK5F10]X.jpg
call  ax   (ip=5 push ip   跳到1000:6)  这个时候的sp 是什么情况呢
mov  bp,sp         这里的sp不知道是多少
add  ax,[bp]      ax=6+[bp]
【bp】=5 这里不知道怎么回事
有没有详解谢谢了


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-22 07:58:37 From FishC Mobile | 显示全部楼层
这个和bp/sp的具体值没关系。重点是考你call的执行过程。
我们可以设初始化sp=0。
那么,call后,(ss:sp)=(ip)=5
(ss:sp+2)=(cs)=1000h
下面的指令,
add ax,[bp]
也就是6+5=11。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-22 11:54:46 | 显示全部楼层
在call指令执行时,
首先将下一句的地址压栈,所以栈指针所指向的内存地址中的值是 [sp]=5
然后修改ip的值为6,
执行之后直接跳到 mov bp, sp
执行mov bp, sp 后,bp和 sp所指向的地址是一致的,所以[bp]和[sp]的值都是5
然后add ax,[bp]
ax的值自然就是11
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-20 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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