. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2.3中CPU几次修改IP?  [待解决] 回复[ 11次 ]   点击[ 838次 ]  
dustin
[帖 主]   [ 发表时间:2008-06-25 12:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-24 11:15
执行mov ax,bx后   值为IP初始值+mov ax,bx的指令长度
执行sub ax,ax后  值为IP初始值+mov ax,bx的指令长度+sub ax,ax的指令长度

怎么有很多人说有四次修改?

后面的jmp ax修改了两次IP吗?

为什么啊?请高手指点一下,先谢谢了:)
duckgaga
[第1楼]   [ 回复时间:2008-06-25 13:37 ]   [引用]   [回复]   [ top ] 
荣誉值:44
信誉值:0
注册日期:2008-04-11 13:33
4次
请认真理解CPU工作流程。
取指-修改IP使其指向下一条指令-执行指令-继续取指

1)取第一条指令mov ax,bx后,IP修改为下一条指令sub ax,ax的地址,IP修改1次;
2)执行mov ax,bx
3)继续取指sub ax,ax,IP修改为下一条指令jmp ax的地址,至此IP已经修改了2次;
4)执行sub ax,ax
5)继续取指jmp ax,IP修改为下一条未知指令的地址(这里虽未列出下一条指令,但IP仍然是指向下一条指令的地址的),至此IP总共修改了3次;
6)执行jmp ax,这时因为CPU遇到的是Jmp指令,该指令用于修改IP,故IP又被修改为AX中的内容了,程序将跳转到AX内容所指的地方去继续执行。因此,IP总共修改了4次。

其实这道题的关键在于理解CPU的工作流程,请再认真看看书,不要贪快,真正理解才是最重要的。
dustin
[第2楼]   [ 回复时间:2008-06-25 13:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-24 11:15
是不是这样?
第一次:执行完mov ax,bx后   值是IP初始值+mov ax,bx的指令长度
第二次:执行完sub ax,ax后   值是IP初始值+ mov ax,bx的指令长度+sub ax,ax的指令长度
第三次:读入jmp ax         值是IP初始值+ mov ax,bx的指令长度+sub ax,ax的指令长度+ jmp ax的指令长度
第四次:执行jmp ax后        值是0
dustin
[第3楼]   [ 回复时间:2008-06-25 13:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-24 11:15
谢谢2楼了,我这里网速慢,刚才没刷新到你的回复。
dustin
[第4楼]   [ 回复时间:2008-06-25 13:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-24 11:15
不好意思,这里的楼层计数不一样。谢谢一楼的duckgaga^_^
cdzjf
[第5楼]   [ 回复时间:2008-11-11 12:34 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
为什么最后IP会是0?应该是ax啊
mess
[第6楼]   [ 回复时间:2008-11-11 14:55 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
楼上分析的没错,ip的值也就是ax的值。

这里使用了一个前面没学过的指令sub 执行sub ax,ax后ax=0
jiji11cn
[第7楼]   [ 回复时间:2008-11-14 10:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-11-11 08:18
去网上查了一下,sub 的意思是相减的。。所以ax =0
leopoldhome
[第8楼]   [ 回复时间:2013-01-18 15:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-08 21:28
解释的非常的透彻,谢谢二楼的兄弟
lzglove
[第9楼]   [ 回复时间:2013-05-24 23:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-05-19 22:41
初学者,二楼兄弟解释的很精彩,谢谢。
29960758
[第10楼]   [ 回复时间:2013-06-15 14:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-06-15 10:10
晕,你们看好楼层啊,还是1楼的最给力,
2楼是楼主吧。
benbenfei123
[第11楼]   [ 回复时间:2013-07-14 16:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-14 15:44
实在不行可以用debug 单步调试查看IP
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved