鱼C论坛

 找回密码
 立即注册
查看: 2939|回复: 4

监测点2.3的一个问题,迷糊了!头有点晕!

[复制链接]
发表于 2011-11-5 17:51:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zhoutong 于 2011-11-5 17:52 编辑

下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP的值是多少?
Mov ax,bx
sub ax,ax
jmp ax

第一,这里面的ax和bx没有一个固定的值这个怎么算?
第二 CS:IP把地址段和偏移地址送到地址加法器(地址段 * 16 + 偏移地址 = 物理地址) 然后在送到输入输出控制电路,输入输出控制电路把20位地址经过地址总线送到内存并找到地址,然后经过数据总线又到输入输出控制电路,输入输出控制电路把找到的地址送到指令缓冲器,指令缓冲器把找到的地址送到执行控制器,最后执行控制器把找到的地址赋给AX。
按照这个思路我的思想是
先把bx的值移动到ax然后是ax的值减去ax的值赋给ax最后修改ip的值依次循环!?
这个怎么求没有具体的数值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-5 18:06:38 | 显示全部楼层
本帖最后由 yipwing 于 2011-11-5 18:11 编辑

你管他有没有值,cpu认的是指令..
mov ax,bx 第一次
sub ax,ax 第二次
jmp ax IP第三次   
第四次在jmp后的地方
补充下: IP指向的是下条指令...  那么cpu修改IP也就是执行指令后修改IP...
注意题目的问题...

既然这样,我把答案给你吧..
第一次:读取mov ax,bx之后  
第二次:读取sub ax,ax之后  
第三次:读取jmp ax之后  
第四次:执行jmp ax修改IP

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-5 19:08:31 | 显示全部楼层
上面说的有道理~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-5 19:14:01 | 显示全部楼层
Mov ax,bx(只修改一次IP)
sub ax,ax(只修改一次IP)
jmp ax(加入指令缓冲器修改一次IP,执行后又修改一次IP)
所以一共4次修改IP
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-5 19:49:32 | 显示全部楼层
谢谢版主老大!
我明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表