主要内容:
1、80×86微处理器简介
2、8086/8088微处理器
3、8086/8088存储器和I/O组织
一,80×86微处理器简介
80×86微处理器是美国Intel 公司生产的系列微处理器。该公司成立于1968年,1969年就设计了4位的4004 芯片,1973年开发出8位的8080芯片,1978年正式推出16位的8086微处理器芯片,由此开始了Intel公司的80×86系列微处理器的生产历史。本节简要介绍Intel公司80×86系列微处理器的发展过程及其特性。
下面通过对表中有关技术数据的分析来说明Intel 80×86系列微处理器的发展情况。
表中关键词:
集成度:指CPU芯片中所包含的晶体管数,单位为万/片;
主频:指芯片所使用的主时钟频率,它直接影响计算机的运行速度;
数据总线:是计算机中各个部件间进行数据传送时的公共通道;
内数据总线宽度:指CPU芯片内部数据传送的宽度(位数);
外数据总线宽度:指CPU与外部交换数据时的数据宽度;
注:数据总线位数越多,数据交换的速度越快。
地址总线:指在对存储器或I/O端口进行访问时,传送由CPU提供的要访问的存储单元或I/O端口的地址信息的总线。其宽度决定了处理器能直接访问的主存容量的大小。如:8086有20根地址线,使用这20根地址线上不同地址信息的组合,可直接对2^20=1M个存储单元进行访问;Pentium II 有36根地址线,因此它可以直接寻址的最大地址范围为2^36=64GB。
为了满足微型计算机对存储器系统高速度、大容量、低成本的要求,目前,微型计算机系统采用三级存储器组织结构,即由高速缓冲存储器Cache、主存和外存组成。
主存 ——当前正在执行的程序或要使用的数据必须从外存调入主存后才能被CPU读取并执行,主存容量通常为MB级;
外存——当前没有使用的程序可存入外存,外存的容量通常很大,可达GB甚至TB级;
Cache(高速缓冲存储器)——最大特点是存取速度快,但容量较小,通常为KB级,将当前使用频率较高的程序和数据通过一定的替换机制从主存放入Cache,CPU在取指令或读取操作数时,同时对Cache和主存进行访问,如果Cache命中,则终止对主存的访问,直接从Cache中将指令或数据送CPU处理,由于Cache的速度比主存快得多。
高速缓冲存储器Cache的使用,大大减少了CPU读取指令和操作数所需的时间,使CPU的执行速度显著提高。
80386之前的CPU都没有Cache。80386 CPU内无Cache,而由与其配套使用的Intel 82385 Cache 控制器实现CPU之外的Cache管理。80486之后的CPU芯片内部都集成了一至多个Cache。
需要说明的是,80x86CPU在发展过程中,存储器的管理机制发生了较大变化。8086/8088CPU对存储器的管理采用的是分段的实方式;80286CPU除了可在实方式下工作外,还可以在保护方式下工作;而80386CPU之后的处理器则具有三种工作方式:实方式、保护方式和虚拟8086方式。
保护方式:在保护方式下,机器可提供虚拟存储管理和多任务管理机制。虚拟存储的实现,为用户提供了一个比实际主存空间大得多的程序地址空间,从而可使用户程序的大小不受主存空间的限制。多任务管理机制的实现,可允许多个用户或一个用户的多个任务同时在机器上运行。
虚拟方式:在这种方式下,一台机器可以同时模拟多个8086处理器的工作。
80×86微处理器详解
8086是Intel系列的16位微处理器。使用HMOS工艺制造,芯片上集成了2.9万个晶体管,用单一的+5V电源供电,封装在标准的40引脚双列直插式管壳内,时钟频率5MHz10MHz。
8086有16条数据总线,可以处理8位或16位数据。有20条地址总线,可以直接寻址1M(220)字节的存储单元和64K个I/O端口。在8086推出后不久,为方便原8位机用户,Intel公司很快推出了8088微处理器,其指令系统与8086完全兼容,CPU内部结构仍为16位,但外部数据总线是8位的,这样设计的目的主要是为了与原有的8位外围接口芯片兼容。并以8088为CPU组成了IBM PC、PC/XT等准16位微型计算机,由于其性能价格比高,很快占领了市场。
二,8086/8088内部结构
从功能上讲,8086CPU内部结构可分为两个独立的部分,并进行重叠操作。
1、总线接口单元BIU(Bus Interface Unit)——负责完成CPU与存储器或I/O设备之间的数据传送。
2、执行单元EU(Execution Unit)——不与系统外部直接相连,它的功能只是负责执行指令。
1,总线接口单元BIU
功能:负责完成CPU与存储器或I/O设备之间的数据传送。
任务:
① 读指令——指令队列出现空字节(8088 1个空字节,8086 2个空字节)时,从内存取出后续指令。BIU取指令时,并不影响EU的执行,两者并行工作,大大提高了CPU的执行速度。
② 读操作数——EU需要从内存或外设端口读取操作数时,根据EU给出的地址从内存或外设端口读取数据供EU使用。
③ 写操作数——EU的运算结果、数据或控制命令等由BIU送往指定的内存单元或外设端口。
构成:
1)、4个16位段寄存器:代码段寄存器CS(Code Segment)、数据段寄存器DS(Data Segment)、堆栈段寄存器SS(Stack Segment)和附加数据段寄存器ES(Extra Segment);
2)、一个16位的指令指针寄存器IP(Instruction Pointer);
3)、一个20位地址加法器;
4)、6字节指令队列缓冲器;
5)、一个与EU通讯的内部寄存器以及总线控制电路等。
各部件功能详解:
1)段寄存器
2)指令指针寄存器
3)20位地址加法器
4)指令队列缓冲器
2,执行单元EU
功能:不与系统外部直接相连,它的功能只是负责执行指令。
任务:执行的指令从BIU的指令队列缓冲器中直接得到,执行指令时若需要从存储器或I/O端口读写操作数时,由EU向BIU发出请求,再由BIU对存储器或I/O端口进行访问。
构成:
1). 16位算术逻辑单元(ALU):进行算术和逻辑运算。
2). 16位标志寄存器FLAGS:存放CPU运算的状态和控制标志。
3). 数据暂存寄存器:暂存参加运算的数据
4). 通用寄存器:包括4个16位数据寄存器AX、BX、CX、DX和 4个16位指针与变址寄存器SP、BP与SI、DI。
5). EU控制电路:它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。
3,8086/8088CPU内部结构的差异
二者内部结构基本相似,执行单元EU完全相同,其指令系统、寻址方式及程序设计方法都相同。区别仅在于总线接口单元BIU,归纳起来主要有以下几个方面的差异:
1).外部数据总线位数不同。8086外部数据总线16位,8088外部数据总线8位。
2).指令队列缓冲器大小不同。8086指令队列可容纳6个字节;而8088指令队列只能容纳4个字节。
3). 部分引脚的功能定义有所区别。
三,8086/8088寄存器结构
注意
有关寄存器,尤其是在存储器寻址时用来存放操作数在段内偏移地址的地址寄存器和标志寄存器中各控制标志位的使用方法,将在后续章节中涉及到时还将进一步详细介绍,请读者务必熟练掌握。**
1,通用寄存器
通用寄存器(8个):包括四个数据寄存器AX(AH/AL), BX(BH/BL),CX(CH/CL),DX(DH/DL),两个地址指针寄存器(SP,BP)和两个变址寄存器(SI,DI)。
1).数据寄存器AX、BX、CX、DX
数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是16位的,但又可将高、低8位分别作为两个独立的8位寄存器来用。高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL,CL,DL。注意,8086/8088 CPU的14个寄存器除了这4个16位寄存器能分别当作两个8位寄存器来用之外,其它寄存器都不能如此使用。
AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。
CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度
DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
2)地址指针寄存器SP、BP
SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
3)变址寄存器SI、DI
SI(Source Index)称为源变址寄存器。DI(Destination Index)称为目的变址寄存器。这两个寄存器通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。
2,段寄存器
为了对1M个存储单元进行管理,8086/8088对存储器进行分段管理,即将程序代码或数据分别放在代码段、数据段、堆栈段或附加数据段中,每个段最多可达64K个存储单元。段地址分别放在对应的段寄存器中,代码或数据在段内的偏移地址由有关寄存器或立即数给出。
段寄存器是为实现“段加偏移”寻址基址而设置的。
CS(Code Segment)——代码段寄存器。用来存储程序当前使用的代码段的段地址。CS的内容左移四位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。
DS(Data Segment)——数据段寄存器。用来存放程序当前使用的数据段的段地址。DS的内容左移四位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。
SS(Stack Segment)——堆栈段寄存器。用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按先进后出原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。
ES(Extra Segment)——附加数据段寄存器。用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。
8086CPU有20条地址线,具有寻址1MB存储空间。
8086/8088指令中给出的地址仅有16位,指针寄存器和变址寄存器也只有16位,不能寻址1MB的内存空间。
用8086/8088CPU内部一组16位段寄存器内容作为段地址,再由段寄存器左移4位形成20位的段起始地址,称为段基地址或段基址。这样8086/8088可寻址1MB存储空间。
将1MB存储空间分成若干个逻辑段,使每个逻辑段的长度为64KB
8086/8088段寄存器与提供段内移地址的寄存器之间的默认组合
3,控制寄存器
IP(Instruction Pointer)——指令指针寄存器。用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。
FLAGS——标志寄存器。它是一个16位的寄存器,但只用了其中9位,这9位包括6个状态标志位,3个控制标志位,如图所示。
1). 状态标志位(6位)
状态标志位用来反映算术和逻辑运算结果的一些特征。下面分别介绍这6个状态标志位的功能。
CF(Carry Flag)——进位标志。当进行加减运算时,若最高位发生进位或借位则CF为1,否则为0。通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。
PF(Parity Flag)——奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。
AF(Auxiliary Flag)——辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0。
ZF(Zero Flag)——零标志位。若当前的运算结果为0,则ZF为1,否则为0。
SF(Sign Flag)——符号标志位。当运算结果的最高位为1时,SF=1,否则为0。
OF(Overflow Flag)——溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。用来判断带符号数运算结果是否溢出。
2)控制标志位(3位)
用来控制CPU的操作,由程序设置或清除。它们是:
TF(Trap Flag)——跟踪(陷阱)标志位。是为测试程序的方便而设置。若将TF置1,CPU处于单步工作方式。
IF(Interrupt Flag)——中断允许标志位。是用来控制可屏蔽中断的控制标志位。若将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求;若用CLI指令将IF清0,则禁止CPU接受可屏蔽中断请求信号。
DF(Direction Flag)——方向标志位。若将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;否则按增地址方式进行。
四,总线周期
略略略
五,8086/8088引脚及其功能
1,8086CPU引脚
2,8086最小工作方式及引脚24-31
3,8086最大工作方式及引脚24-31
六,8088与8086引脚区别
略略略
七,8086/8088存储器和I/O组织
详情参见我的博客:
https://blog.csdn.net/rdgfdd/article/details/79797007