第二章8086微处理器2.18086微处理器的内部结构2.28086微处理器的引脚功能2.38086CPU的工作模式2.48086CPU的基本总线时序同一时间处理二进制的位数即主频,数字脉冲信号震荡的速度2.18086微处理器的内部结构8086是Intel系列的16位微处理器,有16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间达220=1MB。时钟频率有5MHZ、8MHZ、10MHZ三种。有64KB个I/O端口,并且两个编号相邻的端口可以组合成一个16位端口。CPU的工作由执行部件(EU)和总线接口部件(BIU)两部分组成。一、执行部件(EU)EU=ExecutiveUnit负责指令的执行,包括通用寄存器、专用寄存器、标志寄存器及运算器(ALU)等部分组成。1.通用寄存器组AX,BX,CX,DX:存放16位数据或地址AH,AL,BH,BL,CH,CL,DH,DL:8位寄存器注意:(1)用于8位寄存器使用时只可存放数据,不能存放地址;(2)一般情况,这些寄存器是用在算术运算或逻辑运算指令中,以进行算术逻辑运算。在有些指令中,它们则有特定的用途:如AX作累加器用;BX作基址(Base)寄存器,如在查表指令XLAT中存放表的起始地址;CX作计数(Count)寄存器,如在数据串操作指令的REP中用CX存放数据单元的个数作为循环操作的次数;DX作数据(Data)寄存器,如在字的除法运算指令DIV中,存放余数。主要用于存放I/O或存储器的端口地址。指针寄存器SP和BP用来存取位于当前堆栈段中的数据,但SP和BP在使用上有区别。入栈(PUSH)和出栈(POP)指令是由SP给出栈顶的偏移地址,故称为堆栈指针寄存器。BP则是用来存放位于堆栈段中的一个数据区基址的偏移地址的,故称作基址指针寄存器。变址寄存器SI和DI是用来存放当前数据段的偏移地址的。在字符串操作中,源操作数地址的偏置放于SI中,所以SI称为源变址寄存器;目的操作数地址的偏置放于DI中,所以DI称为目的变址寄存器。2.专用寄存器SP、BP、SI、DI3.算数逻辑单元ALU主要是进行算数和逻辑运算的部件4.状态标志寄存器FR8086CPU的状态标志寄存器是一个16位的寄存器,9个位用作标志位,其中状态标志位有6个,控制标志有3个。状态标志,用来表示运算结果的特征,它们是:CF、PF、AF、ZF、SF和OF;这6位都是逻辑值,判断结果为逻辑真(true)时其值为1;判断结果为逻辑假(false)时,其值为0。控制标志,用来控制CPU的操作,它们是:IF、DF和TF。e.g.A=10110110,B=01101000则:A+B=100011110∴CF=1(有进位);PF=1(奇偶校验,运算结果中有偶数个‘1’);AF=0(辅助进位,低4位向高4位无借位);ZF=0(运算结果不为‘0’);SF=0(符号标志,运算结果最高位D7为‘0’);OF=0(溢出标志,运算结果没超过范围-128~+127)。10110110+01101000100011110二、总线接口部件(BIU)的组成和工作特点BIU=BUSInterfaceUnit功能是负责与CPU外部即存贮器、I/O端口传送数据和程序。BIU由四部分组成:(1)四个16位的段地址寄存器:CS(CodeSegment)代码段寄存器DS(DataSegment)数据段寄存器ES(ExtraSegment)附加段寄存器SS(StackSegment)堆栈段寄存器(2)16位指令指针寄存器IP。(3)20位的地址加法器。(4)6字节的指令队列。提供段基址以构成物理地址,不能参与算术逻辑运算BIU的工作特点:(1)地址加法器用来产生20位地址(物理地址)。根据指令和相关的16位寄存器提供的信息计算出20位的物理地址(2)6B指令队列缓冲器提高CPU效率。BIU从内存中取下一条(或几条)指令机器码放在指令队列中,提高了CPU的效率三、存储器的分段和物理地址的形成1.存储器的分段1MB(有20位地址线可直接寻址)空间分成若干段,每段≤64KB=216。段与段之间能连续排列、部分重叠、完全重叠、断续排列。每个存储单元地址是20位二进制数,按00000H~0FFFFFH来编址。从0号地址开始,依次每16KB的存贮空间叫做一节。为了简化操作要求所有的段从节首开始,因此,段首地址的低四位一定都是0,低4位为0的共有2(20-4)=64K个地址。段首地址的高16位叫“段基址”。从段首起到该段某一存贮单元的地址数称为该单元的段内偏移量。根据段中存贮信息的种类,将段分为代码段、数据段、堆栈段和附加段。当前段的段基址放在相应的16位段寄存器中。偏移量可存放在IP、SP或16位通用寄存器中。2.逻辑地址和物理地址物理地址指某一个单元在存贮器中的20位绝对地址,单元的物理地址是唯一的。逻辑地址是指存贮单元的段基址和偏移量。单元的逻辑地址可能不是唯一的。物理地址=段基址×16+偏移量二进制:段基址左移四位,低位填0十六进制:段基址左移一位,低位填0物理地址=段基址左移4位(低位补0)+偏移量注意:同一个物理地址可以有不同段基址和偏移量组合得到。如:CS=0000H,IP=1051H,物理地址010510HCS=0100H,IP=0051H,物理地址010510He.g.CS=2000H,IP=2200H,存储器的物理地址是:20000H+2200H=22200H四、8086内存的组织和CPU对存储器的访问1.内存的组织形式内存是按字节编址的,每个存储单元中存放一个8位二进制数(一个字节,1B),若一个数据长度为2B(一个字),则放在连续两个单元中,高字节放高地址单元,低字节放低地址单元。字的地址用低字节存储地址表示。CPU的地址线A0作为偶存储体的片选信号。BHE作为奇存储体的片选信号。2.CPU对内存的访问存储器分成两个部分,每一部分为512K字节。一部分叫偶存储体,其中内存单元的地址码都是偶数如00000H、000002H等,该存储体的数据总线对应接CPU数据总线的低8位;另一部分叫奇存储体,其中内存单元的地址码都是奇数,如00001H、00003H等,该存储体的数据总线对应接CPU数据总线的高8位。3.CPU对数据字的访问CPU如要访问一个偶地址的数据字,那么用D15~D016条数据总线可一次访问成功。若要访问一个奇地址的数据字到CPU,需要两次访问才能获得这个数据字。第一次用D15~D8访问奇存储体的低字节,第二次用D7~D0访问偶存储体的高字节。为了提高对数据字的访问速度,应将数据字的低字节放在偶存储体中,即使数据字的地址码为偶数。这样在存储器中存储的数据字叫对准字。而地址码为奇数的数据字叫未对准字。12000H12001H12002H223344对准字3322H未对准字4433H000100100000000000000001001000000000000100010010000000000010A19A1A0…2.28086CPU的引脚功能引脚的基本知识引脚的功能信号的流向有效电平三态能力引脚的复用指引脚信号的定义、作用;通常采用英文单词或其缩写表示信号从芯片向外输出,还是从外部输入芯片,或者是双向的起作用的逻辑电平高、低电平有效上升、下降边沿有效以少量的引脚提供更多的功能输出正常的低电平、高电平外,还可以输出高阻的第三态GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND12345678910111213141516171819204039383736353433323130292827262524232221VCCAD15A16/S3A17/S4A18/S5A19/S6HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TEST8086CPUREADYRESETBHE/S7MN/MXRDGNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND12345678910111213141516171819204039383736353433323130292827262524232221VCCA15A16/S3A17/S4A18/S5A19/S6HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)IO/M(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TEST8088CPUREADYRESETSS0(HIGH)MN/MXRD最小模式(最大模式)最小模式(最大模式)从引脚信号上看,8086和8088有什么不同?由于8088只能传输8位数据,所以8088只有8个地址/数据复用引脚;而8086是按16位传输数据的,所以有16个地址/数据复用引脚;8086和8088的控制线引脚定义中第28和34腿也不一样,在最小模式时,8088和8086的第28引脚的控制信号相反,而8086的第34腿为BHE*/S7,BHE*用来区分是传送字节、还是字,8088的第34腿为SS0,用来指出状态信息,不能复用。一、地址线、数据线和状态线AD15~AD0(双向,三态):地址/数据分时复用总线。为低16位地址/数据的复用引脚线。采用分时的多路转换方法来实现对地址线和数据线的复用。在DMA方式时,这些引线被浮空,置为高阻状态。A19/S6、A18/S5、A17/S4、A16/S3(输出,三态):地址/状态复用线。BHE*/S7(输出,三态):为高8位数据总线允许/状态复用引脚。8086有16根数据线,可以用高8位数据线传送一个字节,也可以用低8位数据线传送一个字节,还可以一次传送一个字,BHE*是用来区分这几类传输的。通过硬件连接,可使8086CPU有两种工作方式:最大工作方式和最小工作方式。一种数据传输的控制方式什么是分时复用?一个引脚在不同的时刻具有两个甚至多个作用最常见的总线复用是数据和地址引脚复用总线复用的目的是为了减少对外引脚的个数8086CPU的数据地址线采用了总线复用方法二、控制线1、RD*(输出,三态):读信号线,与M/IO*配合使用。2、WR*:写信号线。3、M/IO*:存储器或I/O端口访问信号。4、READY(输入):准备就绪信号。是由选中的存储器或I/O端口送来的响应信号,当有效时(高电平),表示被访问的存储器或I/O端口已准备就绪,可完成一次数据传送。5、INTR(输入):可屏蔽中断请求信号。6、INTA*(输出):中断响应信号。CPU向外输出的中断响应信号,用于对外部中断源发出的中断请求的响应。7、NMI(输入):非可屏蔽中断请求信号。8、TEST*(输入):测试信号,低电平有效。信号和WAIT指令配合使用。当CPU执行WAIT指令时,CPU处于等待状态,并且每隔5个T对该信号进行一次测试,一旦检测到TEST*信号为低,则结束等待状态,继续执行WAIT指令下面的指令。WAIT指令是使CPU与外部硬件同步的,TEST*相当于外部硬件的同步信号。9、RESET(输入):复位信号,输入,高电平有效。10、ALE(输出):地址锁存允许信号。ALE下降沿锁存地址。11、DT/R*(输出,三态):数据发送/接收控制信号。在使用8286或74LS245数据收发器的最小模式系统中,用DT/R*来控制数据传送方向。DT/R*为低电平,进行数据接收(CPU读),即收发器把系统数据总线上的数据读进来。当CPU处在DMA方式时,此线浮空。12、DEN*(输出,三态):数据允许信号。在使用8286或74LS245数据收发器的最小模式系统中,允许收发器和系统数据总线进行数据传送。13、HOLD(输入):总线请求信号。当系统中CPU之外的总线主设备要求使用总线时,通过HOLD引脚向CPU发出请求。14、HLD