80x86微处理器结构及其工作模式

来源:本网整理

80X86微处理器系列是美国Intel公司从20世纪70年代开始研制的微处理器的总称。我们先简单介绍80X86微处理器的发展概况,然后简要说明基于微处理器8086的计算机系统构成,最后将根据汇编语言编程的需要分节介绍8086微处理器的基本组成、8086寄存器组、存储器和外部设备。1.从8080/8085到80868086是1978年Intel公司推出的16位微处理器。与其前一代8位微处理器8080/8085相比,8086有如下几点进步:(1)8086有16位数据总线,处理器与外部传送数据时,一次可传送16位二进制数,而8080/8085一次只能传送8位。(2)8086的寻址空间从8080/8085的64K字节提高到1M字节。(3)8086采用了流水线技术,而8080/8085是非流水线结构。在一个具有流水线结构处理器的系统中,可以实现处理器的内部操作与存储器或I/O接口之间的数据传送操作重叠进行,从而提高了处理器的性能。2.从8086到80888086的内部寄存器、功能部件、数据通路以及对外的数据总线均为16位宽度,它的出现是计算机技术上一个很大的进步。但是,当时已有的微处理器外围配套芯片的数据总线都是8位的,为了使用这些8位的外围芯片组成系统,Intel公司又推出了8088微处理器。8088的内部结构与8086基本相同,也提供16位的处理能力,但对外的数据总线设计成8位。1981年IBM公司选择8088微处理器作为核心来设计IBM PC微计算机系统,推向市场后获得了巨大的成功,为后来的80x86系列微处理器成为主流微计算机的处理核心打下了基础。3.80286、80386到Pentium微处理器由于用户对PC机性能的要求迅速提高,Intel公司在1982年推出了80286微处理器,它仍然是16位结构。80286的内部及外部数据总线都是16位的,但它的地址线是24位的,可寻址16M字节的存储空间。80286有两种工作方式,即实模式和保护模式。实模式与8086工作方式相同,但速度比8086快。保护模式除了仍具有16M字节的存储器物理地址空间外,她还能为每个任务提供1G(230)字节的虚拟存储器地址空间。保护方式把操作系统及各任务所分配到的地址空间隔离开,避免程序之间的相互干扰,保证系统在多任务环境下正常工作。80386是1985年研制出的一个32位微处理器,内部及外部数据总线均为32位,地址线也为32位,因此它可处理4G(232)字节的物理存储空间。80386为每个任务提供的虚拟存储空间增加到64T(246)字节。1989年Intel公司又研制出新一代的微处理器80486,80486芯片内除了有一个与80386相同结构的主处理器外,还集成了一个浮点处理部件FPU以及一个8K字节的高速缓冲存储器(cache),使80486的计算速度和总体性能比80386有了明显的提高。1993年Intel公司又推出了Pentium微处理器,此后几乎每两年就推出一个新型号,至今市场上的Intel微处理器已是PentiumⅣ。由此可见,微处理器芯片的发展速度是非常快的。在微处理器的发展过程中,芯片主频越来越快,寻址空间越来越大,数据和地址总线也越来越宽,加之许多体系结构方面的改进措施,如流水线结构、存储器层次结构等,使微计算机的性能大大提高,其应用领域也更加广泛www.zgxue.com防采集请勿采集本网。

80X86是一系列微处理器

微处理器又称为中央处理单元,即CPU,是一块集成电路芯片。它是微型计算机的核心组成部分。

随着计算机技术的发展,微处理器的结构越来越复杂,采用的新技术越来越多,功能也越来越强。但本节所采用的最简单化的CPU模型,在描述CPU基本工作原理及组成中并不失有效性和正确性。二、微处理器的分类

既然微处理器是微型计算机的核心,那么我们有必要先来简单地讨论一下微型计算机。

微型计算机:

1、实地址方式:具有32条地址线的微处理器只有低20条地址线起作用,能寻址1M字节的物理地址。实地址方式和保护虚地址方式的区分是由控制寄存器CR0的最低位PE位决定的。若PE位为0,则工作在实地址方式;若

微型计算机是指以微处理器为核心,配上存储器、输入/输出接口电路等所组成的计算机(又称为主机)。

微型计算机在结构形式上总是采用总线结构,即构成微机的各功能部件(微处理器、存储器、I/O接口电路等)之间通过总线相连接,这是微型计算机系统结构上的独特之处。采用总线结构之后,使系统中各功能部件

微型计算机系统是指以微型计算机为中心,配以相应的外围设备、电源和辅助电路(统称硬件)以及指挥电路工作的系统软件所构成的系统。即,与一般的计算机系统一样,微型计算机系统也是由硬件和软件两部分组成的。

PC技术就是计算机硬件技术 全国计算机等级考试三级PC技术考试大纲-基本要求 1.具有计算机及其应用的基础知识。2.熟悉80X86微处理器的结构、原理及其宏汇编语言程序设计。3.掌握个人计算机的工作

