第三章 80868088微处理器及其系统-V2_第1页
第三章 80868088微处理器及其系统-V2_第2页
第三章 80868088微处理器及其系统-V2_第3页
第三章 80868088微处理器及其系统-V2_第4页
第三章 80868088微处理器及其系统-V2_第5页
已阅读5页,还剩200页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章8086/8088微处理器及其系统3.18086/8088微处理器3.28086/8088系统的最小/最大工作方式3.38086/8088的存储器3.48086/8088的指令系统

主要内容透彻理解与熟练掌握8086/8088内部组成结构、寄存器结构与总线周期等深入理解存储器的分段设计正确理解与熟练掌握物理地址和逻辑地址关系理解堆栈及其操作理解“段加偏移”寻址机制掌握寻址方式掌握6大类指令系统的基本方法

学习要求第三章8086/8088微处理器及其系统Intel系列CPU一直占着主导地位Intel8086/8088、Z8000和MC68000为代表的16位微处理器是第3代产品,其性能已达到中、高档小型计算机的水平。8086/8088后续的80286、80386、80486以及Pentium系列CPU结构与功能已经发生很大变化,但从基本概念与结构以及指令格式上来讲,仍然是经典8086/8088CPU的延续与提升。其它系列流行的CPU(如AMD公司的6X86MX/MII等)也与80X86CPU兼容。第三章8086/8088微处理器及其系统3.18086/8088微处理器8086是Intel系列的16位微处理器。采用HMOS工艺,集成2.9万个晶体管,单一的+5V电源,40条引脚,双列直插式封装,时钟频率5~10MHz,最快的指令执行时间为0.4us。8086有16根数据线,20根地址线,寻址1MB的存储单元和64KB的I/O端口。8088是准16位微处理器,内部寄存器、运算器以及内部数据总线都是16位,但外部数据总线为8条。3.18086/8088微处理器总线接口单元(BusInterfaceUnit,BIU):负责完成CPU与存储器或I/O设备之间的数据传送,即-BIU从内存预取指令送到指令队列缓冲器;-CPU执行指令时,BIU配合EU对指令的内存单元或I/O接口存取数据。执行单元(ExecutionUnit,EU):负责执行指令,即-执行的指令从BIU的指令队列缓冲器中取得;-指令执行的结果或所需的数据,由EU向BIU发出请求;-再由BIU对存储器或I/O接口进行存取。3.18086/8088微处理器3.1.18086/8088CPU的内部结构从功能上讲,可分为两个独立的部分,并行重叠操作:3.18086/8088微处理器总线接口单元组成◆4个16位段地址寄存器

代码段寄存器(CodeSegment):取得CPU所执行的指令。

数据段寄存器(DataSegment):存放程序所使用的数据。

堆栈段寄存器(StackSegment):堆栈操作的执行地址在此段中。

附加段寄存器(ExtraSegment):也用来存放数据的。◆16位指令指针寄存器IP(InstructionPointer)◆6字节指令队列缓冲器◆20位地址加法器◆总线控制器3.18086/8088微处理器1.指令队列缓冲器用于存放预取的指令

8086指令队列为6个字节,而8088指令队列为4个字节。在执行指令的同时,从内存中取下面1条或几条指令,取来的指令依次放在指令队列中。采用“先进先出”的原则。3.18086/8088微处理器1.指令队列缓冲器(续1)“先进先出”原则:按顺序存放,并按顺序取到EU中去执行。①取指时,当指令队列缓冲器中存满1条指令,EU开始执行;②指令队列缓冲器中只要空出2个(8088空出1个)指令字节时,BIU便自动执行取指操作,直到填满时为止。③EU执行指令时,如需对M或I/O设备存储数据时,BIU将在执行完现行取指的存储器周期后的下一个存储器周期,对内存单元或I/O设备进行存取操作,交换的数据经BIU由EU进行处理。④当EU执行完转移、调用和返回指令时,要清除指令队列缓冲器,并要求BIU从新的地址重新执行。3.18086/8088微处理器2.地址加法器和段寄存器8086有20根地址线,内部寄存器只有16位。“段加偏移”技术3.18086/8088微处理器3.16位指令指针(InstructionPointer,IP)IP中含有BIU要取的下一条指令(字节)的偏移地址。IP在程序运行中自动加1,指向要执行的下一条指令(字节)。有些指令能使IP值改变或使IP值压进堆栈,或由堆栈弹出恢复原址。关键字:程序计数器pc指令指针IP先来看看什么是程序计数器PC!根据冯·诺依曼机思想:“用指令事先编好的程序连续存放在内存程序区中,靠地址+1的方法连续取指执行”。在八位机8080CPU中是采用先取指后执行的串行操作的原理,而其中执行地址+1指令寻址的部件就是程序计数器PC。那么在程序的执行过程中,PC始终是指向下一条要执行的指令。结论:PC中的地址就是需要转移、循环、调用子程序和中断子程序等操作时的断点。3.18086/8088微处理器再来看看什么是指令指针IP?在向上兼容的十六位机8086CPU中首先分为两个功能部件,即总线接口部件BIU和执行部件EU,BIU负责取指令,EU负责译码执行。并且当BIU执行指令排队栈中的六个字节装满后,(8088CPU是4个字节),EU开始从指令排队栈的出栈口,取指令进行译码执行,同时BIU并行操作向入栈口补充一条取指令命令。指令指针IP则是指向下个条要取指的指令,而不是EU要执行的指令。而断点则应该是要执行的指令内存地址,而不是IP内的下一条要取指的指令地址,而且(IP)比断点超前了六个字节(8088CPU超前四个字节)。3.18086/8088微处理器3.18086/8088微处理器执行单元组成16位算术逻辑单元(ALU)

