80X86微处理器

1.8086/8088简介

  • 8086/8088是Intel系列的16位微处理器,有16根数据引脚,一次可以存取8位或者16位的数据。

数据总线:计算机各个组成部件进行数据传送时的公共通道。8086和8088唯一区别是:8088的外部数据总线为8位,而8086为16位。
地址总线:对存储器或IO端口进行访问时,传送由CPU提供的要访问的存储单元或IO端口的地址信息总线。8086有20根地址线,可一次直接访问2^20=1M大小的存储单元。

2. 8086/8088内部结构

2.1 总线接口单元BIU

  • 总线接口单元BIU是负责完成CPU和存储器或IO设备之间的数据传送。具体任务如下:

    1. 读指令。当指令队列未满时,BIU从内存取出后续指令,同时不影响执行单元EU的执行,两者并行工作,提高了CPU执行速度。
    2. 读操作数。BIU根据EU给出的地址从内存或者外设端口读取数据供EU使用。
    3. 写操作数。EU将执行结果有BIU送往指定的内存单元或者外设端口。

2.2总线结构单元的结构

  • 总线接口单元有4个16位段寄存器,分别为代码段寄存器CS(code segment),数据段寄存器DS(data segment),堆栈段寄存器,和附加数据段寄存器ES(extra segment),1个16位的指令指针寄存器*IP(instruction pointer),1个20位的地址加法器,1个6字节指令队列缓冲器*,一个与执行单元EU通信的内部寄存器以及总线控制电路。

2.2.1 指令指针寄存器IP(instruction pointer)

  • 指令指针寄存器IP用来存放下一条要读取的指令在代码段中的偏移地址
  • IP在程序运行中能自动加1修正,从而使其始终存放下一条要读取的指令在代码段的偏移地址。
  • 用户程序不能读和写的IP的值。

2.2.2 地址加法器

地址加法器产生20位的地址信息,以便访问1M大小的内存空间。

- 逻辑地址:表达式为”段地址:段内偏移地址”。段内偏移地址又称为“有效地址”(EA, effective address)。
1. 在读指令时,段地址由代码段寄存器CS提供,当前要读取指令在代码段中的偏移位置由指令指针寄存器IP提供。
2. 在读取或存储操作数时,段地址由DS、ES、SS提供,段内偏移地址由指令给出。
- 物理地址:物理地址 = 段地址 × 10H + 段内偏移地址。段地址乘以10H相当于将其左移4位,在加上四位的段内偏移地址,就可以得到内存的准确物理地址。

2.2.3 指令队列缓冲器

8086的指令队列有6个字节,8088有4个字节,当其未满时,则将下一条要执行的指令从内存单元读入指令队列,然后以“先进先出”的原则,按顺序存放并按顺序取到执行单元EU中去执行。

2.2.4 段寄存器

8086CPU有20根地址引脚而用来提供地址信息的段寄存器都是16位的,所以8086采用段结构的内存管理方法。

