题目:下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
ANS:修改了4次。第一次是将“mov ax,bx”读取到指令缓冲器后,IP+3;第二次是将“sub ax,ax”读取到指令缓冲器后,IP+3;第三次是讲“jmp ax”读取到指令缓冲器后,IP+2;第四次是执行“jmp ax”,IP中的值为为ax中数据。
=========
改正:上面前两次的ip其实都是+2,不是+3。特此改正。
- [mess] 如果楼主看的是第二版教材就没有这个问题了(因为已经把sp设置大了^_^) 08/23 15:15
- [mess] 如果楼主看的是第二版教材就没有这个问题了(因为已经把sp设置大了^_^) 08/23 15:14
- [mess] 博主加油 08/23 15:13
- [mywiil] 抓紧时间吧,一放就over了。 08/21 03:29
- [beichenyibei] 恩,谢谢您的提点。 08/17 19:15
- [masmaster] 算术与逻辑运算通常用通用寄存器。4个段寄存器有专门的用途。 08/17 11:05
- [beichenyibei] 不好意思,我错了。 我以为像“mov 寄存器,数据”这种ip都是加三,就想当然的以为“mov 寄存 08/17 09:54
- [12sunfeng34] mov ax,bx sub ax,bx 读取指令缓冲器后为什么是 IP+3 08/16 15:15
- [tiger888] 鼓励一下 08/12 13:35
- [mess] 坚持,努力,加油! 08/12 11:21
[ 12sunfeng34 发表于 2010-08-16 15:15 ]
mov ax,bx sub ax,bx 读取指令缓冲器后为什么是 IP+3
[ beichenyibei 发表于 2010-08-17 09:54 ]
不好意思,我错了。
我以为像“mov 寄存器,数据”这种ip都是加三,就想当然的以为“mov 寄存器,寄存器”也是ip+3了,这种应该是ip+2才是。
谢谢您的指正,不胜感激。不过,为什么这种的指令长度只要2个字节就够了呢?