算术、逻辑运算、计算16位偏移量16位标志寄存器

CPU的运算状态特征或存放控制标志数据暂存寄存器

协助ALU完成运算通用寄存器组

4个16位数据寄存器,4个16位指针与变址寄存器EU控制电路

控制、定时与状态逻辑电路3.18086/8088微处理器8088CPU内部结构BIU指令队列长度为4个字节BIU通过总线控制电路与外部交换数据的总线宽度是8位,与专用寄存器之间的数据总线宽度也是8位。3.18086/8088微处理器3.1.28086/8088的寄存器结构8086/8088内部寄存器结构共有13个16位寄存器和1个只用了9位的16位标志寄存器。3.18086/8088微处理器1.通用寄存器①数据寄存器4个16位:AX、BX、CX、DX8个8位:AH、AL、BH、BL、CH、CL、DH、DL—多数情况下,用于算术运算或逻辑运算指令中—有些指令中,有特定的用途3.18086/8088微处理器1.通用寄存器(续1)②指针寄存器和变址寄存器(16位,存放偏移地址)指针寄存器(P组)堆栈指针寄存器SP和基址指针寄存器BP。当前堆栈段中数据所在的地址。SP(StackPointer):给出栈顶的偏移地址(入栈和出栈指令时)BP(BasePointer):存放位于堆栈段中的数据区基地址的偏移地址。3.18086/8088微处理器1.通用寄存器(续2)②指针寄存器和变址寄存器(16位,存放偏移地址)变址寄存器(I组)源变址寄存器SI和目的变址寄存器DI。存放当前数据段的偏移地址。SI(SourceIndex):源操作数的偏移地址。DI(DestinationIndex):目的操作数的偏移地址。3.18086/8088微处理器1.通用寄存器(续3)数据寄存器的隐含使用3.18086/8088微处理器2.段寄存器段寄存器是为了实现“段加偏移”寻址基址而设置的。

4个16位段寄存器,8086指令可直接访问。

CS(CodeSegment):存放代码段的段地址。

SS(StackSegment):存放堆栈段的段地址。

DS(DataSegment):存放数据段的段地址。

ES(ExtraSegment):存放附加段的段地址。用于存放处理后的数据。3.18086/8088微处理器2.段寄存器(续1)8086/8088CPU有20条地址线,具有寻址1MB存储空间。

8086/8088指令中给出的地址码仅有16位。指针寄存器和变址寄存器也只有16位,不能直接寻址1MB的内存空间。用8086/8088CPU内部一组16为段寄存器内容作为段地址,再由段寄存器左移4位形成20位的段起始地址,称为段基地址或段基址,这样,8086/8088可寻址1MB存储空间。将1MB存储空间分成若干个逻辑段,使每个逻辑段的长度为64KB。

3.18086/8088微处理器3.标志寄存器8086标志寄存器F为16位,用了其中9位。6个状态标志位:CF、PF、AF、ZF、SF、OF3个控制标志位:DF、IF、TF3.18086/8088微处理器3.标志寄存器(续1)状态标志位:反映算术或逻辑运算后结果状态①

CF(CarryFlag):进位标志,D0位。执行结果在最高位上产生了一个进位或借位,CF=1;无进位或借位,CF=0。会受循环指令影响。②

PF(ParityFlag):奇偶性标志,D2位。执行结果的低8位中有偶数个“1”时,PF=1;否则,PF=0。机器中传递信息时,对产生的代码出错情况提供检测条件。3.18086/8088微处理器3.标志寄存器(续2)③

AF(AuxiliaryFlag):辅助进位标志,D4位。执行结果的低4位向高4位有进位或借位时,AF=1;否则,AF=0。一般用在BCD码运算中。④

ZF(ZeroFlag):零标志,D6位。如运算结果为零,ZF=1;如运算结果不为零,ZF=0。3.18086/8088微处理器3.标志寄存器(续3)⑤SF(SignFlag):符号标志,D7位。如运算结果为负数,SF=1;如运算结果为正数,ZF=0;⑥

OF(OverflowFlag):溢出标志,D11位。如带符号数在进行算术运算时产生了溢出,OF=1;如无溢出,OF=0。溢出表示运算结果已经超出机器能够表示的数值范围。3.18086/8088微处理器3.标志寄存器(续4)①

DF(DirectionFlag):方向标志,D10位。控制数据串操作指令的步进方向。若用指令STD将DF=1,数据串操作过程中地址自动递减;若用指令CLD将DF=0,则地址自动递增。控制标志位:控制CPU的操作,由程序设置或清除。3.18086/8088微处理器3.标志寄存器(续4)②

IF(InterruptFlag):中断允许标志,D9位。控制可屏蔽中断。若用指令STI将IF=1,允许接受外部从INTR引脚发来的可屏蔽中断请求;若用指令CLI将IF=0,禁止接受外部发来的可屏蔽中断请求。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。3.18086/8088微处理器3.标志寄存器(续4)③

TF(TrapFlag):跟踪(陷阱)标志,D8位。为方便调试程序而设置的。若TF=1,CPU处于单步工作方式;若TF=0,正常执行程序。3.18086/8088微处理器3.1.3总线周期的概念①时序:三总线上出现的信息不但有严格的顺序,而且有

