注册 登录
编程论坛 汇编论坛

关于ip的问题

月下人静 发布于 2012-08-01 22:22, 504 次点击
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
解:
修改4次;第一次在CPU读取“mov ax,bx”后,第二次在CPU读取“sub ax,ax”后,第三次在CPU读取“jmp ax”后,第四次在CPU执行完“mov ax,bx”后;最后IP中的值为0。



*************************************************************************************

前面3次都理解,第4个不明所以,求解。
6 回复
#2
zklhp2012-08-01 22:34
有人问过这个题 搜索本版罢。。
#3
zklhp2012-08-01 22:35
我怎么感觉好像是个死循环。。
#4
zklhp2012-08-01 22:41
http://www.

王爽那个书有个论坛 里面有解释。。
#5
zklhp2012-08-01 22:43
对 他这么一解释我也明白了 按照这个思路确实是这样 为了得到这个答案也只能这样。。。

复制一遍罢 也是大牛写的
那好,我们一条一条的来分析。设ip=0
mov ax,bx
cpu先找到这条指令所在的地址,然后送到指令缓冲器。(此为读取),
注意了,就在此时,ip变为2。
〈ip的值1次改变〉
然后去执行这条指令,将bx的值复制到ax中。
这是这条指令大概的执行过程,


那我们再来看第二条,
sub ax,ax
将指令送到指令缓冲器,此时,ip变为4
ip的值2次改变
然后执行,ax-ax……结果ax=0
第二条结束


重点来了,
jmp ax
将这条指令送入指令缓冲器,ip的值变为6
〈ip的值3次改变〉

指令执行,
功能为,将ax的值送去ip。也就是ax=ip=0
〈ip的值4次改变〉

这就是这3条指令的大概执行的过程了。

#6
zklhp2012-08-01 22:47
https://bbs.bccn.net/thread-229696-1-1.html

和这个一样 一块参考罢

一般我都是根据debug里的来 但这个题是从指令处理的角度出的 如果从考试的角度讲 肯定是根答案一致才好
#7
爱末流2012-08-02 23:29
jmp ax  修改了2次IP  第一次执行指令的时候 IP的值被改变一次,IP=0 指向0后,注意还没有开始跳转,跳转后才正式在次修改了一次IP的值,根据下一条0的指令进行修改字节数   
1