![学习动态](images/model1/b8.gif)
![最新评论](images/model1/b1.gif)
- [tomato] 博主第一题对了,第二题博主不知道,别着急,随着课程的继续博主会知道答案的。@V@ 02/23 16:21
- [crazyman] 对头~~~ 02/14 14:22
- [memecha] starrynight 谢谢你的回答,,我想我之前的理解和你说的差不多,,,,,,,只是我不太肯 02/03 11:04
- [starrynight] 题目回答得很好 题都作出来了,正常情况下应该能够体会的,哈哈 我想,博主学到这里应该能够 02/02 23:24
- [huibian] [ip又会以 jmp指令的操作数所表达的值 被强制更新一次] -------- 这里你不用管他 02/02 09:35
- [huibian] CPU连续读取和执行指令的过程: (1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲 02/02 09:33
- [memecha] [ip又会以 jmp指令的操作数所表达的值 被强制更新一次] 这句还是不懂啊,,,什么操作数啊.. 01/28 13:17
- [游客] jmp指令就是 更改cs和ip的指令 读取jmp指令 ip自然会改变一次,执行jmp指令过程中 01/28 12:26
- [memecha] (执行mov ax,bx的时候,只改变ax和bx两个寄存器的内容,ip不发上改变。) 那你这道题是 01/28 12:20
- [mouse] 这个检测点就是最好的例子。 执行mov ax,bx的时候,只改变ax和bx两个寄存器的内容,i 01/28 11:42
[2008-01-27 17:26] 检测点2.3
(1,取BX的值到AX中的时候
2,sub 的时候,我不知道是什么指令
3,取AX的值和执行后分别变化一次)
最后是0000H)
说明:::::
估计那个SUB好像是减的意思,,所以得出了000h
对那个JMP AX为什么说IP变化两次,我是这样理解的
CPU工作是顺序进行的,,,所以说取了一条指令之后把它先放进了指令缓冲器,这时IP的值加3(按书上的例子的话)
执行后AX得到值.之后又取值,等下一个值被放入指令缓冲器的时候,IP有增加了,,,,接下来就是像BX中取值..
从第一次取指令到第二次取指令这一段才算是完成一次过程,,,,,所以说JMP AX这样的指令IP的值是要变化两次的,
取值一次,执行一次....呼呼
[ starrynight 发表于 2008-01-27 20:40 ]
指令的功能是什么,在这里我们不必深究
这个检测点的主旨是要大家认识感知CPU连续读取和执行指令的过程。
建议博主仔细学习2.10小节
CPU连续读取和执行指令的过程:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP = IP + 所读取指令的长度,从而指向下一条指令;
(3)执行指令。 转到步骤 (1),重复这个过程。
[ starrynight 发表于 2008-01-27 20:41 ]
你的表述有误,而且很混乱。
[ 游客 发表于 2008-01-27 22:28 ]
那你说...为什么说 jmp ax 这个指令就是IP要变换两次/?
为什么说在执行的时候还要算一次?难道不是我那样理解的吗?不是那样的话那是什么解释?
[ memecha 发表于 2008-01-27 22:28 ]
那你说...为什么说 jmp ax 这个指令就是IP要变换两次/?
为什么说在执行的时候还要算一次?难道不是我那样理解的吗?不是那样的话那是什么解释?
[ memecha 发表于 2008-01-27 22:32 ]
我2.10已经看了哈几遍了哈...但是哦就是那样理解的..不那样理解的话,,,,怎么才能能够得出上面那个结论啊?
[ startasm 发表于 2008-01-28 08:51 ]
觉得楼主不要被陷在里面了,“为什么说 jmp ax 这个指令就是IP要变换两次/? ”,问题的重点不在这,而是“CPU连续读取和执行指令的过程”;-)
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP = IP + 所读取指令的长度,从而指向下一条指令; ----------这里ip肯定会变吧
(3)执行指令。
----------这里ip是否会变是要看具体的指令的,后面会逐渐学到其他的一些改变ip的指令(不要深究jmp这个指令,主要是理解cpu的执行过程,这里jmp与其他两条指令的唯一不同是可以改变ip的值)
转到步骤 (1),重复这个过程。
[ memecha 发表于 2008-01-28 11:37 ]
(3)执行指令。
----------这里ip是否会变是要看具体的指令的,
那你给我举个例子啊
[ mouse 发表于 2008-01-28 11:42 ]
这个检测点就是最好的例子。
执行mov ax,bx的时候,只改变ax和bx两个寄存器的内容,ip不发上改变。
而指令jmp指令的时候,会改变ip寄存器的内容(把ax的值给ip)
详细的看看2.11和2.12
[ memecha 发表于 2008-01-28 12:20 ]
(执行mov ax,bx的时候,只改变ax和bx两个寄存器的内容,ip不发上改变。)
那你这道题是怎么得出IP变了4次的啊?那按你说的这个不变的话,那只有最后一条指令就变?变了4次?
[而指令jmp指令的时候,会改变ip寄存器的内容(把ax的值给ip)]
这个我知道会变啊,,但是我是不清楚怎么就说是变两次?本来就是取的石虎变了一次嘛,,,可是人说是执行的时候还变一次,,那我就问了,执行的时候怎么就还变啊?
[ 游客 发表于 2008-01-28 12:26 ]
jmp指令就是 更改cs和ip的指令
读取jmp指令 ip自然会改变一次,执行jmp指令过程中,ip又会以 jmp指令的操作数所表达的值 被强制更新一次
[ memecha 发表于 2008-01-28 13:17 ]
[ip又会以 jmp指令的操作数所表达的值 被强制更新一次]
这句还是不懂啊,,,什么操作数啊..举了例子啊///
另外为什么是强制啊?
[ huibian 发表于 2008-02-02 09:33 ]
CPU连续读取和执行指令的过程:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP = IP + 所读取指令的长度,从而指向下一条指令;
(3)执行指令。 转到步骤 (1),重复这个过程。
------
这个执行过程应该没有异议吧。
所以说这三条指令,再执行(1)(2)过程的时候都会更改ip,也就是说更改了3次。
再执行(3)过程的时候,只有jmp指令改变了一次ip,也就是说改了1次。
所以结果是4次更改ip。
[ huibian 发表于 2008-02-02 09:35 ]
[ip又会以 jmp指令的操作数所表达的值 被强制更新一次]
--------
这里你不用管他,后面就明白了。你只要根据书上的讲解,知道jmp指令会用ax的值更改ip的值就可以了。