准确的时间,称为定时或时序。②时钟:时钟脉冲发生器产生具有一定频率和占空比的脉冲信号,称之为机器的主脉冲或时钟。③主频:时钟的频率,是机器的一个重要指标。④时钟周期:主频的倒数,是CPU的基本时间计量单位。也叫一个T周期或T状态,或一个节拍。8086

主频为5MHz,则一个时钟周期为200ns。⑤总线周期:在取指令和传送数据时,CPU总线接口部件占用的时间称为总线周期或机器周期。3.18086/8088微处理器3.1.3总线周期的概念(续1)一个最基本的总线周期由4个时钟周期组成:用T1、T2、T3、T4表示。3.18086/8088微处理器3.1.3总线周期的概念(续1)①

T1状态:CPU往多路复用总线上发送地址信息,选中所要寻址的存储单元或外设端口地址。②

T2状态:CPU从总线上撤销地址,并使总线的低16位浮置成高阻状态,为传送数据做准备。③T3状态:总线的高4位继续提供状态信息,低16位将出现由CPU写出的数据,或CPU从存储器或者外设端口读入的数据。3.18086/8088微处理器3.1.3总线周期的概念(续1)④

等待状态:有些情况下,I/O或M不能及时配合CPU传送数据,在T3状态启动之前它会通过READY引脚向CPU

发出一个“未准备好”信号。

CPU在T3状态之后自动插入若干个时钟周期Tw,直至CPU接收到“准备好”信号,自动脱离Tw状态进入T4。⑤

T4状态:总线周期结束。⑥

空闲周期Ti:两个总线周期之间,若干个时钟周期。3.18086/8088微处理器8086GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND8086引脚图VCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND8088引脚图VCCA15A16/S3A17/S4A18/S5A19/S6SS0(HIGH)MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086/8088的引脚功能引脚图如下,其中带括号的引脚功能为最大模式下的功能3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续1)①

分时复用地址/数据总线:AD15~AD0(引脚39也就是AD15,2-16即Ad14-AD0,16根)传送地址时:单向,三态输出传送数据时:双向,三态输入输出通过分时复用利用40条引脚实现20位地址、16位数据及众多控制信号和状态信号的传输。T1状态:输出要寻址的存储器或I/O端口地址;T2状态:浮置成高阻状态,为传输数据做准备;T3状态:用于传输数据;T4状态:结束总线周期。当CPU响应中断以及系统总线“保持响应”时,复用线都被浮置成高阻状态。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续2)②分时复用地址/状态总线:A19/S6~A16/S3(引脚35~38,4根)输出,三态。T1状态:输出地址的最高位;T2~T4状态:输出状态信息。访问存储器:T1状态时输出的A19~A16送到锁存器(8282)锁存,与AD15~AD0组成20位的地址信号;访问I/O端口:不使用这4条引线,A19~A16=0。S6为0,8086当前与总线相连。S5表明中断允许标志位IF的当前设置。S4和S3指示当前正在使用哪个段寄存器。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续3)S4S3状态00当前正在使用ES01当前正在使用SS10当前正在使用CS,或未用任何段寄存器11当前正在使用DSS4、S3的代码组合和对应的状态3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续4)③

电源线和地线:3根1个电源线Vcc(引脚40):输入电压+5V±10%2个地线GND(引脚1,20):均接地3.18086/8088微处理器8086/8088的引脚特性◆数据/地址、状态/地址复用线的特点

﹡减少了8086CPU的引脚线

﹡需解决数据/地址线的分离◆控制线的特点

﹡功能各异:不同控制线具有不同的作用

﹡方向确定:仅为单相输入或输出

﹡电平触发:不同控制线有不同的电平触发方式◆电源线

﹡VCC:+5V﹡GND:地

控制总线:8根

a)BHE/S7(引脚34):高8位数据总线允许/状态复用,三态,输出

BHE在总线周期的T1状态时输出,S7在T2~T4时输出。

8086中,当BHE/S7引脚上输出BHE信号时,表示总线上高8位AD15~AD8的数据有效。存储体奇库选择控制。

8088中,34引脚不是BHE/S7,而是被赋予另外的信号:最小方式时,它为SS0,最大方式时,它恒为高电平。

S7在8086中未被赋予定义。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续5)3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续6)b)RD(引脚32):读控制,三态,输出,低有效

RD=0时,CPU将执行对M/IO端口的读操作。对内存单元还是对IO端口读取数据,取决于M/IO(8086)或M/IO(8088)信号。在一个读操作的总线周期中,

