微机原理及应用8086微处理器_第1页
微机原理及应用8086微处理器_第2页
微机原理及应用8086微处理器_第3页
微机原理及应用8086微处理器_第4页
微机原理及应用8086微处理器_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用——8086微处理器本章内容8086微处理器编程结构引脚信号和工作模式操作和时序存储器组织和I/O组织总线接口部件执行部件工作过程总线周期引脚信号最小模式最大模式系统的复位和启动总线操作中断操作和中断系统8086的存储器组织8086的I/O组织16位微处理器80861 8086/8088微处理器内部结构2 8086/8088微处理器中的内部寄存器3 8086/8088微处理器外部基本引脚与工作模式4 8086/8088的存储器组织58086CPU的工作时序6系统总线的形成地址信号标志寄存器指令寄存器数据暂存器控制电路指令译码器地址寄存器指令指针寄存器R1R2R3R4寄存器组运算器IP数据信号控制信号ALUALU控制器CPU结构示意图EU控制器ALU暂存器标志寄存器8位队列总线总线控制逻辑内部总线16位20位地址总线16位数据总线123456指令队列通用寄存器AXAHALBXBHBLCXCHCLDXDHDL

SPBPDISICSDSSSES80888086IP内部暂存器8086总线8086/8088CPU内部结构图总线接口部件BIU执行部件EU地址加法器8086的编程结构——总线接口部件

1.段寄存器

CS代码段寄存器

保存当前执行程序所在段的段基址DS数据段寄存器

保存数据段的段基址。数据段是用来保存当前程序中的操作数和变量。SS堆栈段寄存器

保存有堆栈段的段基址

ES附加段寄存器

进行字符串操作时,作为目的段地址使用,是一种附加的数据区,若要使用附加段,必须对ES置初值。在附加段中,DI寄存器用于存放附加段的偏移量。2.指令指针寄存器IP用来存放将要取出指令的偏移地址,每执行一条指令,IP增量大小与已执行指令的字节长度有关。程序以代码的形式存在于存储器中,每一条指令都有一个存放地址,IP总要指向下一条将要执行的指令地址。3.地址加法器

产生20位的物理地址。物理地址=段基址×16+偏移量4.内部暂存器用于内部数据的暂存,该部分对用户透明,用户无权访问。8086的编程结构——总线接口部件8086的编程结构——总线接口部件5.指令队列缓冲器8088为4字节,8086为6字节。为FIFO(先进先出)结构。指令队列至少保持有一条指令,且只要有一条指令,EU就开始执行;若EU要进行M/IO存取数据,BIU在执行完现行取指操作周期后进行。当执行转移指令时,EU要求BIU从新的地址中重新取指。队列中原有指令被清除。新取得的第一条指令直接送EU执行,随后取得的指令填入队列6.输入/出控制电路

输入/出控制电路控制CPU与外部电路的数据交换。8086的编程结构——执行部件1.数据寄存器组功能:存放操作数和中间结果。AXBXCXDXAHALBHBLCHCLDHDL累加器存放参加运算的操作数和运算结果,所有寄存器均可作累加器,有些指令约定AX(AL)寄存器为累加器,如乘法、除法、I/O出指令。基址寄存器计算地址时用作基地址寄存器,用于扩展寻址,起变址作用。计数寄存器在某些指令中作隐含的计数器,如循环操作、串操作及移位操作等。数据寄存器存放操作数和列表数据,在某些I/O操作期间,用来保存I/O端口地址,在乘除运算中有专用。寄存器用途AX字乘法,字除法,字I/OAL字节乘,字节除,字节I/O,十进制算术运算AH字节乘,字节除BX转移CX串操作,循环次数CL变量移位,循环控制DX字节乘,字节除,间接I/O8086的编程结构——执行部件2.地址寄存器组SPBPDISI堆栈指针寄存器访问堆栈段的栈顶单元。堆栈区基地址寄存器对堆栈段寄存器相对寻址的基地址寄存器,可访问堆栈段的任意单元。源变址寄存器目的变址寄存器3.控制寄存器IPPSW

IP指令指针寄存器用来控制CPU的指令执行顺序,它和代码段寄存器CS一起可以确定当前所要取的指令的内存地址。

