下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答:1次
在jmp ax的时候修改了ip
IP中的值是:0000H
- [nuojiya8] 2001也不是16的倍数呀 03/16 21:43
- [q2719833] 哦,我想让它闪烁,看看闪烁的效果,呵呵!闪烁的时候还是书上要求的颜色! 05/07 12:54
- [wsrf] 颜色属性怎么没有按书上的来呢? 05/06 22:37
- [q2719833] 哦 明白了!谢谢tomato!我都当字节看了。晕! 05/04 12:06
- [tomato] 很正确,而且也很清晰。后面的数据不是放进去了吗?你为什么认为没有放进去? 05/04 10:49
- [游客] 定义栈空间大点,能保证debug下也能正确执行。跟中断使用栈有关,博主先不必着急理解,你在这里的理解 04/29 10:48
- [游客] 博主说的对。 04/29 10:47
- [q2719833] 对 ,就是。我没考虑到!还是思考的不够严谨!谢谢aten 和tomato了! 04/22 12:54
- [aten] -_-!!我打错字了,最后改写了0:240里的数据!不知道怎么,老打错 04/21 13:34
- [aten] 呵呵,感觉也是编程习惯问题吧!你自己都已经知道了,为什么不再想想呀! 向内存0:200-0:2 04/21 13:31
[ ilove 发表于 2009-03-31 19:44 ]
cs、ip是一下就指到jmp ax执行修改ip了吗?
cpu是怎么指向mov ax,bx读取并指向下一条的,一次肯定不对。
[ q2719833 发表于 2009-03-31 20:50 ]
啊!郁闷啊!做了几道题都错了!
我又看了看书,唉还是书没看透。开始我以为MOV AX,BX是在cpu中执行的,不经过内存。仔细看了CPU读取,执行指令原理图后发现真的错了。应该是四次吧?
第一次:CPU读取指令89 D8进入指令缓冲器,ip地址加2
第二次:CPU执行sub ax ax,指令进入缓冲器时ip被修改
第三次:cpu执行jmp ax,指令进入缓冲器时ip被修改
第四次:jmp ax指令执行后将ip修改
[ 游客 发表于 2009-03-31 21:15 ]
楼上的回答正确。