RD信号在T2、T3、Tw状态均为低电平,以保证CPU读有效。在系统总线“保持响应”期间,RD被浮空。“Ready”输入引脚,接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读写操作。该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续7)c)READY(引脚22):“准备好”信号,输入,高有效,由所寻址的M或IO设备发出。READY=1时,表示M或IO设备已准备就绪,马上可以进行依次数据传输。CPU在每个总线周期的T3状态开始对READY信号采样。当READY=0时,表示M或IO设备尚未准备好,则CPU在T3状态之后自动插入一个或几个等待状态Tw,直到READY变为高电平,进入T4状态,完成数据传送过程。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续8)d)TEST(引脚23):等待测试信号,输入,低有效。当CPU执行WAIT指令时,进入空转等待状态,且每隔5个时钟周期对该线的输入进行一次测试:若TEST=1时,CPU将停止取下条指令而继续处于等待状态,重复执行WAIT,直到TEST=0时,等待状态结束,CPU才继续往下执行被暂停的指令。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续9)e)INTR(引脚18):可屏蔽中断请求,输入,高有效。INTR=1时,表示外设提出了中断请求,8086在每个指令周期的最后一个T状态去采样此信号。若IF=1,CPU响应中断,停止执行当前的指令序列,并转去执行中断服务程序。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续10)f)NMI(引脚17):非屏蔽中断请求,输入,上升沿触发此请求不受IF状态的影响,也不能用软件屏蔽,只要此信号一出现,CPU就会在现行指令结束后引起中断。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续11)g)RESET(引脚21):复位信号,输入,高电平有效。与8284A(时钟发生/驱动器)的复位输出端相连;8086/8088要求复位脉冲宽度不得小于4个时钟周期,而初次接通电源时所引起的复位,则要求维持的高电平不能小于50μS。复位后,CPU的主程序流程恢复到启动时的循环待命初始状态。内部寄存器状态标志寄存器IPCSDSSSES指令队列缓冲器清除0000HFFFFH0000H0000H0000H清除3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续12)h)CLK(引脚19):系统时钟,输入通常与8284A时钟发生器的时钟输出端CLK相连,该时钟信号的低/高之比常采用2:1(占空比1/3)。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续13)⑤

其它控制线(引脚24~31):8个

这些控制线的性能,根据方式控制线(引脚33)MN/MX所处的状态而定。MN/MX=1,8086工作于最小方式,全部信号由CPU提供;MN/MX=0,8086工作于最大方式,控制信号由8288总线控制器提供。3.18086/8088微处理器3.1.48086/8088的引脚信号和功能(续14)时序:计算机操作运行的时间顺序。时序:三总线上出现的信息不但有严格的顺序,而且有准确的时间,成为定时或时序。3.28086/8088系统最小/最大工作方式条件最小工作模式:控制线MN/MX=H

最大工作模式:控制线MN/MX=L特点最小工作模式:控制线由CPU自身产生最大工作模式:控制线由芯片8288产生应用

最小工作模式:硬件简单,用于专用机

最大工作模式:硬件复杂,用于系统机注:掌握最小工作模式,了解最大工作模式3.28086/8088系统最小/最大工作方式MN/MX接电源电压,系统处于最小方式,即单处理器系统方式;时钟信号发生器8284A;外接晶体的基本振荡频率为15MHz,经8284A三分频后,送给CPU作系统时钟CLK。8位地址锁存器8282:锁存后地址信号,在整个周期保持不变。三态输出的8位数据总线收发器8286:用于增加系统的驱动能力。等待状态产生电路:向8284A的RDY端提供一个信号,经同步后,向CPU的READY线发“准备就绪”信号,通知CPU数据传送已完成,可退出当前总线周期。3.2.1最小方式3.28086/8088系统最小/最大工作方式3.2.1最小方式(续1)3.28086/8088系统最小/最大工作方式3.2.1最小方式(续2)a)INTA(Interruptacknowledge)引脚24

中断响应信号,输出,低有效

CPU对来自外设的中断请求作出响应,发两个连续负脉冲。

第一个脉冲:通知外设端口,中断请求被允许;

第二个脉冲:外设往数据总线上发送中断类型码。b)ALE:(addresslatchenable)引脚25

地址锁存允许信号,输出,高有效。

CPU在每个总线周期T1状态发出,作为地址锁存器的地址锁存信号。中断:是CPU与外部设备交换信息的一种方式。计算机在执行正常程序的过程中,当出现某些异常事件或某种外部请求时,处理器就暂时中断正在执行的正常程序,而转去执行对异常事件或某种外设的请求的处理操作。3.28086/8088系统最小/最大工作方式3.2.1最小方式(续3)c)DEN:(dataenable)引脚26

数据允许信号,输出,三态,低有效

为总线收发器OE端提供控制信号,决定是否允许数据通过。d)DT/R:(dataenable)引脚27

数据收发控制信号,输出,三态

控制总线收发器的数据传送方向

高电平时:数据发送

低电平时:数据接收3.28086/8088系统最小/最大工作方式3.2.1最小方式(续3)e)M/IO:(memory/inputandoutput)引脚28

存储器/输入输出控制信号,输出,三态

用于区分CPU访问M还是IO。高电平:访问M:

低电平:访问IO。f)WR:(write)引脚29

写控制信号,输出,三态,低有效

表示CPU当前进行M或IO的写操作。3.28086/8088系统最小/最大工作方式3.2.1最小方式(续3)g)HOLD:(holdrequest)引脚30

总线保持请求信号,输入,高有效

是系统中的其它总线主控部件向CPU发出的请求占用总线的控制信号。h)HLDA:(holdacknowledge)引脚31

总线保持应答信号,输出,高有效

与HOLD配合使用的联络信号,

有效期间,所有与三态门连接的引脚处于浮空,让出总线。3.28086/8088系统最小/最大工作方式3.2.2最大方式MN/MX接地,系统处于最大方式,含两个或多个处理器,需要解决主处理器和协处理器之间协调工作及总线共享问题。时钟发生/驱动器8284A:1片8位地址锁存器8282:3片三态输出的8位数据线收发器8286:2片等待状态产生电路:协调Ready信号总线控制器8288:对CPU发出的控制信号变换、组合,得到对M或IO的读/写信号,对8282和8286的控制信号。3.28086/8088系统最小/最大工作方式3.2.2最大方式(续2)最小方式:控制信号M/IO或(M/IO)、WR、INTR、ALE、DT/R、DEN直接从CPU的第24~29脚送出。3.28086/8088系统最小/最大工作方式3.2.2最大方式(续4)3.28086/8088系统最小/最大工作方式3.2.2最大方式(续6)b)LOCK(lock)引脚29