PSW标志寄存器用来存放8086CPU在工作过程中的状态。8086的编程结构——执行部件8086的编程结构——执行部件OFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0

PSW唯一能按位操作的寄存器只定义了其中9位,另外7位未定义(不用)6位状态标志:OF、SF、ZF、PF、CF、AF3位控制标志:DF、IF、TF反映指令对数据作用之后,结果的状态(不是结果本身)。这些状态将控制后续指令的执行。10001101001101100011001000011001+0110011010101001运算结果最高位为1∴SF=1;例:2个数相加后,分析各标志位的值第三位向第四位有进位 ∴AF=1;次高位向最高位有进位,最高位向前没有进位,∴OF=10=1最高位没有进位∴CF=0;低8位中1的个数为偶数个∴PF=1;运算结果本身≠0∴ZF=0;10001101001101100011001000011001-0010110010001100运算结果最高位为0 ∴SF=0;例:2个数相减后,分析各标志位的值第三位向第四位没有借位 ∴AF=0;次高位向最高位没有借位,最高位向前没有借位,∴OF=00=0最高位没有借位 ∴CF=0;低8位中1的个数为奇数个∴PF=0;运算结果本身≠0 ∴ZF=0;CPU通过总线完成与存储器、I/O端口之间的操作,这些操作统称为总线操作。总线周期数据总线DB控制总线

CB地址总线AB存储器I/O接口输入设备I/O接口输出设备CPU1、执行一个总线操作所需要的时间称为总线周期。总线周期2、一个基本的总线周期通常包含4个T状态,按时间的先后顺序分别称为T1、T2、T3、T4。

总线周期T1T2T3T4CLK总线周期1、执行一条指令所需要的时间称为指令周期。执行一条指令的时间是取指令、执行指令、

取操作数、存放结果所需时间的总和。用所需的时钟周期数表示。指令周期2、不同指令的执行时间(即指令周期)是不同的;

同一类型的指令,操作数不同,指令周期也不同。例

MOVBX,AX2个T周期

MULBL70~77个T周期

MOV[BX],AX14个T周期指令周期例2

执行ADD[BX],AX包含:1)取指令存储器读周期

2)取(DS:BX)内存单元操作数存储器读周期

3)存放结果到(DS:BX)内存单元存储器写周期例1

执行MOVBX,AX包含:取指令存储器读周期3、

执行指令的过程中,需从存储器或I/O端口读取或存放数据,故一个指令周期通常包含若干个总线周期。指令周期4、8086CPU取指令、执行指令分别由BIU、EU完成取指和执行指令可是并行的,故8086CPU的指令周期可以不考虑取指时间。

指令周期8086/8088微处理器——引脚功能8086/8088引脚结构图12345678910111213141516171819204039383736353433323130292827262524232221GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD*HLDA*WR*M/IO*DT/R*DEN*ALE*INTA*TESTREADYRESET8086AD15~AD0

地址/数据复用总线引脚,双向,分时复用构造总线必须加锁存器,8088的高8位不做复用,地址引脚是单向的。A16/S3~A19/S6

地址/状态复用引脚,单向,分时复用。8086最多可访问64K个I/O端口。

S5=1,允许可屏蔽中断S5=0,禁止一切可屏蔽中断

S4S300ES01SS10CS11DSS6=0,8086/8088当前与总线相连8086/8088微处理器——引脚功能NMI

非屏蔽中断,输入,边沿触发,上升沿有效。当该引脚出现有效信号时,CPU执行完指令后,立即响应中断,不受IF影响,也不受软件影响,中断类型号是2。INTR

可屏蔽中断,输入,电平触发(或边沿触发),高电平有效。

CPU在执行每一条指令的最后一个时钟周期采样该引脚,若为高电平(若IF=1),则响应中断。INTA中断响应信号、输出、低电平有效。发给请求中断请求设备的回答信号。一般发送两个负脉冲信号,第一个通知外设,第二个通知中断源送出中断矢量码(即读取矢量码的选通信号)8086/8088微处理器——引脚功能ALE

地址所存允许信号、输出、高定平有效。

MN/MX

最小/最大模式控制信号,输入。该引脚固定接到+5V电源时,CPU处于最小工作模式,如果接地,CPU处于最大工作模式。8086/8088微处理器——引脚功能CLK

