汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(一)
2018-02-09 00:00
253 查看
<1>.初始状态:这时,CS:2000H,IP:0000H,CPU将从内存2000H×16+0000H处取指令执行。
![](http://upload-images.jianshu.io/upload_images/104057-1ef65836e5e60bf4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<2>.CS、IP中的内容送入地址加法器,由地址加法器完成:
物理地址=段地址×16+偏移地址
![](http://upload-images.jianshu.io/upload_images/104057-ddace71ccdcb5af0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<3>.由地址加法器将物理地址送入输入输出控制电路。
![](http://upload-images.jianshu.io/upload_images/104057-3ae8a3bef1625fc8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<4>.输入输出控制电路将物理地址20000H送上地址总线
![](http://upload-images.jianshu.io/upload_images/104057-345310fbad6fc1b9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<5>.从内存20000H单元开始存放的机器指令B8 23 01通过数据总线被传入CPU
![](http://upload-images.jianshu.io/upload_images/104057-d8e29616399269fc.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<6>.输入、输出控制电路将机器指令B8 23 01送入指令缓冲器。
![](http://upload-images.jianshu.io/upload_images/104057-e21d83bddfaa58cb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<7>.读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。此时,CS:IP指向内存单元2000:0003。
![](http://upload-images.jianshu.io/upload_images/104057-2c343c2332a93671.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<8>.执行控制器指令:B8 23 01,即执行命令mov ax,0123H
![](http://upload-images.jianshu.io/upload_images/104057-56fa10f6627b2440.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<9>.指令B8 23 01 执行后,AX中的内容为0123H;此时,CPU将从内存单元2000:0003读取指令。
![](http://upload-images.jianshu.io/upload_images/104057-62af72381d802423.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/104057-990910f20b449e0b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<11>.CPU从内存20003H处读取指令BB 03 00入指令缓冲器,IP中的值加3.
![](http://upload-images.jianshu.io/upload_images/104057-ccb3df2813841431.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<12.>执行指令:BB 03 00(即mov bx,0003H)的情况,BX中的内容为0003H
![](http://upload-images.jianshu.io/upload_images/104057-b22acbc2f5846a96.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<13.>CPU从内存20006H处读取指令89 D8入指令缓冲器,IP的值加2
![](http://upload-images.jianshu.io/upload_images/104057-3f007531c5d50a43.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
.
<14.>执行指令89 D8(即mov ax,bx)后的情况,AX中的内容为0003H
![](http://upload-images.jianshu.io/upload_images/104057-06ade8bf65ca8321.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<15.>CPU从20008H处读取指令01 D8如指令缓冲器,IP的值加2
![](http://upload-images.jianshu.io/upload_images/104057-fcb9fbb8b86b0358.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<16>.执行指令01 D8(即add ax,bx)后的情况,AX中的内容变成0006H
![](http://upload-images.jianshu.io/upload_images/104057-ce33647dbfcce6fb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过上面的过程展示,8086CPU的工作过程可以简要描述如下:
从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器
IP=IP+所都取指令的长度,从而指向下一条指令
执行指令。转到第一步,重复这个过程。
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=F000H,IP=FFFFH,即在8086PC刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。
![](http://upload-images.jianshu.io/upload_images/104057-1ef65836e5e60bf4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<2>.CS、IP中的内容送入地址加法器,由地址加法器完成:
物理地址=段地址×16+偏移地址
![](http://upload-images.jianshu.io/upload_images/104057-ddace71ccdcb5af0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<3>.由地址加法器将物理地址送入输入输出控制电路。
![](http://upload-images.jianshu.io/upload_images/104057-3ae8a3bef1625fc8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<4>.输入输出控制电路将物理地址20000H送上地址总线
![](http://upload-images.jianshu.io/upload_images/104057-345310fbad6fc1b9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<5>.从内存20000H单元开始存放的机器指令B8 23 01通过数据总线被传入CPU
![](http://upload-images.jianshu.io/upload_images/104057-d8e29616399269fc.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<6>.输入、输出控制电路将机器指令B8 23 01送入指令缓冲器。
![](http://upload-images.jianshu.io/upload_images/104057-e21d83bddfaa58cb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<7>.读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。此时,CS:IP指向内存单元2000:0003。
![](http://upload-images.jianshu.io/upload_images/104057-2c343c2332a93671.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<8>.执行控制器指令:B8 23 01,即执行命令mov ax,0123H
![](http://upload-images.jianshu.io/upload_images/104057-56fa10f6627b2440.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<9>.指令B8 23 01 执行后,AX中的内容为0123H;此时,CPU将从内存单元2000:0003读取指令。
![](http://upload-images.jianshu.io/upload_images/104057-62af72381d802423.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
下面的一组图展示了8086CPU继续读取、执行3条指令的过程。注意IP计划。
<10>.初始情况之二,这时CS:2000H,IP:0003H,CPU将从内存2000H×16+0003H处读取指令:BB 03 00。![](http://upload-images.jianshu.io/upload_images/104057-990910f20b449e0b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<11>.CPU从内存20003H处读取指令BB 03 00入指令缓冲器,IP中的值加3.
![](http://upload-images.jianshu.io/upload_images/104057-ccb3df2813841431.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<12.>执行指令:BB 03 00(即mov bx,0003H)的情况,BX中的内容为0003H
![](http://upload-images.jianshu.io/upload_images/104057-b22acbc2f5846a96.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<13.>CPU从内存20006H处读取指令89 D8入指令缓冲器,IP的值加2
![](http://upload-images.jianshu.io/upload_images/104057-3f007531c5d50a43.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
.
<14.>执行指令89 D8(即mov ax,bx)后的情况,AX中的内容为0003H
![](http://upload-images.jianshu.io/upload_images/104057-06ade8bf65ca8321.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<15.>CPU从20008H处读取指令01 D8如指令缓冲器,IP的值加2
![](http://upload-images.jianshu.io/upload_images/104057-fcb9fbb8b86b0358.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<16>.执行指令01 D8(即add ax,bx)后的情况,AX中的内容变成0006H
![](http://upload-images.jianshu.io/upload_images/104057-ce33647dbfcce6fb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过上面的过程展示,8086CPU的工作过程可以简要描述如下:
从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器
IP=IP+所都取指令的长度,从而指向下一条指令
执行指令。转到第一步,重复这个过程。
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=F000H,IP=FFFFH,即在8086PC刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。
相关文章推荐
- 汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(二)
- [汇编语言]-第二章寄存器(CPU工作原理)
- 小甲鱼汇编语言006第二章 寄存器(CPU工作原理)01
- 汇编语言-第二章 寄存器(CPU工作原理)
- 【计算机体系结构】汇编语言--cpu工作原理(指令的读取、执行)
- 汇编语言学习——第二章 寄存器(CPU工作原理)
- 汇编语言01——寄存器(CPU的工作原理)
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 汇编语言-寄存器(CPU的工作原理)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 读王爽老师汇编语言笔记---寄存器(cpu工作原理)
- 汇编语言笔记02-寄存器(CPU工作原理)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12
- 汇编语言之寄存器(CPU工作原理)
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12
- 寄存器(CPU工作原理)01 - 零基础入门学习汇编语言06
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 寄存器(CPU工作原理)01 - 零基础入门学习汇编语言06