鱼C论坛

 找回密码
 立即注册
查看: 4502|回复: 22

监测点2.3疑问

[复制链接]
发表于 2012-5-12 17:35:54 | 显示全部楼层 |阅读模式

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

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

x
监测点2.3中小鱼老师的解释为ip修改了四次,其中jmp ax修改了两次,我不明白为什么要先读入,在修改,而不是直接执行。那jmp 4e5a也是分两步的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-12 23:05:40 | 显示全部楼层
本帖最后由 lukexc 于 2012-5-12 23:11 编辑

我也是初学者,我来解释下,不晓得对不,高手请拍砖!
第一次是读入jmp ax后,ip自增,第一次改变;
第二次是jmp ax这个指令执行完,将ax赋值给ip,ip第二次改变!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 13:11:29 | 显示全部楼层
mov ax,bx  指令执行到指令的时候IP+1  IP修改第3次
sub ax,ax   指令执行到指令的时候IP+1  IP修改2次
jmp ax       指令执行到指令的时候IP+1  IP修改第3次  
在加上JMP修改了IP 所以总共修改了IP次数为4次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 13:25:53 | 显示全部楼层
因为ip指向的是下一条将要执行的指令的偏移地址 所以在执行当前指令的时候ip就要加1啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-13 16:16:21 | 显示全部楼层
jmp指令是不是包括如下两条指令呢。mov ip,ax和执行jmp ip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-13 16:19:51 | 显示全部楼层

以你的说法,执行到jmp ax时,此时ip指向jmp ax了,就该执行jmp了,然后ip跳到ax的位置了,应该是改变一次啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-13 16:21:28 | 显示全部楼层
lukexc 发表于 2012-5-12 23:05
我也是初学者,我来解释下,不晓得对不,高手请拍砖!
第一次是读入jmp ax后,ip自增,第一次改变;
第二 ...

请问为什么要读入呢?其他指令操作怎么就不需要读入。而是直接执行呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-13 16:24:22 | 显示全部楼层
退聊人物;战孜瞳 发表于 2012-5-13 13:11
mov ax,bx  指令执行到指令的时候IP+1  IP修改第3次
sub ax,ax   指令执行到指令的时候IP+1  IP修改2次
j ...

执行完jmp ax后不就直接修改ip并跳转到ax的位置了吗?为什么在这之前要先加1呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 16:25:58 | 显示全部楼层
蓝色旋律 发表于 2012-5-13 16:24
执行完jmp ax后不就直接修改ip并跳转到ax的位置了吗?为什么在这之前要先加1呢?

他问的是修改了几次。 执行到jmp的时候修改了2次。。先是+1修改一次然后在根据指令修改一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 16:30:35 | 显示全部楼层
也可以这样告诉你把,将要执行下一条指令的时候 IP会+上1 然后才指引到下个地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 16:31:40 | 显示全部楼层
IP不加上一个1怎么指定地址?怎么执行地址那的指令? 这是有先后顺序的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-13 21:36:37 | 显示全部楼层
楼上说的对!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-14 10:50:22 | 显示全部楼层
本帖最后由 蓝色旋律 于 2012-5-14 10:53 编辑
退聊人物;战孜瞳 发表于 2012-5-13 16:31
IP不加上一个1怎么指定地址?怎么执行地址那的指令? 这是有先后顺序的。


执行mov ax,bx ------ip加1,修改第一次
mov ax,ax------------ip加1,修改第二次,此时ip指向jmp
jmp ax-------ip直接修改为ax,而不必加1
我的分析是这样的,应该是先执行本条语句,然后才是修改ip,到jmp后ip直接修改,就不会加1了吧。我是这么理解的,有什么问题吗?请赐教。
另确认下,ip是在执行完本条指令后加1以指向下条指令呢,还是先ip加1指向本条指令再执行本条指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-14 17:00:58 | 显示全部楼层
刚开始IP先加上1指向第一条指令  后面类推。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-14 17:07:22 | 显示全部楼层
退聊人物;战孜瞳 发表于 2012-5-14 17:00
刚开始IP先加上1指向第一条指令  后面类推。

也就是是先ip加1指向下条指令,然后才执行加1前的指令(也就当前指令)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-14 17:15:47 | 显示全部楼层
蓝色旋律 发表于 2012-5-14 17:07
也就是是先ip加1指向下条指令,然后才执行加1前的指令(也就当前指令)?

将要开始执行第一条指令的时候 先是IP+1 然后指定第一条指令的地址。 然后和后面的加起来就是4次修改了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-14 19:37:20 | 显示全部楼层
本帖最后由 Seely 于 2012-5-15 13:11 编辑

mov ax,bx     ;执行此指令,第一次。
sub ax,ax      ;执行此指令,第二次。
jmp ax          ;此步修改两次。                  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-15 10:28:06 | 显示全部楼层
Seely 发表于 2012-5-14 19:37
mov ax,bx     ;执行此指令,第一次。
sub ax,ax      ;执行此指令,第二次。
jmp ax          ;把 ax 的 ...

第三次已经将ip修改为ax了,执行jmp直接就跳到0处,这次ip应该是不改变值得吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-15 10:35:05 | 显示全部楼层
在debug里执行此指令,用t执行后,ip也是现实修改三次啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-15 10:36:26 | 显示全部楼层
退聊人物;战孜瞳 发表于 2012-5-14 17:15
将要开始执行第一条指令的时候 先是IP+1 然后指定第一条指令的地址。 然后和后面的加起来就是4次修改了。

意思也就是说执行本条指令前,ip先加一指向了下条指令,然后才执行本指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-20 09:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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