8086的复位与启动 CPU执行指令的步骤
CPU执行指令的步骤
-
取指令
将CS和IP的内容通过地址加法器得到指令的物理地址,经地址译码器选址后将指定单元中的指令取入CPU的IR当中。 -
译码
ID对IR中的指令进行译码,分析指令的操作码(执行什么操作)和操作数(具体数,存放位置),以及操作结果的存放位置,并由控制器向存储器,运算器等有关部件发出指令所需要的微命令,如:取操作数,运算等。 -
执行:
- 如果操作数在CPU内部的寄存器中,则直接将操作数送往运算器
- 如果操作数在存储器中,则由控制器根据指令给出的地址,从指定的存储单元取得操作数,经数据暂存器送往运算器。
- 如果操作结果要写入存储器,由控制器根据写入地址,将数据经由数据暂存器写入指定的存储单元,或者按照指令要求写入CPU内部的寄存器。
- 修改指令指针
IP的内容自动修正(根据DF来决定加还是减)指向要执行的下一条指令。遇到转移指令时,控制器会把转移地址送入IP来更新内容
RESET信号
当CPU接收到有效的RESET信号且至少维持4个时钟周期,不管之前在执行什么动作,只要正常供电,8086就结束现行操作,进入复位状态,直到RESET信号失效。在复位状态下,CPU内部的各寄存器被置为缺省值。
寄存器 | 复位后默认值 |
---|---|
CS | FFFFH |
IP | 0000H |
DS,SS,ES | 0000H |
FLAGs | 0000H |
指令队列 | 清空 |
其他寄存器 | 0000H |
缺省的CS和IP的内容,通过地址加法器得到FFFF0H,这就是复位后的第一条指令地址。
FFFF0H处存放了一条无条件转移指令,用来转移到固化在主板BIOS里的一段系统程序的入口。这样,系统一旦被启动仍自动进入程序,开始正常工作。
复位时,FR被清空,IF = 0, 此时不接受INTR信号