前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(一)

汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(一)

作者头像
青木
发布2018-05-28 15:36:08
1.1K0
发布2018-05-28 15:36:08
举报
文章被收录于专栏:我是业余自学C/C++的

<1>.初始状态:这时,CS:2000H,IP:0000H,CPU将从内存2000H×16+0000H处取指令执行。

初始状态.jpg
初始状态.jpg

<2>.CS、IP中的内容送入地址加法器,由地址加法器完成: 物理地址=段地址×16+偏移地址

CS、IP中的内容送入地址加法器.jpg
CS、IP中的内容送入地址加法器.jpg

<3>.由地址加法器将物理地址送入输入输出控制电路。

物理地址被送入输入输出控制电路.jpg
物理地址被送入输入输出控制电路.jpg

<4>.输入输出控制电路将物理地址20000H送上地址总线

物理地址被送上地址总线.jpg
物理地址被送上地址总线.jpg

<5>.从内存20000H单元开始存放的机器指令B8 23 01通过数据总线被传入CPU

机器指令被送入CPU.jpg
机器指令被送入CPU.jpg

<6>.输入、输出控制电路将机器指令B8 23 01送入指令缓冲器。

机器指令被送入指令缓冲器.jpg
机器指令被送入指令缓冲器.jpg

<7>.读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。此时,CS:IP指向内存单元2000:0003。

读取指令后IP中的值自动增加.jpg
读取指令后IP中的值自动增加.jpg

<8>.执行控制器指令:B8 23 01,即执行命令mov ax,0123H

执行指令.jpg
执行指令.jpg

<9>.指令B8 23 01 执行后,AX中的内容为0123H;此时,CPU将从内存单元2000:0003读取指令。

执行指令结果.jpg
执行指令结果.jpg

下面的一组图展示了8086CPU继续读取、执行3条指令的过程。注意IP计划。

<10>.初始情况之二,这时CS:2000H,IP:0003H,CPU将从内存2000H×16+0003H处读取指令:BB 03 00。

初始情况之二.jpg
初始情况之二.jpg

<11>.CPU从内存20003H处读取指令BB 03 00入指令缓冲器,IP中的值加3.

第二条指令被读入指令缓冲器.jpg
第二条指令被读入指令缓冲器.jpg

<12.>执行指令:BB 03 00(即mov bx,0003H)的情况,BX中的内容为0003H

第二条指令执行情况.jpg
第二条指令执行情况.jpg

<13.>CPU从内存20006H处读取指令89 D8入指令缓冲器,IP的值加2

第三条指令被读入指令缓冲器.jpg
第三条指令被读入指令缓冲器.jpg

. <14.>执行指令89 D8(即mov ax,bx)后的情况,AX中的内容为0003H

第三条指令执行情况.jpg
第三条指令执行情况.jpg

<15.>CPU从20008H处读取指令01 D8如指令缓冲器,IP的值加2

第四条指令被读入指令缓冲器.jpg
第四条指令被读入指令缓冲器.jpg

<16>.执行指令01 D8(即add ax,bx)后的情况,AX中的内容变成0006H

第四条指令执行情况.jpg
第四条指令执行情况.jpg

通过上面的过程展示,8086CPU的工作过程可以简要描述如下:

  • 从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器
  • IP=IP+所都取指令的长度,从而指向下一条指令
  • 执行指令。转到第一步,重复这个过程。

在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=F000H,IP=FFFFH,即在8086PC刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下面的一组图展示了8086CPU继续读取、执行3条指令的过程。注意IP计划。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档