总线封锁信号,输出

由指令前缀LOCK产生,LOCK前缀后面一条指令执行完毕,

LOCK信号撤销。

低电平时:CPU独占总线,系统中其它主要部件就不能占用总线。3.28086/8088系统最小/最大工作方式3.2.2最大方式(续7)c)

RQ/GT1、RQ/GT0:引脚30、31

总线请求输入/总线允许输出

供CPU以外的两个处理器,用来发出使用总线的请求信号,和接收CPU对总线请求信号的回答信号。二者都是双向的,信号在同一引线上传输,当方向相反,RQ/GT0有更高优先权。3.28086/8088系统最小/最大工作方式3.2.2最大方式(续7)d)

MRDC(memoryreadcommand)对存储器读

MWTC:(memorywritecommand)对存储器写

AMWC(advancedmemorywritecommand)超前写存储器命令

IOWC(I/Owritecommand)对I/O写

IODC(I/Oreadcommand)对I/O读

AIOWC(advancedI/Owritecommand)超前写I/O命令3.38086/8088存储器3.3.1存储器组织20条AB,寻址1M存储空间;按字节组织,每个字节唯一地址;字节:顺序存放字:低位字节放在低地址中

高位字节放在高地址中双字节:低位字是偏移量高位字是段地址规则字:低位字节存放在偶数地址非规则字:低位字节存放在奇数地址3.38086/8088存储器3.3.1存储器组织(续1)字节的存取需要1个总线周期3.38086/8088存储器3.3.1存储器组织(续2)3.38086/8088存储器3.3.1存储器组织(续3)3.38086/8088存储器3.3.1存储器组织(续4)地址总线A19~A1可同时对高、低位库的存储单元寻址,A0或BHE用于库的选择,分别接到库选择端SEL。BHEA0操作使用的数据总线00同时读/写高低两个字节AD15~AD001只读/写奇地址的高位AD15~AD810只读/写偶地址的高位AD8~AD011不传送

3.38086/8088存储器3.3.1存储器组织(续4)8088系统中,寻址空间1MB,单一的存储器,1M×8位。20跟地址线与8跟数据线分别同8088CPU的对应地址线和数据线相连。8088CPU每访问1次存储器只读/写1个字节信息。任何数据字都需要两次访问存储器才能完成读/写操作。8088系统中,程序运行速度比在8086系统中慢些。3.38086/8088存储器3.3.2存储器分段3.38086/8088存储器3.3.2存储器分段(续1)◆每个段大小可以从一个字节开始,任意递增,最多包含

64KB长的连续存储单元;◆每个段的20位起始地址(段基址),是能被16整除的数,即最后4位为零,可通过程序在段寄存器中装入16位段地址来设置;段地址是20位段基址的前16位。◆1个程序所用的具体存储空间:1个或多个逻辑段;◆段基地址存在CS、SS、DS、ES中,程序可以从中给出的逻辑段中存取代码和数据;◆段区的分配是由操作系统完成的,系统允许程序员指定。3.38086/8088存储器3.3.2存储器分段(续1)20位寻址操作变为16位寻址操作缩短了指令长度,提高了执行速度多在段内操作,少在段间操作注:程序设计中变复杂寻址为简单寻址分段结构的优点:3.38086/8088存储器3.3.3实际地址和逻辑地址实际地址(也称为物理地址):CPU对存储器进行访问时的实际寻址所使用的地址,对8086/8088来讲,用20位二进制数或5位十六进制数表示。逻辑地址:程序和指令中表示的一种地址,由段地址和偏移地址两部分组成,用无符号的16位二进制或4位十六进制表示。段地址:16位段寄存器直接给出的16位地址。偏移地址(也称为偏移量或偏移):由指令寻址时的寄存器组合与位移量之和,16位的偏移量。表示所寻址的地址单元距离段起始地址之间的偏移。3.38086/8088存储器3.3.3实际地址和逻辑地址(续1)3.38086/8088存储器3.3.3实际地址和逻辑地址(续2)3.38086/8088存储器3.3.4堆栈①8086系统中的堆栈是用段定义语句在存储器中定义的一个堆栈段,如同其它逻辑段,可在1MB的存储空间中浮动。②一个系统堆栈数目不受限制,栈长度不超过64KB。③堆栈由段寄存器SS和堆栈指针SP来寻址

SS:给出堆栈段的段地址

SP:给定当前栈顶,即指出从堆栈的段基址到栈顶的偏移量。④栈顶是堆栈操作的唯一出口,是栈地址较小的一端。3.38086/8088存储器3.3.4堆栈(续1)3.38086/8088存储器(1)在进行连续的压入和弹出操作时,压入的次序与弹出的次序正相反,即先压入的内容后弹出,这样可保证返回寄存器的内容不发生错误。由于堆栈操作是按“后进先出”方式工作,因此在使用进栈指令PUSH和出栈指令POP时应注意两点:(2)PUSH和POP指令必须成对出现,否则会使地址出错,而造成整个程序执行出错。78“段加偏移”寻址机制允许重定位

