. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  一道检测题的疑问  [已解决] 回复[ 7次 ]   点击[ 554次 ]  
maxm
[帖 主]   [ 发表时间:2009-02-19 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
1000:0 mov ax,8 
          1000:3 jmp ax 
          1000:5 mov ax,0 
          1000:8 mov bx,ax 
          1000:10 jmp bx 
          CPU从1000:0处开始执行指令当执行完1000:10处的指令后CPU几次修改IP_____。
    1、     4 
    2、     5 
    3、     6 
    4、     7 

答案6次 
可我有点怀疑:说从1000:0处开始执行 那说明第一条指令已经在指令缓冲器中了,所以本人认为是5条
如果这样问:CPU   要   从1000:0处开始执行指令,当执行完1000:10处的指令后CPU几次修改IP_____。
这个要字必须要加呀,要不然怎么理解呢?
maxm
[第1楼]   [ 回复时间:2009-02-19 21:58 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
更正:所以本人认为是5条 -->所以本人认为是5次      写错字了
mouse
[第2楼]   [ 回复时间:2009-02-20 10:02 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
可我有点怀疑:说从1000:0处开始执行 那说明第一条指令已经在指令缓冲器中了,
--------------------
我觉得不对,说从1000:0处开始执行,只能说当前cs:ip已经指向了1000:0,而不能说已经把1000:0处的指令读入缓冲区了。

把当前cs/ip指向内存的指令读入缓冲区是“执行此指令”时候的操作,而从1000:0处开始执行也就是还没有执行1000:0处的指令。
maxm
[第3楼]   [ 回复时间:2009-02-20 11:14 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
回复:[第2楼]
------------------
只能说当前cs:ip已经指向了1000:0,而不能说已经把1000:0处的指令读入缓冲区了。

------------------

既然当前cs:ip已经指向了1000:0 ,那此时指令缓冲器中的内容应该是 mov ax,8 的上条指令呀。
如果说此时缓冲器中的指令为mov ax,8 的话,当前的ip 就应该是 jmp ax 的偏址

书中2.9~2.12 小结 :
-------------
8086cpu的工作过程: 
1. 从cs:ip 指向的内存单元读取指令,读取的指令进入指令缓冲器;
2. ip指向下一条指令;
3. 执行指令。转到步骤 1
younggay
[第4楼]   [ 回复时间:2009-02-20 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
楼主这么理解问题有点钻牛角尖了。
我们还说这个程序没法执行呢,格式都不对,你说是不是?
题目有题目的表达局限和特点。这种讨论多说无益。
maxm
[第5楼]   [ 回复时间:2009-02-20 11:52 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
回复:[第4楼]
------------------
那我问你:当前ip是0 ,那么指令缓冲器中的指令是哪条?

这是读和执行的先后问题,而并非一点益处都没有。
而就本题目来说,同时是ip修改次数的问题,
也就是答案的不同。
当然答案可以商贾,但通不过检测题就有点郁闷。容易让人产生怀疑。
mouse
[第6楼]   [ 回复时间:2009-02-20 12:55 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
8086cpu的工作过程:  
1. 从cs:ip 指向的内存单元读取指令,读取的指令进入指令缓冲器; 
2. ip指向下一条指令; 
3. 执行指令。转到步骤 1
===============
这个没错。

CPU从1000:0处开始执行指令
----------------
应该理解成当系统设置了cs:ip指向了1000:0的这个时刻。所以下一个时刻才是从cs:ip 指向的内存单元读取指令,而读入指令之后ip的改变是应该算在改变次数之内的。
怎么也得给cpu一个“时间静止”吧~
maxm
[第7楼]   [ 回复时间:2009-02-20 21:31 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
此贴由 贴主 于 [ 2009-02-20 21:31 ] 结贴。 结贴原因:问题已解决
得分情况: 4楼(younggay):2分   6楼(mouse):10分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved