资源预览内容
第1页 / 共108页
第2页 / 共108页
第3页 / 共108页
第4页 / 共108页
第5页 / 共108页
第6页 / 共108页
第7页 / 共108页
第8页 / 共108页
第9页 / 共108页
第10页 / 共108页
亲,该文档总共108页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第二章 微处理器和总线,主要内容一、 8086/8088微处理器功能结构 二、 8086/8088的存储器即I/O组织 三、 8086/8088引脚及功能 四、 8086/8088的总线与时序 五、 8086/8088系统配置,2,第二章 微处理器和总线,透彻理解与熟练掌握8086/8088内部组成结构、 寄存器结构与总线周期等。深入理解存储器的分段设计。正确理解与熟练掌握物理地址和逻辑地址关系。理解堆栈及其操作。理解“段加偏移”寻址机制。,3,Intel 系列CPU一直占着主导地位。 Intel 8086/8088、Z8000 和 MC68000 为代表的16位微处理器是第3代产品,其性能已达到中、高档小型计算机的水平。 8086/8088后续的80286、80386、80486以及Pentium系列CPU结构与功能已经发生很大变化,但从基本概念与结构以及指令格式上来讲,仍然是经典8086/8088CPU的延续与提升。 其它系列流行的CPU (如AMD公司的6X86MX/M等) 也与80x86CPU兼容。,前言(一),4,8086是Intel系列的16位微处理器。 8086采用HMOS工艺,集成2.9万个晶体管,单一的+5V电源,40条引脚,双列直插式封装,时钟频率510MHz,最快的指令执行时间为0.4s。 8086有16根数据线,20根地址线,寻址1MB的存储单元和64KB的I/O端口。,8088是准16位微处理器。内部寄存器、运算器以及内部数据总线都是16位,但外部数据总线为8条。,前言(二),5,从功能上讲,可分为两个独立的部分,并行重叠操作:,CPU内部结构(一),6,总线接口单元 (Bus Interface Unit, BIU):,执行单元 (Execution Unit, EU):,BIU从内存预取指令送到指令队列缓冲器; CPU执行指令时,BIU配合EU对指令的内存单元或I/O端口存取数据。,负责执行指令,即,执行的指令从BIU的指令队列缓冲器中取得; 指令执行的结果或所需要的数据,由EU向BIU发出请求; 再由BIU对存储器或I/O端口进行存取。,负责完成CPU与存储器或I/O设备之间的数据传送。即,CPU内部结构(二),7,EU与BIU,当EU从指令队列中取走指令,指令队列出现空字节时,BIU就自动执行一次取指令周期,从内存中取出后续的指令代码放入队列中; 当EU需要数据时,BIU根据EU给出的地址,从指定的内存单元或外设中取出数据供EU使用; 在运算结束时,BIU将运算结果送入指定的内存单元或外设; 如果指令队列为空,EU就等待; 若BIU正在取指令,EU发出访问总线的请求,则必须等BIU取指令完毕后,该请求才能得到相应; 一般情况下,程序顺序执行,当遇到跳转指令时,BIU就使指令队列复位,从新地址取出指令,并立即传给EU执行。,8,4个16位段地址寄存器代码段寄存器(Code Segment):取得CPU所执行的指令。数据段寄存器(Data Segment):存放程序所使用的数据。堆栈段寄存器(Stack Segment):堆栈操作的执行地址在此段中。附加段寄存器(Extra Segment):也用来存放数据。,6字节指令队列缓冲器 16位指令指针寄存器 IP (Instruction Pointer)20位地址加法器总线控制器,总线接口单元组成,9,用于存放预取的指令。 8086指令队列为6个字节。 在执行指令的同时,从内存中取下面1条或几条指令,取来的指令依次放在指令队列中。 采用“先进先出”的原则。 指令队列的存在使8086/8088的EU和BIU并行工作,从而减少了CPU为取指令而等待的时间,提高了CPU的利用率,加快了整机的运行速度,另外也降低了对存储器存取速度的要求。,指令队列缓冲器,10,16位指令指针(Instruction Pointer, IP),IP中含有BIU要取的下一条指令(字节)的偏移地址。,IP在程序运行中自动加1,指向要执行的下一条指令(字节)。,有些指令能使IP值改变或使IP值压进堆栈,或由堆栈弹出恢复原址。,指令指针寄存器,11,8086有20根地址线,内部寄存器只有16位。,“段加偏移”技术:,段寄存器存放确定各段起始地址的16位段地址信息。 由IP提供或由EU按寻址方式计算出寻址单元的16位偏移地址, 简称偏移量。 将偏移地址与左移4位后的段寄存器内容同时送到地址加法器,相加后形成20位实际地址。,地址加法器和段寄存器,12,16位算术逻辑单元 (ALU)算术、逻辑运算,计算16位偏移量 16位标志寄存器FCPU的运算状态特征或存放控制标志 数据暂存寄存器协助ALU完成运算 通用寄存器组4个16位数据寄存器,4个16位指针与变址寄存器 EU控制电路控制、定时与状态逻辑电路,执行单元组成,13,8086 内部寄存器结构共有13个16位寄存器和1个只用了9位的16位标志寄存器。(共14个16位寄存器),8086的寄存器结构,段寄存器,控制寄存器,14,数据寄存器AX,BX,CX,DX 数据寄存器一般用于存放参与运算的数据或运算结果。 每一个数据寄存器都是16位寄存器,但又可将高、低8 位分别作为两个独立的8 位寄存器使用。它们的高8 位记作AH、BH、CH、DH,低8 位记作AL、BL、CL、DL,这给编程带来了很大的方便。,多数情况下,用于算术运算或逻辑运算指令中。,有些指令中,有特定的用途。,通用寄存器(一),15,数据寄存器各自习惯用法,上述4 个寄存器一般作为通用寄存器使用,但又有各自的习惯用法。 (1) AX称为累加器,在乘除法运算、串运算和I/O 指令中都作为专用寄存器。 (2) BX称为基址寄存器,在计算机寻址时,常用来存放基址。 (3) CX称为计数寄存器,在循环和串操作指令中用作计数器。 (4) DX称为数据寄存器,在寄存器间接寻址的I/O 指令中存放I/O 端口地址,在做双字长乘除法运算时,DX与AX 合起来存放一个双字长数据(32 位),其中DX存放高16 位。,16,地址指针寄存器SP、BP(16位,存放偏移地址),堆栈指针寄存器SP和基址指针寄存器BP。用来指明当前堆栈段中数据所在的地址。,SP(Stack Pointer):给出栈顶的偏移地址(入栈和出栈指令时)。,BP(Base Pointer):存放位于堆栈段中的数据区基地址的偏移地址。,通用寄存器(二),17,源变址寄存器SI和目的变址寄存器DI。存放当前数据段的偏移地址。,SI(Source Index):源操作数的偏移地址。,DI(Destination Index):目的操作数的偏移地址。,变址寄存器(16位,存放偏移地址),通用寄存器(三),18,4个16位段寄存器,8086 指令可直接访问。 CS(Code Segment):存放代码段的段地址。 SS(Stack Segment):存放堆栈段的段地址。 DS(Data Segment): 存放数据段的段地址。 ES(Extra Segment):存放附加段的段地址,用于存放处理后的数据。,段寄存器是为实现“段加偏移”寻址基址而设置的。,段寄存器,19,段寄存器的使用,段寄存器的设立不仅使8088的存储空间扩大到1M,且为信息按特征分段存储带来了方便。 在存储器中,信息按特征可分为:程序代码、数据和堆栈等。 因此存储器可相应地划分为: 程序段:用来存放程序的指令代码; 数据段及附加段:用来存放数据和运算结果; 堆栈段:用来传递参数、保存数据和状态信息。,20,表2.1 存储器操作时段地址和段内偏移地址的来源,21,8086 标志寄存器F为16位,用了其中9位。 6个状态标志位:CF,PF,AF,ZF,SF,OF 3个控制标志位:DF,IF,TF,0,7,8,15,FL,FH,2,4,6,9,10,11,溢出标志,方向标志,中断允许标志,跟踪标志,进位标志,奇偶标志,辅助进位标志,零标志,符号标志,标志寄存器(一),22,状态标志位:反映算术或逻辑运算后结果状态。,CF(Carry Flag):进位标志,D0位。执行结果在最高位上产生了一个进位或借位,CF=1;无进位或借位,CF=0。会受移位、循环指令影响。,PF(Parity Flag):奇偶性标志,D2位。执行结果的低8位中有偶数个“1”时,PF=1;否则PF=0。机器中传递信息时,对产生的代码出错情况提供检测条件。,标志寄存器(二),23,AF(Auxiliary Flag):辅助进位标志,D4位。执行结果的低4位向高4位有进位或借位时,AF=1;否则AF=0。 AF标志主要用于实现BCD码算术运算结果的调整。,ZF(Zero Flag):零标志,D6位。如运算结果为零,ZF=1;如运算结果不为零,ZF=0。,标志寄存器(三),24,SF(Sign Flag):符号标志,D7位。如运算结果为负数,SF=1;如运算结果为正数,ZF=0。,OF(Overflow Flag):溢出标志,D11位。如带符号数在进行算术运算时产生了溢出,OF=1;如无溢出,OF=0。溢出表示运算结果已经超出机器能够表示的数值范围。,标志寄存器(四),25,控制标志位:控制CPU的操作,由程序设置或清除。,DF(Direction Flag):方向标志,D10位。控制数据串操作指令的步进方向。若用指令STD将DF=1,数据串操作过程中地址自动递减;若用指令CLD将DF=0,则地址自动递增。,标志寄存器(五),26,IF(Interrupt Flag):中断允许标志,D9位。控制可屏蔽中断。若用指令STI将IF=1,允许接受外部从INTR引脚发来的可屏蔽中断请求;若用指令CLI将IF=0,禁止接受外部发来的可屏蔽中断请求。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。,标志寄存器(六),27,TF(Trap Flag):跟踪(陷井)标志,D8位。为方便调试程序而设置的。若TF=1,CPU处于单步工作方式;若TF=0,正常执行程序。 总结: 对于状态标志,CPU 在进行算术逻辑运算时,根据操作结果自动将状态标志位置位(等于1)或复位(等于0); 对于控制标志,事先用指令设置,在程序执行时,检测这些标志,用以控制程序的转向。,标志寄存器(七),28,二、8086/8088存储器和I/O组织,1、8086/8088的存储空间 8086/8088有20条地址线,可直接对1 M个存储单元进行访问。每个存储单元存放一个字节型数据,且每个存储单元都有一个20位的地址,这1 M个存储单元对应的地址为00000HFFFFFH,如图2.1所示。一个存储单元中存放的信息称为该存储单元的内容。如图2.1所示,00001H单元的内容为9FH,记为:(00001H)=9FH。,29,图2.1 数据在存储器中的存放,30,20条AB,寻址1M存储空间; 按字节组织,每个字节唯一地址; 字节:顺序存放 字:低位字节放在低地址中高位字节放在高地址中 双字:低位字是偏移量高位字是段地址 规则字:低位字节存放在偶数地址 非规则字:低位字节存放在奇数地址,数据在存储器的存放,31,字和双字型数据存放,若存放的是字型数据(16位二进制数),则将字的低位字节存放在低地址单元,高位字节存放在高地址单元。如从地址0011FH开始的两个连续单元中存放一个字型数据,则该数据为DF46H,记为:(0011FH)=DF46H。 若存放的是双字型数据(32位二进制数,这种数一般作为地址指针,其低位字是被寻址地址的偏移量,高位字是被寻址地址所在段的段地址),这种类型的数据要占用连续的4个存储单元,同样,低字节存放在低地址单元,高字节存放在高地址单元。如从地址E800AH开始的连续4个存储单元中存放了一个双字型数据,则该数据为66A65E65H,记为:(E800AH)=66A65E65H。,32,2、存储器的段结构,8086/8088 CPU中有关可用来存放地址的寄存器如IP、SP等都是16位的,故只能直接寻址64 KB。为了对1M个存储单元进行管理,8086/8088采用了分段结构的方法对存储器管理,即将1M的地址空间分成若干个64K的段,然后用段基地址加上段内偏移地址来访问物理存储器。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号