重定位:一个完整的程序块或数据块,可在存储器所允许的空间内任意浮动,并定位到一个新的可寻址的区域。“段加偏移”寻址机制允许重定位(或再定位)是一种重要特性。原来为8086在实模式下运行所编写的程序,在以后80286以上高型号微处理器中,当系统由实模式转换为保护模式时也可运行。各种通用计算机系统在运行同一软件和数据时能够保持兼容性。重定位重点内容小结━通用寄存器组,段寄存器,标志寄存器━概念:时序、指令周期、总线周期、时钟周期、分时复用总线、物理地址、逻辑地址、偏移地址━总线端口单元与执行单元功能━20位物理地址形成━指令队列与堆栈━规则字与非规则字━最小工作方式与最大工作方式特点━时钟发生/驱动器8284A,地址锁存器8282

数据总线收发器8286,总线控制器8288作用与特点3.4.18086/8088指令系统特点8086与8088指令系统由8位8080/8085指令系统扩展而来的,同时又能在其后续的80x86系列的CPU上正确运行。其主要特点是:①可变长指令:指令格式比较复杂②寻址方式多样灵活,处理数据能力比较强(字节/字、有符号/无符号二进制数据、压缩型/非压缩型十进制数据)。③有重复指令、乘除运算指令,扩充了条件转移、移位/循环指令。④增设了加强软件中断功能和支持多处理器系统的相关指令。3.4.28086/8088的指令格式指令由两部分构成:操作码(OP-Code)字段:计算机所要执行的操作类型,由一组二进制代码表示。在汇编语言中用助记符代表。操作码操作数或操作数地址操作数(Oprand)字段:指令执行的操作所需的操作数,可是操作数本身,或操作数地址,或操作数地址计算方法。3.4.28086/8088的指令格式无操作数:控制类指令。操作码操作数或操作数地址双操作数:源操作数(source),目的操作数(destination)一个操作数在寄存器中,另一个在寄存器或存储器中,或指令中直接给出立即数。不允许两个都在存储器中。单操作数:只给出一个操作数地址,该操作数可在寄存器或存储器中,或指令中直接给出立即数。3.4.28086/8088的指令格式可变长指令,指令长度位1~6个字节。其中B1和B2为基本字节,B3~B6根据不同指令作相应的安排。指令格式:指令格式:3.4.28086/8088的指令格式①

B1字节

OP━指令操作码。

D━表示方向。

D=1,REG字段所确定的寄存器为目的;

D=0,该寄存器为源。

W━表示字节或字处理方式。

W=1,表示字;

W=0,表示字节。3.4.28086/8088的指令格式②

B2字节

MOD━给定指令的寻址方式。(2位)

MOD≠11:存储器方式,有一个操作数位于存储器中:

MOD=00,没有位移量;

MOD=01,只有低8位位移量,需将符号扩展8位,形成

16位;

MOD=10,有16位位移量。

MOD=11:寄存器方式,两个操作数均在寄存器中,

一个由REG字段确定,一个由R/M字段确定。3.4.28086/8088的指令格式②

B2字节●

REG━用来确定确定某一操作数所在的寄存器编码●

R/M━受MOD制约。MOD=11,某操作数所在的寄存器编号;MOD≠11,某操作数所在的存储单元有效地址EA,共24种计算方法。REG字段(寄存器编码)有8种编码,对应8个16位通用寄存器:000—AX,001—CX,010—DX,011—BX,100—SP,101—BP,110—SI,111—DI。段寄存器编码)有4种编码,对应4个段寄存器:00—ES,01—CS,10—SS,11—DS。3.4.28086/8088的指令格式指令格式:涉及BP寄存器寻址方式时,SS为默认的段寄存器;其他情况DS为默认的段寄存器。3.4.28086/8088的指令格式指令格式:3.4.3寻址方式指令格式:

指令执行中所需的操作数可能在寄存器中,也可以在内存或I/O端口中,对于不同的操作数均由不同的方法来存取它们。特别是对于存放于存储单元的操作数,可以采用多种不同的方式进行寻址及存取!3.4.3寻址方式指令格式:3.4.3寻址方式1.固定寻址有些单字节指令,规定CPU对某个固定的寄存器进行如:加法的ASCII调整指令AAA,规定被调整的数总位于AL中。该指令用来调整AL中的结果,指令编码为:

OP0011

0111

37H3.4.3寻址方式2.立即数寻址操作数就在指令中,当执行指令时,CPU直接从指令队列中取得立即数,而不必执行总线周期。●

立即数可以是8位,或16位;●

只能是整数类型的源操作数;●

主要用来给寄存器赋初值;●

指令执行速度快。例如:指令

MOVAX,1680H

表示将1680H送AX,AH中为16H,AL中为80H;即高地址对应高字节,低低址对应低字节。MOVAL,80H;将80H送入ALMOVAX,306AH;将306AH送入AX

3.4.3寻址方式3.寄存器寻址

MOVAL,BL;将BL的内容传送到AL中

MOVBX,AX;将AX的内容传送到BX中

3.4.3寻址方式3.寄存器寻址注意:(1)当指令中的源操作数和目标操作数均为寄存器时,必须采用同样长度的寄存器(2)两个操作数不能同时为段寄存器(3)目标操作数不能是代码段寄存器(CS)3.4.3寻址方式4.存储器寻址

3.4.3寻址方式4.存储器寻址:直接寻址

