- 论坛徽章:
- 0
|
在翻看微机原理过程中,有介绍微机简化结构模型下,取指和执行周期
时钟脉冲由环形计数器来驱动,T0-T5共6个时钟
在 地址阶段(T0 = 1)时候,将 PC内容送入 MAR中(MAR中同时会进入到 PROM中)
在 存储节拍(T1 = 1)时候,将 PROM中由PC送来的地址码指定内存内容送到 IR中,同时 IR会将 IR高4位数据送至 控制部件中
在 增量节拍(T2 = 1)时候,PC加1
以上三个是取指周期,将指令获取到 IR中,对于任何指令都相同
剩下三个是执行周期
在 T3 = 1时候,(现在假设是 LDA,load 数据到 AL中)控制部件分析高四位后得知是一个 LDA指令,于是将 IR中的低四位重新发送到 MAR中,最后到达 PROM中来获取 ROM中的对应数据
在 T4 = 1时候,将 PROM中对应的数据发送到 AL中
在 T5 = 1时候,对于该 LDA是个空闲的时钟周期
以上的是针对简化结构来说明的
对于 8086架构中,看到其中没有类似 PC或者 IR的寄存器
想问,对于 8086或者后续的 x86,其过程是否也是类似的
因为对于8086中,有IP(指令指针寄存器)。我们知道,一般 IP是指向下一个将会需要执行的代码(该代码存储于内存中)
比如对于下面的一个反汇编代码:
- 1000:0 b8 00 00 mov ax,0 ax=0 ip指向1000:3
- 1000:3 e8 01 00 call s pop ip ip指向1000:7
- 1000:6 40 inc ax
- 1000:7 58 s:pop ax ax=6
复制代码 理论上,在cpu读取完 call s指令后,ip就会指向下一条内存中的代码 inc ax的地址
因为现在是 call指令,所以会执行 push ip, jmp s的动作,跳到 s去执行
然后在s位置执行完后,会使用ret来返回到call s的下一条指令位置来继续执行,也就是 inc ax的位置来执行。通过 pop ip的方式来恢复压栈后的 ip来完成
这些是我们比较笼统的来解释的
那么,如果对应到这个取指然后执行周期来说明的话,对于8086系统为例,应该是怎么样的一个过程呢???其中是否还会有 PC,IR寄存器的参与?? |
|