鱼C论坛

 找回密码
 立即注册
查看: 1635|回复: 4

王爽汇编语言 监测点10.5,好难理解

[复制链接]
发表于 2013-12-28 21:08:28 | 显示全部楼层 |阅读模式
2鱼币
捕获.PNG 捕获10.PNG
为什么(ds:[0eh])=11h?执行call word ptr ds:[0eh]后,为什么是往下直接执行inc ax???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-28 21:12:55 | 显示全部楼层
只学到第3章的我建议你反汇编看一下把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-28 23:46:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-28 23:54:43 | 显示全部楼层
这个问题不难理解,我第一次做这题也没有遇到什么难处,首先我们要清楚的是代码中的栈段也是数据段,两段合一了。当执行CALL WORD PTR  DS:[0EH]时,IP(IP=INC AX)这条指令的偏移地址压进栈中的SS:[0EH]处,然后,转移到DS:[0EH]处执行指令,因为,SS:[0EH]=DS:[0EH]=压进栈的IP=要转移的目标IP,所以是执行inc ax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-28 23:56:08 | 显示全部楼层
call far ptr 才会把cs也入栈吧

执行call word ptr
相当于
1. push ip
2.jmp XXX

0eh正好指着栈中刚入栈的ip,然后jmp到这个ip 相当于没有跳转一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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