●当指令中的源操作数或目的操作数,采用直接给出被访问内存单元的逻辑地址时,这种寻址方式称直接寻址。●例:MOVAX,[3E4CH];AX←(DS:3E4CH)●源操作数采用直接寻址,指令中由方括号给出的是被访问内存单元的逻辑偏移地址,逻辑段地址隐含在DS中,物理地址为(DS)×10H+3E4CH【例3.6】MOVAX,[1680H];把1680H和1681H两单元的字内 容取入AX中【例3.7】MOVAX,ES:[1680H];把跨段的附加段中1680H和 1681H两单元的字内容取入AX

3.4.3寻址方式4.存储器寻址:直接寻址

●最简单、直观。●指令中直接以位移量形式,输出操作数的有效地址EA,即EA=DISP。●执行速度快,主要用于存取位于存储体中的简易变量。

编码格式为:4个字节312423222119181615

87

0OPMODREGR/MDISP-LDISP-H如:MOVAX,[1680H]:

表示将1680H和1681H两单元的取入AX中。例子段基址:2000H有效地址:1000H物理地址:21000HAX已知:(DS)=2000H,(21000H)=12H,(21001H)=34H。试给出指令

MOVAX,[1000H]执行后AX的内容。20000H数据段2FFFFH21000H21001H12H34H存储器指令执行后,(AX)=3412H。3.4.3寻址方式4.存储器寻址:间接寻址

●内存单元的逻辑偏移地址通过寄存器间接给出;●指寄存器寻址方式,操作数一定在存储器中;●存储单元的EA由寄存器指出:基址寄存器BX,基址指针寄存器BP,变址寄存器SI和DI;●书写时,寄存器带方括号;●根据所采用的寄存器不同,分为三种:

基址寻址:寄存器为BX或BP+位移量

变址寻址:寄存器为SI或DI+位移量

基址加变址寻址:BX或BP+SI或DI+位移量段基址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段前缀改变。3.4.3寻址方式4.存储器寻址:间接寻址1:基址寻址

MOVAX,[BX];若(DS)=2000H,(BX)=1000H,则将数据段

21000H、21001H两个单元的内容送到AX中。MOVCX,[BP];若(SS)=4000H,(BP)=1000H,则将堆栈段

41000H、41001H两个单元的内容送到CX中。3.4.3寻址方式4.存储器寻址:间接寻址2:变址寻址

例子段基址:4000H有效地址:5000H物理地址:45000HAX已知:(DS)=4000H,(SI)=2000H,内存单元(45000H)=34H,(45001H)=12H。试给出指令MOVAX,[SI+3000H]执行后AX的内容。40000H数据段4FFFFH45000H45001H34H12H存储器指令执行后,(AX)=1234H。3.4.3寻址方式4.存储器寻址:间接寻址3:基址加变址寻址

有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:有效地址=BX/BP+SI/DI+8/16位位移量段基址对应BX寄存器默认是DS,对应BP寄存器默认是SS;可用段前缀改变。该寻址方式适用于数组或表格存取。MOVAX,[BX+SI];默认操作数在数据段中

MOVBX,[BP+DI];默认操作数在堆栈段中

MOVBX,ES:[BP+DI];操作数在附加段中

3.4.3寻址方式有效地址EA的计算方法如下:物理地址PA计算方法如下:物理地址=DS×10H+SI/DI/BX物理地址=SS×10H+BP(1)不同的寄存器所隐含对应的段不同。采用SI、DI、BX寄存器,数据存于数据段DS中;采用BP寄存器,数据存于堆栈段中。(2)8086的寄存器AX,CX,DX一般不能在寄存器间接寻址中使用。如用BX、SI或DI作为间址寄存器,则默认的段基址在DS段寄存器。如用BP作为间址寄存器,则默认的段基址在SS段寄存器。可使用段前缀改变。MOVAX,ES:[SI];若(ES)=3000H,(SI)=1000H,则将附加段

31000H、31001H两个单元的内容送到AX中。

3.4.3寻址方式4.存储器寻址:实例1

3.4.3寻址方式4.存储器寻址:实例2

3.4.3寻址方式4.存储器寻址:实例3

3.4.3寻址方式5.其它寻址方式:2

5.2I/O端口寻址方式①直接端口寻址:以8位立即数方式在指令中直接给出。端口号范围0~255例如:INAL,n②间接端口寻址:通过DX间接寻址,16位端口地址放在DX中。端口号范围0~65535例如:OUTDX,AL3.4.3寻址方式5.其它寻址方式:3

5.3转移类指令的寻址方式8086/8088系统中,存储器采用分段结构,转移类指令有段内转移和段间转移。条件转移指令:只允许实现段内转移,且段内短转移,即转移地址范围为-128~+127字节,由指令直接给出8位地址偏移量。无条件转移指令和调用指令:段内短转移,段内直接转移,段内间接转移,段间直接转移,段间间接转移。思考题8086指令MOVAX,1234H,该指令源操作数的寻址方式为

。A.立即寻址B.寄存器寻址C.直接寻址D.寄存器间址答案:A使用直接寻址方式时,操作数总是在

中。A.通用寄存器B.堆栈C.主存单元D.段寄存器答案:C思考题寄存器间接寻址方式中,操作数在

中。A.通用寄存器B.堆栈C.主存单元D.段寄存器答案:C思考题思考题8086指令MOVAX,[BX],该指令源操作数的寻址方式为

。A.立即寻址B.寄存器寻址C.直接寻址D.寄存器间址答案:D8086指令MOVAX,[3000H],该指令源操作数的寻址方式为

。A.立即寻址B.寄存器寻址C.直接寻址D.寄存器间址答案:C思考题8086在基址加变址的寻址方式中,基址寄存器可以为