这里写图片描述

下面,我将介绍一些微型计算机系统中所涉及的基本概念,可能每个概念之间暂时没有很明显的关联,但是,本着不用就不提的原则,尽量将所提到的知识点都串起来形成一个易于理解的简单知识框架。

CPU从最初发展至今已经有二十多年的历史了,这期间,按照其处理信息的字长,CPU可以分为:4位微处理器、8位微处理器、16位微处理器、32位微处理器以及最新的64位微处理器,可以说个人电脑的发展

就像大脑控制着人工作一样,

CPU控制着整个计算机的运作并进行运算。要想让一个CPU工作就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时所说的内存(以下如果没做特别声明,所提到的存储器就是指内存)。磁盘不同于内存,如果磁盘上面的数据或程序不被读入内存,就无法被CPU使用。

指令和数据是应用上的概念,指令和数据没有任何区别,都是二进制信息。 CPU在工作时把有的信息看作指令,有的信息看作数据,为同样的信息赋予了不同的含义。

存储单元:存储器被划分成若干个存储单元,一个存储单元存储一个字节的信息,也就是8个二进制位。

有以下单位换算:

1B = 8个二进制位1KB = 1024B1MB = 1024KB1GB = 1024MB1TB = 1024GB

每个存储单元从0开始顺序编号,这些编号可以看作存储单元在内存中的地址。如下图是一个拥有128个存储单元的存储器:

这里写图片描述

CPU工作时经常要从内存中读取数据或者向内存中写入数据,这个过程需要CPU和存储器之间进行地址信息、数据信息和控制信息交互。

那么,CPU是通过什么将这三种信息传到存储器芯片中的呢?电子计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。

在计算机中有专门连接CPU和其他芯片的导线,通常称为总线。总线从物理上来讲,就是一根根导线的集合。根据传送信息的不同,总线从逻辑上又分为地址总线、控制总线和数据总线三类。

总线可以是带状的扁平电缆线,也可以是印刷板上一层极薄的金属连线。

CPU从内存单元读取数据的过程如下图:

这里写图片描述

(1)CPU通过地址线将地址信息3发出

(2)CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。

(3)存储器将3号单元中的数据08通过数据线送入CPU。

写操作与读操作类似!如向3号单元写入数据2,则步骤为:

(1)CPU通过地址线将地址信息3发出。

(2)CPU通过控制总线发出内存写命令,选中存储器芯片,并通知它,要向里面写数据。

(3)CPU通过数据总线将数据2送入内存的3号单元中。

下面我们来简单介绍一下这三种总线,

地址总线AB:在对存储器或I/O端口进行访问时,传送由CPU提供的要访问的存储单元或I/O端口的地址信息。AB是单向总线。

一个CPU有N根地址线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找2的N次方个内存单元。

数据总线DB:CPU与内存或其他器件之间的数据传送是通过数据总线来完成的,数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个字节。8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。

例如,CPU想向内存中写入数据89D8。

因为8088一次只能传送一个字节的数据也就是8位,所以它要分两次传送,第一次传送D8,第二次传送89。但是8086有16根数据总线,可以传送两个字节的数据,所以可一次性将数据89D8传入内存。DB是双向总线

控制总线CB:控制总线是一些不同的控制线的集合。有多少根控制总线就意味着CPU提供了对外部器件的多少种控制,控制总线的宽度决定了CPU对外部器件的控制能力。

我们知道,CPU由运算器(ALU)、控制器(CU)和内部寄存器(R)三部分组成。

控制器:

控制器是全机的指挥中心,它负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以完成程序所要求的功能。控制器包括以下几个部分:

a.指令寄存器IR:用来存放从存储器取出的将要执行的指令码。

当执行一条指令时,先把它从内存取到数据缓冲寄存器DR中,然后再传送到指令寄存器IR中。

b.指令译码器ID:对指令寄存器IR中的指令操作码字段进行译码,以确定该指令执行什么操作。

需要说明的是,指令通常由操作码和操作数两部分组成。操作码表示该指令完成的操作,操作数表示参加操作的数本身或操作数所在地址。

c.可编程逻辑阵列PLA:用于产生取指令和执行指令所需要的各种微操作控制信号,并经过控制总线CB送往有关部件,使计算机完成相应的操作。

内部寄存器:

1)程序计数器PC:程序计数器有时也被称为指令指针(IP),IP一般都是由CPU自动修改加一,使其总是存放下一条要执行的指令所在存储单元的地址。但当遇到跳转等改变程序执行顺序的指令时,PC(IP)将从指令寄存器IR

中的地址字段得到。

2)地址寄存器AR:用来存放正要取出的指令的地址或操作数的地址。

