. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2.3  [已解决] 回复[ 6次 ]   点击[ 521次 ]  
squaaa
[帖 主]   [ 发表时间: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  请问对吗
squaaa
[第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还是不懂
mess
[第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
squaaa
[第3楼]   [ 回复时间:2009-01-17 22:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34
回复:[第2楼]
------------------
谢谢mess。我终于搞懂了! sub指令我学过,竟然没想到 ,晕了晕了

之前有人的解释是 bx如果没有赋值那么它就是0000H , 所以ip是0000H

我觉得还是mess的更有道理。
mess
[第4楼]   [ 回复时间:2009-01-17 22:17 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
第一次是mov ax,bx执行之后。第二次是sub ax,ax执行之后,第三次执行jmp ax之后,
---------------
错误,ip改变的时候错了。是读取之后。
squaaa
[第5楼]   [ 回复时间:2009-01-17 22:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34
对对。你说的对。 是1 .先读取  然后
                   2.ip=ip+所读取指令的长度 
                   3.执行指令
这个上的一点逻辑错误,足以说明理解上存在的问题,谢谢mess的纠正
squaaa
[第6楼]   [ 回复时间:2009-01-18 20:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34
此贴由 贴主 于 [ 2009-01-18 20:24 ] 结贴。 结贴原因:问题已解决
得分情况: 4楼(mess):10分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved