处理器的编程结构.ppt

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

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

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

资源描述

第2章80X86系列结构微处理器与80862.180X86系列微处理器是8086的延伸2.28086功能结构2.38086微处理器的执行环境学习目的通过对本章的学习,能够达到下列要求:描述80X86结构特点掌握8086的功能结构掌握8086微处理器的执行环境教学重点1、8086/8微处理器的编程结构,处理器状态字PSW各个标志位2、8086/8微机系统的存储器组织。2.1.18086功能的扩展1、从16位扩展32位8086寻址1MB80386(32位机)寻址4GB2、从实模式至保护模式实模式:单用户、多任务的磁盘操作系统。操作系统本身没有程序隔离,没有保护。保护模式:可以实现操作系统核心程序与应用程序的严格的隔离。保护模式支持多任务机制,任务之间完全隔离。2.180X86系列微处理器是8086的延伸3、片内存储器管理单元(MMU)引入了存储管理单元(MMU),操作系统方便地实现页(每页为4KB)虚拟存储器管理。4、浮点支持协处理器(浮点运算)5、MMX技术MMX技术是Intel公司为增强CPU在音像、图形和通信应用方面而采取的技术,并增加相应的指令。6、SIMD单指令多数据(SIMD)2.1.28086性能的提高1、利用流水线技术提高操作的并行性同时执行多条指令2、引入片内缓存(cache)在处理器芯片中实现缓存CPU和内存之间的中介§2.28086的功能结构8086:Intel系列的16位微处理器,16条数据线、20条地址线,可寻址地址范围220=1MB,8086工作时,只要一个5V电源和一个时钟,时钟频率为5MHz。8088:内部与8086兼容,也是一个16位微处理器,只是外部数据总线为8位,所以称为准16位微处理器。它具有包括乘法和除法的16位运算指令,所以能处理16位数据,还能处理8位数据。8088有20根地址线,所以可寻址的地址空间达220即1M字节。2.28086的编程结构8086的编程结构从功能分成两个单元(1)总线接口单元BIU管理8086与系统总线的接口负责CPU对存储器和外设进行访问,取指令和内存中的数据(2)执行单元EU负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作两个单元可以并行执行,实现指令取指和执行的流水线操作外部总线内部暂存器IPESSSDSCS输入/输出控制电路执行部分控制电路123456∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位16位16位(3)8086/8088BIU的特点①8086的指令队列为6个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中。②地址加法器用来产生20位物理地址。8086可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16位,需要由20位的地址加法器完成地址运算。如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。(4)BIU与EU的动作协调原则①每当8086的指令队列中有两个空字节,BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。(4)BIU与EU的动作协调原则②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码。执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果BIU正处于空闲状态,立即响应EU的总线请求。如BIU正取指令,则BIU完成取指总线周期,再响应EU的访问总线请求。③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。(4)BIU与EU的动作协调原则将8086CPU分成二个独立的功能部件使二者能够并行工作,把取指令工作和分析指令、执行指令工作重叠进行,从而提高CPU的工作效力,加快指令的执行速度。指令队列可以被看成是一个特殊的RAM,它的工作原理是“先进先出”,写入的指令只能存放在队列尾,读出的指令是队列头存放的指令。EU和BIU之间就是通过指令队列联系起来,多数情况下,BIU在不停地向队列写入指令,而EU每执行完一条指令后,就向队列读取下一条指令。二者的动作既独立,又协调。(4)BIU与EU的动作协调原则取指令执行指令取指令执行指令取指令执行指令时间取指令取指令取指令取指令取指令得到数据等待执行执行执行BIUEU8位微处理器的执行顺序8086的执行顺序(4)BIU与EU的动作协调原则2.38086微处理器的执行环境2.3.1基本执行环境1、地址空间(内存)线性地址(寻找程序或数据)2、寄存器8个通用寄存器、4个段寄存器、标志寄存器和指令寄存器。(中间结果,状态标志,指令寄存器)3、堆栈为支持过程子程序调用并在过程或子程序之间传递参数(什么叫堆栈)。堆栈是按照“先进后出”原则组织的存储区域4、I/O端口。8086结构支持数据在处理器和输入输出(I/O)端口之间的传送8086基本执行环境AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGCSDSSSES(A)累加器基地址寄存器计数器数据寄存器(SP)堆栈指针寄存器基地址寄存器源变址寄存器目的变址寄存器(PC)指令指针寄存器(PSW)状态标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器CSDSSSESF000D000A320720064K代码段64K数据段64K堆栈段64K数据段E此图映射后形成20位线性地址能寻找`1MB空间段左移4位加偏移量形成20位8086内部寄存器有:4个数据寄存器4个指针寄存器4个段寄存器1个指令指针寄存器1个标志寄存器8086/8088CPU内部寄存器①8086的通用寄存器8086的16位通用寄存器是:AXBXCXDX其中AX称为累加器,BX称为基址寄存器,CX称为计数寄存器,DX称为数据寄存器8086的8位通用寄存器是:AHBHCHDHALBLCLDLAX的高字节为AH,低字节为AL,BX,CX,DX类似对其中某8位的操作,并不影响另外对应8位的数据。数据寄存器数据寄存器用来存放计算的结果和操作数,也可以存放地址。每个寄存器又有它们各自的专用目的:AX--累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;BX--基址寄存器,常用做存放存储器地址;CX--计数器,作为循环和串操作等指令中的隐含计数器;DX--数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。指针寄存器SP和BPSP是堆栈指针寄存器,它和堆栈段寄存器SS一起来确定堆栈在内存中的位置;BP是基数指针寄存器,用于存放基地址。变址寄存器SI和DISI是源变址寄存器DI是目的变址寄存器,用于指令的变址寻址方式。8086的专用寄存器②段寄存器DS数据段寄存器(DataSegment)CS代码段寄存器(CodeSegment)ES附加段寄存器(ExtraSegment)SS堆栈段寄存器(StackSegment)这些段寄存器的内容与有效的地址一起,用于确定内存的物理地址。通常用CS、DS、ES以及SS用于确定代码段、数据段、附加段以及堆栈段的基地址。③标志寄存器标志(Flag)用于反映指令执行结果或控制指令执行形式。8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)。OF111512DF10IF9TF8SF7ZF65AF43PF21CF0程序设计需要利用标志的状态标志的分类6个状态标志:用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它的状态。CFZFSFPFOFAF3个控制标志:可由程序根据需要用指令设置,用于控制处理器执行指令的方式DFIFTF进位标志CF(CarryFlag)当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。49H+6DH=B6H,没有进位:CF=0BBH+6AH=(1)25H,有进位:CF=1零标志ZF(ZeroFlag)若运算结果为0,则ZF=1;否则ZF=049H+6DH=B6H,结果不是零:ZF=075H+8BH=(1)00H,结果是零:ZF=1注意:ZF为1表示的结果是0符号标志SF(SignFlag)运算结果最高位为1,则SF=1;否则SF=0有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态奇偶标志PF(ParityFlag)当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=03AH+7CH=B6H=10110110B结果中有5个1,是奇数:PF=0PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作溢出标志OF(OverflowFlag)若算术运算的结果有溢出,则OF=1;否则OF=049H+6DH=B6H,产生溢出:OF=175H+8BH=(1)26H,没有溢出:OF=0什么是溢出?处理器内部以补码表示有符号数8位补码表达的整数范围是:+127~-12816位补码表达的范围是:+32767~-32768如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确49H+6DH=B6H,就是73+109=182,已经超出-128~+127范围,产生溢出,故OF=1;另一方面,补码B6H表达真值是-74,显然运算结果也不正确。溢出和进位溢出标志OF和进位标志CF是两个意义不同的标志。进位标志CF表示无符号数运算结果是否超出范围,运算结果仍然正确。溢出标志OF表示有符号数运算结果是否超出范围,运算结果已经不正确。溢出和进位的对比例1:49H+6DH=B6H无符号数运算:73+109=182范围内,无进位有符号数运算:73+109=182范围外,有溢出例2:BBH+6AH=(1)25H无符号数运算:187+106=293范围外,有进位有符号数运算:-69+106=37范围内,无溢出溢出的判断判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出,因为,此时的运算结果显然不正确。其他情况下,则不会产生溢出辅助进位标志AF(AuxiliaryCarryFlag)49H+6DH=B6H,D3有进位:AF=1运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心。例:两个带符号数64h,64h相加。01100100+0110010011001000OF=1(运算结果超过127);SF=1;ZF=0;AF=0;PF=0;CF=0。ODITSZAPC方向标志DF(DirectionFlag)用于串操作指令中,控制地址的变化方向:设置DF=0,存储器地址自动增加;设置DF=1,存储器地址自动减少。CLD指令复位方向标志:DF=0STD指令置位方向标志:DF=1中断允许标志IF(Interrupt-enableFlag)用于控制外部可屏蔽中断是否可以被处理器响应:设置IF=1,则允许中断;设置IF=0,则禁止中断。CLI指令复位中断标志:IF=0STI指令置位中断标志:IF=1陷阱标志TF(TrapFlag)用于控制处理器进入单步操作方式:设置TF=0,处理器正常工作;设置TF=1,处理器单步执行指令。④指令指针IP指令指针寄存器IP,指示代码段中指令的偏移地址。它与代码段寄存器CS联用,确定下一条指令的物理地址。计算机通过CS:IP寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。执行部件总线接口部件通用寄存器四个专用寄存器

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

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

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

×
保存成功