时钟信号,输入

CPU和总线控制的基准定时脉冲,一个时钟周期内具有1/3有效高电平(即占空比33%),8086/8088频率为5MHz、8086-2频率为8MHz、8086-1为10MHz等,CPU的所有操作都是在时钟同步下进行的。RESET

复位信号,输入,高电平有效。

8086/8088要求复位信号至少维持4个时钟周期的高电平,以完成CPU内部寄存器的复位操作。8086/8088微处理器——引脚功能READY

“准备就绪”信号,输入,高电平有效。用来使CPU和慢速的存储器(或I/O设备)之间的速度匹配。为避免失误设备送来的READY信号,必须先经过时钟发生器8284,与时钟CLK同步后,再送入CPU的READY引脚。

8086/8088微处理器——引脚功能DEN

数据允许信号,输出,低电平有效。在最小模式时,做8286/8287的选通信号。DT/R

数据发送/接收信号,输出。当数据总线需要双向驱动时,用来做方向控制;当为高电平时,则进行数据发送,当为低电平则为数据接收。M/IO

存储器/外设控制信号,输出。当M/IO为高电平时,表示CPU访问存储器,若为低电平时,表示CPU执行输入/出(IN\OUT)指令对外设进行访问8086/8088微处理器——引脚功能WR

写信号、输出,低电平有效。

当CPU执行存储器或I/O写操作指令时,WR为低电平RD

读信号、输出,低电平有效。

当CPU执行存储器或I/O读操作指令时,RD为低电平。HOLD

总线保持请求信号,输入,高电平有效。

当系统中其它模块或部件需要占用总线时,向CPU发出申请。HLDA

总线请求回答信号,输出,高电平有效。

HLDA=1,表示CPU同意让出总线BHE/S7

高8位数据总线允许/状态复用引脚,输出。在T1时刻,输出低电平,表示总线高8位AD15~AD8上的数据有效。在T2~T4,输出S7状态。BHE与A0组合,可对存储器读写时的数据格式实现控制。10010BHEAD7~AD00AD15~AD8从奇地址读/写一个字1AD15~AD8从奇地址/或端口读/写一个字节1AD7~AD0从偶地址/或端口读/写一个字节0AD15~AD0从偶地址读/写一个字0所用的数据线操作A08086/8088微处理器——引脚功能无效110写存储器010读存储器100取指令000暂停111写I/O011读I/O101中断响应001操作SS0DT/RIO/M8086/8088微处理器——引脚功能TEST

测试信号,输入,低电平有效。

当执行WAIT指令时,每隔5个时钟周期,CPU就对该引脚采样,若为高电平,就使CPU重复执行WAIT指令而处于等待状态,直到变为低电平,CPU脱离等待继续执行下一条指令。该引脚与WAIT配合,可以实现CPU与外设同步工作。GND、Vcc地和电源

8086和8088均用单一的+5V电压,有两条地线。8086CPU工作模式8086CPU的两种工作模式最小工作模式(单CPU系统)最大工作模式(多CPU系统)8086CPU最大模式控制信号引脚

(1)S2、S1、S0(BusCycleStatus)总线周期状态,三态输出。(2)LOCK

总线封锁信号,三态输出,低电平有效。(3)RQ/GT1,RQ/GT0(Request/Grant)总线请求/总线请求允许信号,双向,低电平有效。(4)QS1、QS0(InstructionQueueStatus)指令队列状态信号,输出。总线状态8086最小模式和最大模式的比较1)不同之处

最小模式下系统控制信号直接由8086CPU提供;最大模式下因系统复杂,芯片数量较多,为提高驱动能力和改善总线控制能力,大多数的系统控制信号由总线控制器8288提供。2)相同之处:

8086的低位地址线与数据线复用,为保证地址信号维持足够的时间,需使用ALE信号将低位地址线锁存(通过锁存器8282),以形成真正的系统地址总线。

系统复位和启动操作

8086CPU的RESET引脚上出现高电平时,终止所有操作,直到RESET信号变为低。

在这期间,CPU内各寄存器被初始化为复位状态。8086存储器结构8086/8088系统有20根地址总线,它可以直接寻址的存储器单元数为220=1Mb,而微处理器中所有的寄存器都是16位的如何实现16位的存储单元存放20位的地址空间?

存储器分段具体做法是,将1M字节的存储空间分成许多逻辑段,每段最长64K字节单元,可以用16位地址码进行寻址。连续逻辑段A段B段C段D段E段00000H10000H20000H30000H40000H……实际(物理)存储器分离完全重叠部分重叠8086存储器结构220-1=FFFFFH220-2=FFFFEH00001H00003H00005H00000H00002H00004H512K×8(位)512K×8(位)奇地址存储体偶地址存储体(A0=1)(A0=0)8086存储器结构

如果一个字是从偶地址开始存放,这种存放方式称为对准存放,这样存放的字称为对准字。如果一个字从奇地址开始存放,这种存放方式称非对准存放,这样存放的字称为非对准字。8086CPU数据总线是16位,对于存取一个字节的操作,需要一个总线周期,对于存取一个偶地址字的操作,也是需要一个总线周期,而对于存取一个奇地址字的操作,则需要两个总线周期(CPU自动完成)。0000000001000020000300004000050000600007…FFFFEFFFFF0A43304B对准字非对准字8086存储器和总线连接D7~D0D15~D8A0A19~A1DBABBHED7~D0奇地址存储体SELA18~A0D7~D0偶地址存储体SELA18~A08086系统堆栈操作堆栈:后进先出的的一段内存栈顶:永远由地址指针(SS:SP)指示栈底:最初始的地址指针(SS:SP)指示处堆栈深度:最大64KB堆栈的作用:调用子程序(或转向中断服务程序)时,把断点及有关的寄存器、标志位及时正确地保存下来,并保证逐次正确返回堆栈操作指令:入栈指令PUSH与出栈指令POP入/出栈操作数:是一个字,而不是一个字节子程序调用指令或中断响应自动完成时,恢复断点地址由返回指令(RET或IRET)完成堆栈初始化操作堆栈段起始地址栈底及初始栈顶

地址存储单元10200H10202H10204H10206H10208H1020AH1020CH……10230H0011SS1020SP初值0030入栈操作栈顶PUSHAX

1234PUSHBX

1AB110200H10202H10204H10206H10208H……1022CH1022EH10230H0011

SS1020

SP0030栈底002E0030堆栈段起始地址12341AB1002E002C出栈操作栈顶POPAXPOPBX10200H10202H10204H10206H10208H……1022CH1AB11022EH123410230H0011

SS1020

SP002C(栈底)堆栈段起始地址002E0030

1AB1

12348086输入/输出结构

CPU是通过I/O端口与输入输出设备交换信息的。一般一个接口电路中可能有几个端口。地址总线的低16位可用来对8位I/O端口寻址,所以8086I/O空间最大为64K个8位I/O端口。任意两个地址连续的8位I/O端口,可以当作一个16位I/O端口,可以存放一个字。

8086有专门的输入指令(IN)和输出指令(OUT),用来访问I/O端口。I/O空间不分段,所有I/O端口均看作在一个段内。8086输入/输出结构I/O端口的编址方式有统一编址和独立编址两种。统一编址是与存储器一起编地址号,这样I/O端口占用存储器的一部分空间。独立编址是I/O端口与存储器分开编地址号,I/O端口不占用存储空间,但与存储空间有重合的部分。通常8086系统的I/O端与存储器有重合部分,但由于访问I/O端口的指令与访问存储器的指令不同,二者是可以区分的。I/O端口组织(a)存储器映像编址方式

存储单元地址00000H00001H……FF0FFHI/O端口地址FF100HFF101H……FFFFFH

特点:将端口看作存储单元,仅以地址范围的不同来区分两者。

优点:对端口的操作和对存储单元的操作完全一样,因此系统简单,并且对端口操作的指令种类较多。

缺点:CPU对存储单元和I/O端口的实际寻址空间都小于其最大寻址空间。存储单元地址00000H00001H……FF0FFHFF100HFF101H……FFFFFHI/O端口地址0000H0001H……F0FFHF100HF101H……FFFFH特点:系统视端口和存储单元为不同的对象。

优点:系统中存储单元和I/O端口的数量可以达到最大。缺点:需要专门的信号来指示系统地址线上出现的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论