将指令代码和数据分别存储在代码段,数据端,堆栈段,附加数据段中,分别由CS、DS、SS、ES提供,而代码或数据在段内的偏移地址则由有关寄存器或立即数形式的偏移地址给出。
  • CS(code segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。CS**左移四位加上指令中存储器IP**的内容就是下一条要读取指令在存储器中的物理位置。 CS复位后的状态为FFFFH
  • DS(data segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。DS**左移四位加上指令中存储器的寻址方式给出的偏移地址**得到数据段指定单元进行读写的位置。
  • SS(stack segment)称为堆栈段寄存器,用来存放程序当前使用的堆栈段的段地址。SS按照“先入后出”的原则,用于调用子程序或者执行中断服务程序时保护断点和现场
  • ES(extra segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。

3. 8086/8088寄存器结构

8086/8088CPU内部有14个16为寄存器,分为通用寄存器(8个),段寄存器(4个),控制寄存器(2个)。上面介绍过段寄存器了,下面介绍剩余的寄存器。

3.1 通用寄存器

通用寄存器包括4个数据寄存器、两个地址指针寄存器和两个变址寄存器。

3.1.1 数据寄存器AX、BX、CX、DX

数据寄存器一般用来存放参与运算的操作数和运算结果。每个寄存器都是16位,但是又可以分为高8位和低8位作为两个寄存器来使用。高8位为AH、BH、CH、DH,低8位分别为AL、BL、CL、DL。虽然这四个数据寄存器都是用来存放数据,但是都有自己的特定用途。

  • AX(Accumulate)称为累加器。用于存放运算结果可使指令简化,提高指令的执行速度。另外,所有的IO指令都使用该寄存器与端口交换信息。
  • BX(Base)称为基址寄存器。用于存放操作数在内存中数据段内的偏移地址。8086 CPU还有一个基址寄存器叫BP(base pointer),用于存放操作数在堆栈段内的偏移地址。
  • CX(Counter)称为计数器。用于存放循环程序的循环次数,可是程序指令简化,提高程序的运行速度。
  • DX(Data)称为数据寄存器。用于存放IO端口地址。还可以与AX一起存放一个双字长的操作数,DX存放高16位。

3.1.2地址指针寄存器SP、BP

  • SP(stack pointer)称为堆栈指针寄存器。在对堆栈进行操作时,每一次进栈或出栈操作,系统都会将SP的内容减2或者加2,使其始终指向栈顶
  • BP(base pointer)称为基址寄存器。可以用来存放数据,跟重要用来存放堆栈段内的偏移地址。(BX也被称为基址寄存器)

3.1.3变址寄存器SI、DI

  • SI(source index)称为源变址寄存器。通常存放源串数据段内的偏移地址。
  • DI(destination index)称为目的变址寄存器通常存放目的串附加数据段内的偏移地址。

3.2控制寄存器

  • 控制寄存器就是指令指针寄存器IP(instruction pointer),用来存放下一条要读取的指令咋代码段内的偏移地址。
  • FLAGES称为标志寄存器,是一个16位的寄存器,只用其中9位,包括6位状态标志位和3位控制标志位

80x86系统微处理器简介相关推荐

  1. 第二章 80x86微处理器简介

    第二章 80x86微处理器简介 2.第二章 80x86微处理器简介 本章小结 本章需要记住的两个很重要的知识点 2.1 Intel微处理器 8086内部结构 80386内部结构 CPU访存过程 2.2 ...

  2. 1.嵌入式系统的简介

    1.嵌入式系统的简介 1.1 课程规划与学习方法 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,但同时也是最难以掌 握的学科之一,很多踌躇满志的同学最终没能成为一名合格的嵌入式工程师,很大 ...

  3. [译]5.1. System Initialization Overview 系统初始化简介

    目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html   [不提供插图,读者最好从网上下载源书] 5.1. Syste ...

  4. 分布式缓存系统Memcached简介与实践(.NET memcached client library)

    原文:分布式缓存系统Memcached简介与实践(.NET memcached client library) 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加 ...

  5. LoadRunner系统架构简介与运行原理

    1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...

  6. Win:Win系统下安装Linux的Ubuntu系统的简介、安装之详细攻略

    Win:Win系统下安装Linux的Ubuntu系统的简介.安装之详细攻略 目录 安装图文教程 1.Ubuntu镜像下载 2.设置空间 3.下载并安装Ultraiso软碟通工具 4.及时备份 5.BI ...

  7. NodeJS开源系统Mili简介

    NodeJS开源系统Mili简介 mili是一个开源的社区系统,界面优雅,功能丰富. 已在米粒网 得到应用,你完全可以用它来搭建自己的社区.mili的前端使用vue.iview等技术来开发,后端使用t ...

  8. 第二课 SS7信令系统网络简介

    第二课 SS7信令系统网络简介 课程目的: 描述SS7信令网络的基本元素: 信令点(SSP,SCP,STP) 链路和链路集 路由和路由集 计算一条信令链路的信息传输容量 论述SS7信令拓普结构的可靠性 ...

  9. 医院PACS系统之简介

    系列文章目录 第一章 医院PACS系统之简介 文章目录 系列文章目录 一.PACS是什么? 二.PACS系统作用 三.PACS系统覆盖科室 四.PACS系统对接的设备 五.PACS业务流程 5.1. ...

最新文章

  1. IoU、GIoU、DIoU、CIoU损失函数的那点事儿
  2. ubuntu自动登录tty1(shell,text)配置
  3. C语言 读取文件内容
  4. 2018java多线程面试题_2018JAVA面试题附答案
  5. c语言结构体易错点,C语言结构体注意点
  6. mysql怎么实现生日字段前一个小时提醒_MySql学习笔记(二) 索引的设计和使用...
  7. 巧用加密方法保障电子邮件系统安全
  8. Spring中的@ImportResource
  9. 自定义Flutter控件
  10. linux mint 14 shurufa
  11. golang string转int8_golang一般常用数据类型转换总结
  12. reactNative之react-native-picker
  13. Nordic Blue Tooth
  14. Windows访问samba:\\IP不行,那就\\IP\共享名
  15. SQL 数据定义语句(DDL)
  16. elementUI_drawer踩坑_抽屉关闭问题
  17. 十二属相配对与最佳配偶
  18. 移动硬盘插入提示需要格式化RAW_移动硬盘怎么分区,硬盘分区教程学习
  19. gimp 抠图_GMIC(gimp 快速抠图)V1.5.2.4 免费版
  20. 领导邀请一起跳槽?搞清楚这5件事再决定

热门文章

  1. 移动通信网络中的无线电通讯原理
  2. 计算机目录排版的文章,自动生成目录,论文排版看这一篇就够了
  3. Dedecms 5.7 SP2后台广告管理处getshell
  4. 烧脑难题:诡异的世界9大悖论
  5. ABP框架—后台:后台程序发布至IIS(6)
  6. 为什么局域网IP通常以192.168开头而不是1.2或者193.169?
  7. SharePoint 2010 电子书下载网站推荐
  8. 前端将0到1的小数值转换成百分比
  9. 微信用计算机,技巧:计算机可以使用微信吗?
  10. 耗电排行Android,揪出Android手机电老虎!耗电应用排行