£让莪饰蘾ん 发表于 2012-4-5 11:56:36

监测点2.3

下面的3条指令执行后,cpu几次修改ip?都是在什么时候,最后ip的值为什么等于0呢?
mov ax,bx
sub ax,ax
jmp ax
求列出详细解答,还有sup又是什么指令,
《业余爱好,活到老学到老嘛》不要骂我菜鸟哦,会很伤我的心的。最后就。。拜托了。。

乱闯 发表于 2012-4-5 11:56:37

修改了4次IP的值第一次mov ax,bx 第二次sub ax,ax将ax清零   第三次将ax的值设为IP第四次执行ax后   最后IP肯定为零啦又跳ax去了   你说的sup应该是sub把   是减法指令我也很菜、、、、、

£让莪饰蘾ん 发表于 2012-4-5 15:17:27

先谢谢你,那么就说sub ax,ax的意思就把ax中的值减去ax就等于0吗?

£让莪饰蘾ん 发表于 2012-4-5 15:18:41

先谢谢你,那么就说sub ax,ax的意思就把ax中的值减去ax就等于0吗?

loop 发表于 2012-4-5 15:39:48

£让莪饰蘾ん 发表于 2012-4-5 15:18 static/image/common/back.gif
先谢谢你,那么就说sub ax,ax的意思就把ax中的值减去ax就等于0吗?

对,就是AX中的值减去AX的值。

£让莪饰蘾ん 发表于 2012-4-5 15:43:55

loop 发表于 2012-4-5 15:39 static/image/common/back.gif
对,就是AX中的值减去AX的值。

您说的修改4次我就搞不懂了,不是3次吗?
假设CS=1485H,IP=0100H
1、读取第一条指令mov ax,bx,读入后IP=0100H,指令执行后,CS不变,IP=IP+2,IP=0102H
2、读取第二条指令sub ax,ax ,读入后IP=0102H,指令执行后,ax=0000H,CS不变,IP=IP+2,IP=0104H
3、读取第三条指令jmp ax ,读入后IP=0104H,指令执行后,CS不变,IP=0000H
在整个过程中,CPU共3次修改IP,最后IP中的值为:0000H

loop 发表于 2012-4-5 15:55:12

£让莪饰蘾ん 发表于 2012-4-5 15:43 static/image/common/back.gif
您说的修改4次我就搞不懂了,不是3次吗?
假设CS=1485H,IP=0100H
1、读取第一条指令mov ax,bx,读入后 ...

读入 jmp ax时,IP值会改变,才能执行jmp ax。

所以执行jmp ax时,ip值变化2次,一次是读入jmp ax,第2次是修改ax的值。

loop 发表于 2012-4-5 16:12:22

如果还不明白,请参考第2章,2.9~2.11小节,里面有8086CPU读取、执行指令的工作原理。

雨落的瞬间 发表于 2012-4-8 17:37:07

我也为着个题有点烦...

谢青源 发表于 2012-4-9 02:08:01

没什么的,弄懂原理什么都简单:P
页: [1]
查看完整版本: 监测点2.3