3)数据缓冲寄存器DR:用来暂时存放指令或数据。它是CPU和内存、外部设备之间信息传送的中转站,用来补偿CPU和内存、外围设备之间在操作速度上存在的差异。

4)累加器:用来暂时存放ALU运算结果。

5)标志寄存器FLAGS:有时也称为程序状态字(PSW)。编写程序时,可以通过测试有关标志位的状态(1或0)来决定程序的流向。

6)寄存器阵列:寄存器阵列实际上就相当于CPU内部的RAM,可避免CPU频繁的访问存储器,提高机器的运行速度。不同类型的CPU的寄存器阵列规模大小会有所不同。

CPU还有一个组成部分是运算器(算数逻辑单元ALU),运算器的主要作用就是运算嘛,参加运算的两个操作数一个来自累加器A,一个来自内部数据总线,可以是缓冲寄存器中的内容,也可以是寄存器阵列中某个寄存器中的内容。

在这里我们对内存的描述就只是在需要用到某个概念的时候就简单介绍一下,由于它所含信息量过多,这儿不做详细的说明。

在每个PC机中,都有一个主板。主板上有核心器件和一些主要器件,这些器件通过总线相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接卡口。

CPU对外部设备都不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展槽上的接卡口。扩展槽通过总线和CPU相连,所以接卡口也通过总线和 CPU相连。CPU通过总线向接卡口发送命令,接卡口根据命令控制外设工作。

好了,对于微型计算机的硬件我们就先简单介绍到这里,主要描述了主机上的CPU所涉及到的一些硬件概念。对于系统中的其他硬件例如,外围设备,以及主机上的存储器、I/O接口与输入输出设备等。

同时,软件也是微型计算机系统不可缺少的组成部分,软件包括系统软件和用户(应用软件)。系统软件是不需要干预的,为其他程序的开发、调试以及运行等建立一个良好环境的程序。它主要包括操作系统和系统应用程序。

微型计算机的工作过程:

1) 把第一条指令所在存储单元的地址赋给程序计数器PC。

2)取址,得到指令

3)对指令的操作码字段进行译码,发出执行指令的微操作控制信号。

4)执行指令,完成指令所规定的操作。

对微型计算机系统做了一些简单的了解以后,我们对微处理器的工作情景也就更为熟悉,让我们先来看一幅处理器内部寄存器的轮廓图。

这里写图片描述

这块儿说明一下,做图片的时候由于考虑不周,图片比例没调好,显示出来特别小,可以把缩放率调大一点再看图,例如,Ctrl + 四下,哈哈!!

我们注意到上述多次提到段地址、段寄存器,这两个名词中包含者“段”这个概念,下面我们就来简单说明一下,什么是段。

8086CPU用 基础地址(段地址×16)+偏移地址 = 物理地址 的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。

为了防止不理解,我这里再重申一遍。也就是说,实际内存中并没有分段,段的划分来自于CPU,只是CPU自己用段地址和偏移地址来表示物理地址而已。

以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段。这里的编程指的是汇编语言编程。需要注意的是,由于段地址×16必然是16的倍数,所以一个段的起始地址也一定是16的倍数。偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

那么,基础地址为什么一定要是 段地址×16不是乘其他数呢?由于地址总线是20位的,所以CPU在对内存访问时,必须提供一个20位的地址信息给地址总线。又因为段地址存放在16位的段寄存器中,所以必须×16(10H),即左移四位才能使之变成20位的基础地址,再加上偏移量就能定位到具体的物理内存单元了。

本来想着用一篇博客的内容就把8086微处理器大致介绍完,但是写着写着才发现牵扯的内容实在太多,一不小心就跑远了。下面我以从功能上划分8086微处理器为结尾,暂时先把简单概念介绍到这里,至于具体的堆栈操作以及中断和工作模式等概念和它们所用到的一些基础的汇编语言指令,只好在下篇再作介绍。

CPU从功能上可分为两大部分:

1.总线接口单元BIU:

总线接口单元BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送。

2.执行单元EU:

执行单元不与系统外部直接相连,它的功能只是负责执行指令。执行的指令从BIU的指令缓冲队列中直接得到。执行指令时若需要从存储器或I/O端口读写操作数,由EU向BIU发出请求,再由BIU对存储器或I/O端口进行访问。

总之就是,BIU负责与系统外部交互,EU负责一心一意的执行指令。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    本文转载自the_scent_of_th_soul博客,版权归the_scent_of_th_soul所有

    高级语言不需要对计算机的硬件有太多的了解就可以学习的语言,可移植性比较好;汇编语言属于低级语言,它和计算机的硬件组织有关,首先,掌握CPU、存储器、外设的工作原理;其次,掌握汇编语言的指令和伪指令的格式、功能、使用方法;最后,掌握程序设计结构、设计方法。你有什么问题可以提出来,我会尽力帮助你回答的内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved