. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于论坛第二章的“检测题”那一个经过5条指令IP被CPU修改几次的“分析”!  [待解决] 回复[ 5次 ]   点击[ 404次 ]  
xiaobatian
[帖 主]   [ 发表时间:2010-11-11 13:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-08 10:58
论坛第二章的“检测题”有一道题是这样的:          
          1000:0 mov ax,8
          1000:3 jmp ax
          1000:5 mov ax,0
          1000:8 mov bx,ax
          1000:a jmp bx
          CPU从1000:0处开始执行指令当执行完1000:a处的指令后CPU几次修改IP?
1、   4
2、   5
3、   6
4、   7

解析:读入mov ax,8时,ip修改一次,值为3;执行完毕以后,CPU加载下一条指令,ip修改第二次,值为5;执行完jmp ax后,ip第三次修改,值为8;(在这里要注意了,既然IP为8了,那么1000:5 mov ax,0这条指令就暂时就不会执行了,因为它的IP<8,这时要直接到1000:8 mov bx,ax这条指令,所以朝下面继续看下去)读入mov bx,ax时,ip第四次修改,值为a;执行完毕以后,CPU读入下一条指令,ip第五次修改,值为a+2=c;执行jmp bx时,ip第六次修改,值为8

上面的“解析”是我在网上好不容易找到的,括号里面的是我加进去的想法!

这种题如果不看IP的值,那么肯定是5条指令的执行要先改变5次IP,两个jmp又改变2次IP,所以一共是改变了7次IP!这一题仔细分析以后,1000:5 mov ax,0这条指令没有参与这一题的过程中,所以是7-1=6次!

最终答案是6次,选3!

这道题我在论坛看到过N多分析和解答都没有这样的让我明白,呵呵!希望别人的分析加上我的思考能帮助一些迷茫的人!
robin2008
[第1楼]   [ 回复时间:2010-11-16 15:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-16 10:46
谢谢!终于搞清楚了'1000:5 mov ax,0 '为什么IP没变,原来跳过了;
nonconformist
[第2楼]   [ 回复时间:2012-01-31 10:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-01-16 20:05
受教了!非常感谢!
kingsgg
[第3楼]   [ 回复时间:2012-02-28 15:27 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01
非常感谢楼主的解释,我一直翻书来看,怎么算都是7,原来是我还没有弄清楚IP的变动,使我终于理清了。
zngzhen
[第4楼]   [ 回复时间:2012-03-26 17:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-12 16:45
ip指令计算器的改变可以通过以下方式来改变:
1、是通过指令的执行,是IP值自动加上相应的指令长度使其指向下一条要执行的指令;
2、通过JMP执令显式地改变e.g. JMP AX; JMP segment:offset
shaokai
[第5楼]   [ 回复时间:2012-03-30 02:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-03-26 16:10
最开始(IP)=0
从1000:0处取出指令,然后(IP)=3,执行1000:0处指令mov ax,8后(ax)=8
从1000:3处取出指令,然后(ip)=5,执行1000:3处指令jmp ax 后 (ip)=8
从1000:8处取出指令,然后(ip)=a,执行1000:8处指令mov bx,ax后(bx)=8
从1000:a处取出指令,然后(ip)=c,执行1000:a处指令jmp bx 后(ip)=8
每次cpu取出指令后都会相应修改ip的值,
jmp ax和jmp bx这两条指令也会修改ip的值
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved