鱼C论坛

 找回密码
 立即注册
查看: 3067|回复: 10

为什么最后IP=0

[复制链接]
发表于 2011-9-14 21:16:16 | 显示全部楼层 |阅读模式

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

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

x

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 22:35:52 | 显示全部楼层
前面sub ax,ax  时 ax = 0   在执行了jmp ax 后将ax的值给了ip  所以ip = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 23:00:46 | 显示全部楼层
2楼正解
sub ax,ax      sub 是减的意思
ax 就是0了
jmp ax 就是把IP的值修改成AX的 值~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 23:02:10 | 显示全部楼层
那个sub是什么意思啊  都没有讲到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 23:03:04 | 显示全部楼层
还是不懂  求解  为什么现在这么初级的我都理解这么困难呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 23:10:45 | 显示全部楼层
改变了4次IP还是不理解  我还是认为是改了三次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-15 02:34:06 | 显示全部楼层
mrcoolxdg 发表于 2011-9-14 23:10
改变了4次IP还是不理解  我还是认为是改了三次

刚开始学的时候我也认为是3次,但是仔细看了看书,就明白了。
前两条指令应该好说,每条指令分别修改一次IP
第三条指令 JMP AX

我们先看CPU 执行指令的过程:
1、从cs:ip 指向的内存单元读取指令
2、ip=ip+所读取指令的长度,从而指向下一条指令
3、执行指令


步骤2中修改了一次ip吧,这次修改ip和前两次修改ip道理是一样的,cpu读取完指令后,ip都要自增的
第四次修改Ip在哪呢?JMP本身是一个转移指令,CPU执行步骤3的时候,将IP改成寄存器AX中的值,所以,就进行了4次修改IP

不知道我解释你满意否。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-15 09:03:34 | 显示全部楼层
LZ你截的图中的说明“设置AX为IP的值嘛“应该是在第4步“执行完jmp ax"。
这里不能理解四步的主要就是对楼上说的那个CPU读取指令,ip更改,执行指令那部分应该没有好好看。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-15 14:02:32 | 显示全部楼层
告诉你一个好办法,写完指令后,用DEBUG查看每执行一条指令后,各个寄存器的变花
鱼哥教过的么!:P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-9-15 15:00:19 | 显示全部楼层
我明白了,知道了sub我就明白了!!谢谢啊!!{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 06:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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