第2章-8086微处理器..

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章8086微处理器8086是高性能的第三代微处理器,是Intel系列的16位微处理器,它是采用HMOS工艺制造的,内部包含约29,000个晶体管。8086有16根数据线和20根地址线,因为可用20位地址,所以可寻址的地址空间达220即1M字节。8086工作时,只要一个5V电源和一相时钟,时钟频率为5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微处理器时钟频率达8MHz。几乎在推出8086微处理器的同时,Intel公司还推出了一种准16位微处理器8088。推出8088的主要目的是为了与当时已有的一整套Intel外围设备接口芯片直接兼容。8088的内部寄存器、内部运算部件以及内部操作都是按16位设计的,但对外的数据总线只有8条。这两种微处理器除了数据总线宽度不同外,其他方面几乎完全相同。8086/8088的另一个突出特点是其多重处理的能力,它们都能极方便的和数值数据处理器(NPX)8087,I/O处理器(IOP)8089或其他处理器组成多处理器系统,从而极大地提高系统数据吞吐能力和数据处理能力。2.18086CPU结构和特点一、8086CPU的内部结构1、16位外部数据总线2、16位内部体系结构,运算器、寄存器和内部数据总线均为16位3、多种寻址方式和较强的指令系统功能4、20位地址线,寻址范围为1M字节存储空间5、16位I/O端口地址线,可寻址64K端口地址6、较强的中断处理能力7、具有管理DMA操作和多处理器的工作能力。8086CPU由两个独立的逻辑单元组成要掌握一个CPU的工作性能和使用方法,首先应该了解它的编程结构。所谓编程结构,就是指从程序员和使用者的角度看到的结构,当然,这种结构与CPU内部的物理结构和实际布局是有区别的。在下图中可以看到,从功能上,8086分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。这两个单元在CPU内部担负着不同的任务。下图即为8086的编程结构图。(1)EU的功能:负责执行指令,具体如下:1)从BIU指令队列缓冲器中取出指令,由EU控制电路的指令译码器译码产生相应的操作控制信号给各部件。2)对操作数进行算术和逻辑运算,并将结果的状态特征保存到状态寄存器FR中。3)EU不直接与CPU外部系统相连,当需要与主存储器或I/O设备交换数据时,EU向BIU发出命令,并提供给16位有效地址及所需传送的数据。1、指令执行部件EU由算术逻辑运算单元ALU、标志寄存器FR、通用寄存器组和EU控制器等四个部件组成1)EU中的算术逻辑运算部件ALU完成16位或8位二进制数的运算,运算结果一方面通过内部总线送到通用寄存器组或BIU的内部寄存器中以等待写到存储器;另一方面影响状态标志寄存器FR的状态标志位。16位暂存器用于暂时存放参加运算的操作数。(2)EU的组成仅定义了9位,其中6位用作状态标志,3位用作控制标志。2)16位标志寄存器FRa.状态标志位用来反映EU执行算术或逻辑运算的结果特征,6个状态位如下:进位标志CF;辅助进位标志AF;奇偶校验标志PF;零标志ZF;b.控制标志位用来控制CPU的操作,3个标志位如下:方向标志DF;中断允许标志IF;单步陷阱标志TF:标志寄存器FRFR中的状态标志CF(CarryFlag):进位标志位CF=l,表示本次运算中最高位(D15或D7)有进位(加法运算时)或有借位(减法运算时)。CF标志可通过STC指令置位,通过CLC指令复位(清除进位标志),还可通过CMC指令将当前CF标志取反。PF(ParityFlag):奇偶校验标志位PF=1,表示本次运算结果中有偶数个“l”,PF=0,表示本次运算结果中有奇数个“1”。AF(AuxiliaryCarryFlag):辅助进位标志位。AF=l,表示运算结果的8位数据中,低4位向高4位有进位(加法运算时)或有借位(减法运算时),这个标志位只在十进制运算中有用。ZF(ZeroFlag):零标志位ZF=1,表示本次运算结果为零,否则即运算结果非零时,ZF=0。SF(SignFlag):符号标志SF=1,表示本次运算结果的最高位(第7位或第15位)为“l”,否则SF=0。OF(OverflowF1ag):溢出标志例如,在字节运算时:MOVAL,64HADDAL,64H即01100100+0110010011001000D7位向前无进位,故运算后CF=0;但运算结果超过了+127,此时,溢出标志位OF=1。在字节运算时:MOVAL,0ABHADDAL,0FFB即10101011+1111111110101010D7位向前有进位,故运算后CF=1,但运算的结果未小于−128,此时,溢出标志位OF=0。00100011010001010011001000011001+)0101010101011110SF=0最高位无进位,CF=0运算结果有奇数个1,PF=0运算结果非0,ZF=0D3→D4无进位,AF=0最高位,次高位均无进位,OF=0FR寄存器的控制标志IF(InterruptFlag):中断标志位IF=1,表示允许CPU响应可屏蔽中断。IF标志可通过STI指令置位,也可通过CLI指令复位。DF(DirectionFlag):方向标志位在串操作指令中,若DF=0,表示串操作指令地址指针自动增量;DF=1,表示地址指针自动减量。DF标志位可通过STD指令置位,也可通过CLD指令复位。TF(TrapFlag):单步标志位单步执行指令——处理器在每条指令执行结束时,便产生一个编号为1的内部中断。这种内部中断称为单步中断,所以TF也称为单步标志。–利用单步中断可对程序进行逐条指令的调试。–这种逐条指令调试程序的方法就是单步调试。3)数据暂存寄存器协助ALU完成运算,暂时存放运算的数据4)通用寄存器8086的16位通用寄存器是:AXBXCXDXSIDIBPSP其中前4个:累加器AX、基址寄存器BX、计数寄存器CX、数据寄存器DX,每个数据寄存器可存放16位操作数,也可拆成两个8位寄存器,用来存放8位操作数,对其中某8位的操作,并不影响另外对应8位的数据。8086的8位通用寄存器是:AHBHCHDHALBLCLDL后4个指针和变址寄存器:堆栈指针SP、基址指针BP、源变址寄存器SI、目的变址寄存器DI,可用来存放数据和地址,一般用来存放地址的偏移量,只能按16位进行存取操作。•变址寄存器(I组)常用于存储器寻址时提供地址•SI是源变址寄存器•DI是目的变址寄存器•串操作类指令中,SI和DI具有特别的功能•指针寄存器(P组)用于寻址内存堆栈内的数据•SP为堆栈指针寄存器,指示栈顶的偏移地址•SP不能再用于其他目的,具有专用目的•BP为基址指针寄存器,表示数据在堆栈段中的基地址•SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址通用寄存器AX(AccumulatorRegister)累加器一般用来存放参加运算的数据和结果,在乘、除法运算、I/O操作、BCD数运算中有不可替代的作用。BX(BaseRegister)基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址,而AX,CX,DX则不能。CX(Counter)将它称作计数寄存器,是因为它既可作数据寄存器,又可在串指令和移位指令中作计数用。DX(DataRegister)DX除可作通用数据寄存器外,还在乘、除法运算、带符号数的扩展指令中有特殊用途。SI(SourceIndex)源变址寄存器多用于存放内存的逻辑偏移地址,隐含的逻辑段地址在DS寄存器中,也可放数据。DI(DestinationIndex)目标变址寄存器多用于存放内存的逻辑偏移地址,隐含的逻辑段地址在DS寄存器中也可放数据。BP(BasePointer)基址指针用于存放内存的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。SP(StackPointer)堆栈指针用于存放栈顶的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。寄存器的特殊用途和隐含性质在指令中没有明显的标出,而这些寄存器参加操作,称之为“隐含寻址”。具体的:在某类指令中,某些通用寄存器有指定的特殊用法,编程时需遵循这些规定,将某些特殊数据放在特定的寄存器中,这样才能正确的执行这些指令。采用“隐含”的方式,能有效地缩短指令代码的长度。寄存器名特殊用途隐含性质在输入输出指令中作数据寄存器用不能隐含AX,AL在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商隐含AH在LAHF指令中,作目标寄存器用隐含在十进制运算指令中作累加器用隐含AL在XLAT指令中作累加器用隐含在间接寻址中作基址寄存器用不能隐含BX在XLAT指令中作基址寄存器用隐含CX在串操作指令和LOOP指令中作计数器用隐含CL在移位/循环移位指令中作移位次数计数器用不能隐含在字乘法/除法指令中存放乘积高位或被除数高位或余数隐含DX在间接寻址的输入输出指令中作地址寄存器用不能隐含在字符串运算指令中作源变址寄存器用隐含SI在间接寻址中作变址寄存器用不能隐含在字符串运算指令中作目标变址寄存器用隐含DI在间接寻址中作变址寄存器用不能隐含BP在间接寻址中作基址指针用不能隐含SP在堆栈操作中作堆栈指针用隐含它是控制、定时及状态逻辑电路,负责从BIU的指令队列缓冲器中取指令、分析指令(即对指令译码),然后根据译码结果向EU内部各部件发出控制命令以完成指令的功能。5)EU控制电路2、总线接口单元BIU(1)BIU的功能:负责完成CPU与存储器或I/O设备之间的数据传递,具体如下:1)BIU从主存取指令送到指令队列缓冲器2)CPU执行指令时,配合EU从指定的主存单元或外设端口中取数据送给EU或把EU的操作结果传给指定的主存或外设端口中3)计算并形成访问存储器的20位物理地址(2)BIU的组成总线接口部件BIU主要有4个16位段寄存器、16位指令指针寄存器、20位物理地址加法器、6字节指令队列缓冲器以及总线控制电路。1)段地址寄存器4个8086内部数据结构是16位,即所有的寄存器都是16位的,而外部寻址空间位1MB,即需20位地址线。为了能用内部寄存器中的16位地址来寻址1MB空间,8086将1MB空间以16字节为一个内存节,共分成64K个节。节的起始地址称为段基址。分别为:00000H00010H……FFFF0H,因后4为均为0所以只需记住高16位地址即可,0000H0001H0002H…..FFFFH,称为节的段地址。用于存放段地址的寄存器称为段寄存器。按用途分:代码段寄存器CS:用于存放当前代码段的段地址;数据段寄存器DS:用于存放当前数据段的段地址;附加段寄存器ES:用于存放当前附加段的段地址;堆栈段寄存器SS:用于存放当前堆栈段的段地址。用于产生20位物理地址。将来自于段寄存器的16位地址段首地址左移4位后与来自于IP寄存器或EU提供的16位偏移地址相加(通常将“段首地址:偏移地址”称为逻辑地址),形成一个20位的实际地址(又称为物理地址),以对1MB的存储空间进行寻址。具体讲:当CPU执行指令时,BIU根据指令的寻址方式通过地址加法器形成指令在存储器中的物理地址,然后访问该物理地址所对应的存储单元,从中取出指令代码送到指令队列缓冲器中等待执行。2)20位地址加法器偏移地址寄存器段寄存器000020位物理地址地址加法器访问存储器的方式默认的段寄存器可超越的段寄存器偏移地址取指令CS无IP堆栈操作SS无SP一般数据访问DSCS、ES、SS有效地址EA(下列除外)串操作的源操作数DSCS、ES、SSSI串操作的目的操作数ES无DIBP基址的寻址方式SSCS、DS、ES有效地址EA用来存放当前将要执行的指令的有效地址,每取出一条指令IP自动增量。程序不能直接访问IP,在程序运行过程中,BIU可修改IP中内容。3)16位指令指针IP(程序计数器)是一个与CPU速度匹配的高速缓冲寄存器。指令队列一共6个字节(8088的指令队列为4个字节),一旦指令队列中空出2

1 / 74
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功