<1>.初始状态:这时,CS:2000H,IP:0000H,CPU将从内存2000H×16 0000H处取指令执行。
<2>.CS、IP中的内容送入地址加法器,由地址加法器完成: 物理地址=段地址×16 偏移地址
<3>.由地址加法器将物理地址送入输入输出控制电路。
<4>.输入输出控制电路将物理地址20000H送上地址总线
<5>.从内存20000H单元开始存放的机器指令B8 23 01通过数据总线被传入CPU
<6>.输入、输出控制电路将机器指令B8 23 01送入指令缓冲器。
<7>.读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。此时,CS:IP指向内存单元2000:0003。
<8>.执行控制器指令:B8 23 01,即执行命令mov ax,0123H
<9>.指令B8 23 01 执行后,AX中的内容为0123H;此时,CPU将从内存单元2000:0003读取指令。
下面的一组图展示了8086CPU继续读取、执行3条指令的过程。注意IP计划。
<10>.初始情况之二,这时CS:2000H,IP:0003H,CPU将从内存2000H×16 0003H处读取指令:BB 03 00。
<11>.CPU从内存20003H处读取指令BB 03 00入指令缓冲器,IP中的值加3.
<12.>执行指令:BB 03 00(即mov bx,0003H)的情况,BX中的内容为0003H
<13.>CPU从内存20006H处读取指令89 D8入指令缓冲器,IP的值加2
. <14.>执行指令89 D8(即mov ax,bx)后的情况,AX中的内容为0003H
<15.>CPU从20008H处读取指令01 D8如指令缓冲器,IP的值加2
<16>.执行指令01 D8(即add ax,bx)后的情况,AX中的内容变成0006H
通过上面的过程展示,8086CPU的工作过程可以简要描述如下:
- 从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器
- IP=IP 所都取指令的长度,从而指向下一条指令
- 执行指令。转到第一步,重复这个过程。
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=F000H,IP=FFFFH,即在8086PC刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。