论坛第二章的“检测题”有一道题是这样的:
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多分析和解答都没有这样的让我明白,呵呵!希望别人的分析加上我的思考能帮助一些迷茫的人! |