,变址寄存器可以为SI或DI。A.AX或CXB.BX或BPC.SI或BXD.DX或DI答案:B思考题8086CPU在基址加变址的寻址方式中,基址寄存器可以为BX或BP,变址寄存器可以为

。A.AX或CXB.BX或BPC.SI或BXD.SI或DI

答案:D思考题8086/8088可用于寄存器间接寻址的寄存器有

个。A.1B.2C.3D.4答案:D思考题采用寄存器间接寻址时,存储单元的有效地址由寄存器指出,这些寄存器为

。A.AX,BX,CX,DXB.CS,ES,DS,SSC.BX,BP,SI,DID.SP,BP,SI,DI

答案:C思考题如果以BP寄存器对操作数进行间接寻址,则操作数默认在

。A.代码段B.数据段C.堆栈段D.扩展段

答案:C思考题如果以BX寄存器对操作数进行间接寻址,则操作数默认在

。A.代码段B.数据段C.堆栈段D.扩展段答案:B思考题MOVAX,ES:[BX][SI]的源操作数的物理地址是

。A.16×(DS)+(BX)+(SI)B.16×(ES)+(BX)+(SI)C.16×(SS)+(BX)+(SI)D.16×(CS)+(BX)+(SI)答案:B思考题(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中的变量名VAL(偏移量)值为50H,指出下列各条指令中源操作数的寻址方式是什么?对存储器操作,其物理地址是多少?(1)MOVAX,[100H](2)MOVAX,ES:[BX](3)MOVAX,[BP](4)MOVAX,VAL[SI](5)MOVAX,[BX][SI](6)MOVAX,VAL[BX][SI]思考题3.4.4指令的分类

8086指令系统中,包含133条基本指令,与寻址方式结合,再加上不同的数据形式,可构成上千种指令。①按功能指令可分为6类:②数据传送类③算术运算类④逻辑运算与移位类⑤串操作类⑥处理器控制类1、数据传送类

可完成寄存器与寄存器之间、寄存器与存储器之间,寄存器与I/O接口之间的字节或字传送。特点:除SAHF和POPF不影响标志寄存器内容。共14条,分为4小类:通用数据传送(5条)目标地址传送(3条)标志位传送(4条)I/O数据传送(2条)1、数据传送类

1、数据传送类字节或字传送:MOV目的,源字压入堆栈:PUSH源字弹出堆栈:POP目的字节或字交换:XCHG目的,源字节翻译:XLAT

①通用数据传送指令(5条)1、数据传送类:通用数据传送源操作数:8/16位寄存器、存储器中的某个字节/字,或者

8/16位立即数;目标操作数:

8/16位寄存器、存储器中的某个字节/

字,不能为立即数;

MOVd,s;将源操作数s指定的内容送到目的d立即数存储器通用寄存器段寄存器1、数据传送类:通用数据传送MOV指令可传送8位数据,也可传送16位数据。MOV指令中的两个操作数s和d,必用1个寄存器,不允许同为存储单元。不能用CS和IP做目的操作数。不允许段寄存器之间直接数据传送。不允许立即数做目的操作数。不能向段寄存器送立即数。

MOV指令需注意问题:1、数据传送类:通用数据传送MOVAX,0:AX清0,字传送MOVAL,12H:AL12H,字节传送

例1:8/16位立即数送累加器AL和AX的指令。MOVAL,[SI]MOV[DI],AL例2:两个存储单元(SI)和(DI)之间传送数据。1、数据传送类:通用数据传送MOVAH,AL:AHAL,字节传送MOVDS,AX:DSAX,字传送MOVSI,BP:SIBP,字传送

例3:CPU内存寄存器之间(除CS,IP外)实现数据的任意传送。1、数据传送类:通用数据传送MOVAL,BUFFER:AL内存单元BUFFER中字节内容MOVAX,[SI]:AXSI间接寻址指示的内存两单元字内容MOV[DI],CX:[DI]CX的内容

例4:CPU内部通用寄存器与存储器之间实现的数据传送1、数据传送类:通用数据传送MOVAX,DATA:AX数据段首地址DATAMOVDS,AX:DSAX

例5:将数据段首地址DATA填入DS中1、数据传送类:通用数据传送特点:s和d可以是16位寄存器或存储器两相邻单元;堆栈按字操作;每执行一条入栈指令,堆栈地址指针SP减2,入栈的数据位于栈顶;高位字节先入栈,放在较高地址单元,低位字节后入栈,放在较低地址单元:“先进先出原则”执行弹出指令时,过程相反,栈顶指针的值加2;CS段寄存器值可以入栈,但不能反过来弹出一个字到CS。

PUSHs:将源操作数(16位)压入堆栈POPd:将堆栈中当前栈顶两相邻单元数据字弹出到d1、数据传送类:通用数据传送特点:可以在通用寄存器和累加器之间,通用寄存器之间交换;通用寄存器与寄存器之间进行;两个存储单元之间不能交换;不能使用立即数;段寄存器与IP不能作为一个源或目的操作数;

XCHGd,s:将源操作数和目的操作数(字或字节)相互对应交换位置。1、数据传送类:通用数据传送将寄存器AL中设定的一个字节数值变换为内存一段连续表格中的另一个相应代码,以实现编码制的转换。对于一些无规律的代码转换比较方便。使用指令前:BX寄存器指向表的首地址

AL中存放待查的码,即某一项与表首址的距

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论