1、第2章 8086系统结构n概述n8086CPU结构n8086存储器组织n8086系统配置概述n网上评价:网上评价:1978年,8086处理器诞生了。这个处理器标志着x86王朝的开始,从8086开始,才有了目前应用最广泛的PC行业基础。虽然从1971年,英特尔制造4004至今,已经有32年历史;但是从没有像8086这样影响深远的神来之作。n微处理器的主要功能n微处理器结构受到的限制n16位微处理器的结构特点n8086CPU概况微处理器的主要功能n进行算术运算和逻辑运算n同存储器和I/O接口交流信息n少量暂存数据n寄存指令、指令译码、执行指令n提供整个系统所需的定时和控制信号n可响应I/O设备的中
2、断请求微处理器的主要功能(软件角度)n赋值运算n算术表达式、关系表达式和逻辑表达式n无条件转移、条件转移、循环n数组和其他数据结构n子程序n输入和输出微处理器结构受到的限制n由于工艺技术和成本的限制,微处理器的结构受到以下几个方面的限制:n引脚数限制n芯片面积限制n器件速度限制8086 CPU概况n引脚数目:40n芯片封装类型:双列直插式n数据总线数目:16n地址总线数目:20n直接寻址的空间:220=1MBn主频:5MHz8086 CPU内部结构n8086 CPU结构框图n总线接口部件(BIU)n指令执行部件(EU)8086 CPU结构框图CSDSSSESIP内部寄存器654321AXBXC
3、XDXSPBPSIDI暂存器标志寄存器EU控制器总线控制电路指令队列ALUALU数据总线(16位)队列总线(8位)20位地址总线数据总线16位通用寄存器8086总线BIUEU总线接口部件nBIU功能nBIU结构nBIU工作过程BIU功能nBIU是8086 CPU与外部(存储器和I/O接口)的接口,提供16位数据总线和20位地址总线,完成所有外部总线操作n形成20位物理地址n取指令、指令排队n读/写操作数n总线控制BIU结构n16位段寄存器(4个)nCS:代码段寄存器nDS:数据段寄存器nES:附加段寄存器nSS:堆栈段寄存器n16位指令指针寄存器IP:存放下一条将要执行指令的偏移地址n20位物
4、理地址加法器:将16位逻辑地址转换为存储器的20位物理地址n6字节指令队列:预存6字节的指令代码n总线控制部件:发出总线控制信号BIU工作过程1.取指令2.指令排队,等待EU取指令3.从存储器或I/O端口读写操作数4.向存储器或I/O端口输出EU的运算结果5.修改指令指针IP,指向下一条指令的偏移地址。当EU执行转移、调用或返回指令时,则BIU清除指令队列,从转移指令的新地址取得指令,并立即送给EU执行,然后从后续的指令序列中取指令填满队列指令执行部件nEU功能nEU结构nEU工作过程EU功能n指令解码(Decode Instruction)n执行指令(Execute Instrunction
5、)EU结构n算术逻辑单元ALU:完成8位或16位二进制运算,16位暂存器暂时存放操作数n标志寄存器:存放ALU运算结果特征n寄存器组:4个通用的16位寄存器AX、BX、CX、DX;4个指针和变址寄存器BP、SP、SI、DInEU控制器:取指令控制和时序控制部件EU工作过程1. EU从BIU的指令队列的输出端取指令2. 进行指令译码3. 若执行指令需要从存储器或I/O端口去取操作数,则EU将操作数的偏移地址通过内部的16位数据总线送给BIU,与段基地址一起,在BIU的地址加法器中形成20位物理地址,申请访问存储器或I/O端口,取得操作数送给EU4. EU根据指令要求向EU内部各部件发出控制命令,
6、完成执行指令的功能。8086 CPU寄存器结构(重点)n通用寄存器n指针和变址寄存器n段寄存器n指令指针寄存器n标志寄存器PSW通用寄存器寄存器名英文名中文名用途AXAccumulator累加器算术运算;在乘除运算中用来存放操作数;和I/O设备之间传送信息BXBase address基址寄存器做通用寄存器用;在计算存储器地址时,用作基址寄存器CXCounter计数器做通用寄存器用;保存计数值DXData register数据寄存器做通用寄存器用; DX:AX组合可表示双字;DX也用来存放I/O端口地址指针和变址寄存器寄存器名英文名中文名用途SPStack pointer堆栈指针存放堆栈栈顶的偏
7、移地址,只能访问堆栈栈顶的信息BPBase pointer基址指针可作为堆栈区中的一个基址以访问堆栈中的信息,可以访问堆栈中任何位置的信息SISource index源变址寄存器SI、DI单独使用时,同DS联用,用来确定数据段中某一存储单元的地址;在串处理指令中,SI和DS联用,DI和ES联用,具有自动递增和自动递减的功能,用于在DS和ES中寻址的目的DIDestination index目的变址寄存器段寄存器寄存器名英文名中文名用途CSCode segment代码段寄存器存放代码段段基地址DSData segment数据段寄存器存放数据段段基地址,存放程序中经常使用的数据ESExtra se
8、gment附加锻寄存器存放附加段段基地址,存放程序中不经常使用的数据SSStack segment堆栈段寄存器存放堆栈段段基地址指令指针寄存器寄存器名英文名中文名用途IPInstruction pointer指令指针在程序运行时,保存下一条将要执行的指令的偏移地址,与CS联用确定下一条指令的物理地址在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。那么,CPU根据什么将内存中的信息看作指令?CPU将CS:IP指向的内存单元中的内容看作指令,因为,在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到
9、内存中读取指令码,执行。如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。标志寄存器PSW寄存器名英文名中文名用途PSWProgram Status Word 标志位寄存器或程序状态字存放条件码标志、控制标志和系统标志OFDFIFTFSFZFAFPFCFPSW格式:1511109876420条件标志n条件标志用来记录程序中运行结果的状态信息,它们根据有关指令的运行结果由CPU自动设置,这些状态信息往往作为后续条件转移指令的转移控制条件,包括6位:nOF:溢出标志,在运算过程中,如操作数超出了机器数的表示范围,称为溢出,OF=1,否则OF=0nSF:符号
10、标志,记录结果的符号,结果为负SF=1,否则SF=0nZF:零标志,运算结果为0,ZF=1,否则ZF=0nCF:进位标志,进行加法运算时从最高位产生进位,或减法运算从最高位产生借位CF=1,否则CF=0nAF:辅助进位标志:本次运算结果,低4位向高4位产生进位或借位,AF=1,否则AF=0nPF:奇偶标志,用来为机器中传送信息时可能产生的代码出错情况提供检验条件,当结果操作数中低8位1的个数为偶数时PF=1,否则PF=0控制标志nDF:方向标志,用在串处理指令中控制处理信息的方向。n当DF=1时,每次操作后,SI和DI减小,使串处理从高地址向低地址进行,用指令STD设置n当DF=0时,每次操作
11、后,SI和DI增大,使串处理从低地址向高地址进行,用指令CLD设置系统标志n系统标志用于可屏蔽中断、程序调试等的控制。nTF:陷阱标志(单步标志),调试程序时,可设置单步工作方式,TF=1时,CPU每执行完一条指令,就自动产生一次内部中断,使用户能跟踪程序进行调试nIF:中断标志,IF=1时,CPU响应可屏蔽中断;IF=0时,即使外部设备有中断申请,CPU也不响应。STI指令使IF=1,CLI指令使IF=0使用寄存器时注意n以上介绍的寄存器均为16位寄存器n通用寄存器AX、BX、CX、DX都可以拆分为两个8位寄存器:AH和AL、BH和BL、CH和CL、DH和DL,“H”表示高位字节,“L”表示
12、低位字节n其他的寄存器不能拆分,BX寄存器如果作为指针使用,也不能拆分n指令指针寄存器IP、标志寄存器PSW和堆栈指针SP的内容只能由系统更改,用户不能更改n代码段寄存器CS和指令指针寄存器IP配对使用;堆栈段寄存器SS和堆栈指针寄存器SP配对使用n用户只能用4个寄存器存放存储单元的偏移地址:SI、DI、BX和BPnBP寄存器在默认的情况下用于访问堆栈段8088 CPU简介n8088 CPU是8086 CPU的姊妹版n8088 CPU的内部数据总线宽度是16位,外部数据总线宽度是8位,所以8088 CPU称为准16位微处理器。n8088 CPU的外部地址总线的宽度为20位。8088CPU与80
13、86CPU的区别n8088的指令队列长度是4个字节,队列中只要出现一个空闲字节,BIU就会自动访问存储器,取指令来补充队列。n8088CPU中,BIU的总线控制电路与外部交换数据的总线宽度,总线控制电路与专用寄存器之间的数据总线宽度都是8位,而EU的内部总线是16位,这样对16位数的读/写操作要两个读/写周期才能完成。n8088外部数据总线只有8条,所以分时复用的地址/数据总线为AD7AD0n8088中,用IO/M信号代替M/IO信号n8088中,只能进行8位数据传输,无BHE信号8086存储器组织(重点)n8086存储器地址的分段n8086存储器的分体结构n堆栈8086存储器地址的分段n在存
14、储器中是以字节为单位存储信息的,每个存储单元由唯一的地址来确定。n8086系统有20根地址线可寻址1MB字节的存储空间,即对存储器寻址要20位物理地址,而8086为16位机,CPU内部寄存器只有16位,即只能存储16位地址。因此8086系统把整个存储空间分成许多逻辑段,每段容量不超过64KB(即65536字节)。n段和段之间可以是连续的,也可以是分开的或重叠的。n任何一个单元的实际地址,都是由段基地址和段内偏移地址两部分组成。存储器地址分段示意图n分段的策略:把整个1M的地址空间分为65536X16的矩阵,每一行16字节为一小段(paragraph)。如下所示:00000 00001 0000
15、F00010 00010 0001F12340 12341 1234FFFFF0 FFFF1 FFFFFn最左边的一列就可以作为段的起始地址,而段寄存器是16位的,无法存放20位的地址,所以在存放时,只考虑最高16位,最低的4位均为0,不存放。物理地址的形成n段基地址:存放在段寄存器(CS DS ES SS)中的地址,表示段的起始。n偏移地址:相对于段的起始地址的偏移量,可以用BX BP SI DI SP IP 存放。n逻辑地址:存储器的逻辑地址由段基地址和偏移地址组成,程序设计时采用逻辑地址。n物理地址:存储器的绝对地址,范围为00000HFFFFFH,是CPU访问存储器的实际寻址地址,按下
16、式进行计算:偏移地址段基地址物理地址16举例n已知DS=10E4H, ES=10F4H, SS=21F0H, CS=31FFH, 画出此时存储器地址分段图n段寄存器DS装入数据12ABH,写出段的起始地址和结束地址。nCS:IP的组合为34ABH:1230H,写出要执行指令的存储器物理地址。nSS:SP的组合为2900H:4A00H,写出堆栈栈顶的物理地址。n已知DS=101AH,BX=3200H,写出数据段中该存储单元的物理地址。逻辑地址的来源操作类型隐含段地址替换段地址 偏移地址取指令CS无IP堆栈操作SS无SPBP为间址SSCS DS ES有效地址EA存取变量DSCS ES SS有效地址
17、EA源字符串DSCS ES SSSI目的字符串ES无DI问题n16位机内存管理为什么采用分段管理?有什么意义?程序的重定位、浮动地址的编码和提高程序的重定位、浮动地址的编码和提高内存的利用率和代码的重用率等内存的利用率和代码的重用率等n物理地址的含义,存储单元的物理地址是唯一的吗?n逻辑地址的构成,存储单元的逻辑地址是唯一的吗?如何由逻辑地址得到物理地址?8086存储器的分体结构n8086系统中,1MB的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512KB。n8086系统存储器与总线的连接n奇偶存储体的访问n奇地址单元字的读/写8086系统存储器与总线的连接奇偶存储体的访问n当A
18、0=0时,选择访问偶地址存储体,偶地址存储体与数据总线的低8位相连,从低8位数据总线读/写一个字节n当BHE=0时,选择访问奇地址存储体,奇地址存储体与数据总线的高8位相连,从高8位数据总线读/写一个字节。n当A0=0 BHE=0时,访问两个存储体,读/写一个字。8086系统字节、字的读/写BHEA0操作总线使用情况00110101从偶地址单元读/写一个字从奇地址单元读/写一个字节从偶地址单元读/写一个字节无效AD15AD0AD15AD8AD7AD00110从奇地址开始读/写一个字(分两次进行)AD15AD8AD7AD0奇地址单元字的读写3456789ABC1210002H10003H1000
19、4H10005H10006H10001H从10002单元开始读取一个字5634H,然后舍弃低位字节34H,剩下的高位字节56H作为要读取字的低位字节从10004单元开始读取一个字9A78H,然后舍弃高位字节9AH,剩下的低位字节78H作为要读取字的高位字节7856要求从10003H单元读取一个字堆栈n堆栈的概念n堆栈示意图n堆栈的操作堆栈的概念n堆栈是在存储器中开辟一个半封闭的区域,用来存放需要暂时保存的数据,并以“后进先出”的方式进行操作。n堆栈段可以在存储器1MB空间内任意浮动,堆栈的容量不超过64KB。段基址由堆栈段寄存器SS指定,栈顶由堆栈指针SP指定。n堆栈栈底设在存储器的高地址。堆
20、栈示意图栈底:标示堆栈的结束当前栈顶的位置,存放在SP中地址增长的方向杯底当前液面位置杯口堆栈的开始,起始地址存放在SS中堆栈的操作n入栈:用PUSH指令实现把一个字压入堆栈,修改堆栈指针SP,使SP减小。相当于往杯里注水,使液面上升n出栈:用POP指令实现从栈顶处弹出一个字,同时修改堆栈指针SP,使SP增大。相当于从杯里倒水使液面下降举例n假如当前SS=C000H,SP=1000H,开始堆栈中没有存放任何数,画出此时的堆栈。若AX=3322H,BX=1100H,CX=6655H,执行指令PUSH AX,PUSH BX,画出此时的堆栈,再执行指令POP CX,画出此时的堆栈。三条指令执行完后A
21、X、BX、CX 中的内容分别是什么?使用堆栈时的注意事项n堆栈的操作必须以字为单位n先进入的内容要后弹出nPUSH和POP指令必须成对出现8086 CPU时序nCPU操作是在时钟脉冲CLK的统一控制下进行的,8086的时钟频率为5MHz,时钟周期为或T状态为200ns.n几个“周期”的概念n系统的复位和启动n最小模式下的总线操作几个“周期”的概念n指令周期(Instruction Cycle):执行一条指令所需的时间称为指令周期。不同指令的指令周期的长短是不同的,一个指令周期由几个总线周期组成。n总线周期(Bus Cycle):CPU完成一次访问存储器或I/O端口操作所需要的时间,称为一个总线
22、周期。一个总线周期由几个T状态组成。8086 CPU每个总线周期至少包含4个时钟周期(T1T4),在总线周期的T1状态传送地址,T2T4状态传送数据。有时还要在T3和T4状态中间插入若干个等待状态TW以同步慢速外设。n时钟周期(Clock Cycle):CPU的时钟频率的倒数,也称T状态。系统的复位和启动n复位:当RESET信号变成高电平时,CPU结束现行操作,各个内部寄存器复位成初始值。RESET信号至少维持4个时钟周期的高电平。n重启:复位后,代码段寄存器CS为FFFFH,指令指针IP为0,所以8086在复位之后重启时,从内存的FFFF0H处存放了一条无条件转移指令,转移到系统的引导程序的
23、入口处(0200H),这样系统启动后就自动进入系统程序。复位时各内部寄存器的值标志寄存器清零指令指针IP0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令队列清空其他寄存器0000H80386DX简介n上市时间:1985年n时钟频率:33MHzn字长:32位n寻址空间:4GBn工作模式:实模式(8086模式)、保护模式、虚拟86模式(同时模拟多个8086处理器,以实现多任务功能)n浮点数运算:与协处理器80387配合使用80486简介n上市时间:1989n主频:100MHzn字长:32位n寻址空间:4GB,虚拟存储空间达64TBn浮点数运算:集成在芯
24、片内部n整数运算:精简指令集RISC结构n缓存:内嵌8KB L1 Cache和外置L2 CachePentium处理器n上市时间:1993年n主频:1GHzn字长:芯片内部ALU和通用寄存器是32位,外部数据总线是64位nMMX技术:具有强大的整数运算、浮点运算和多媒体信息处理等功能,实现三维图形、图像和多媒体方面的可视化计算和交互功能本章知识点(1)n8086 CPU的内部结构(重点重点 熟练掌握熟练掌握)n总线接口部件:功能、组成、工作过程n执行部件:功能、组成、工作过程n8086 CPU的寄存器结构(重点重点 熟练掌握熟练掌握)n8088与8086的不同点(了解)本章知识点(2)n8086存储器组织(重点重点 熟练掌握熟练掌握)n存储器地址的分段n物理地址的形成n逻辑地址n8086存储器的分体结构n堆栈n几个“周期”的概念:指令周期、总线周期和时钟周期(掌握)n系统的复位和启动(掌握)