|
主题 : : 检测点2.3 [已解决] |
回复[ 6次 ]
点击[ 521次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-01-17 19:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
我分析 CPU三次修改IP 在读入指令后执行指令前,最后的IP是0012H 请问对吗 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-01-17 20:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
CPU四次修改了IP的值,第一次是mov ax,bx执行之后。第二次是sub ax,ax执行之后,第三次执行jmp ax之后,而最后一次是由jmp ax执行的结果所影响,修改了ip的值。 最后的IP还是不懂 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-01-17 21:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
知道最后的ip=ax就行了。
这里有一个sub指令,是减法的意思。sub ax,ax执行后ax=0,所以知兴亡最后jmp指令后 ip=0 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-01-17 22:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
回复:[第2楼]
------------------
谢谢mess。我终于搞懂了! sub指令我学过,竟然没想到 ,晕了晕了
之前有人的解释是 bx如果没有赋值那么它就是0000H , 所以ip是0000H
我觉得还是mess的更有道理。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-01-17 22:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
第一次是mov ax,bx执行之后。第二次是sub ax,ax执行之后,第三次执行jmp ax之后,
---------------
错误,ip改变的时候错了。是读取之后。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-01-17 22:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
对对。你说的对。 是1 .先读取 然后
2.ip=ip+所读取指令的长度
3.执行指令
这个上的一点逻辑错误,足以说明理解上存在的问题,谢谢mess的纠正 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-01-18 20:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
此贴由 贴主 于 [ 2009-01-18 20:24 ] 结贴。 结贴原因:问题已解决 | | |