微机原理及单片机接口技术_第1页
微机原理及单片机接口技术_第2页
微机原理及单片机接口技术_第3页
微机原理及单片机接口技术_第4页
微机原理及单片机接口技术_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

9.11第一章1.1.1分类1.按字长分类:4、8、16、32、64位机2.结构类型:单片机、单板机、微型计算机3.用途:个人计算机、工作站/服务器、网络计算机。4.体积:台式机、便携式。1.1.2性能指标由计算机系统的结构、指令系统、硬件组成、软件配置等多方面决定。主频:指微型计算机CPU的时钟频率,主频决定计算机的速度。字长:指微型计算机内部一次处理的二进制的位数,字长越长,运算精度越高,功能越强。存储器的容量:分为内存储器(内存或主存)和外存储器。内存:CPU直接访问的存储器,需要执行的程序和需要存储的数据放在其中。外存:硬盘存储周期:主存储器完成一次读写所需要的时间,存储时间越短,计算机运算速度越高。(与珠村器指标有关)运算速度:衡量计算机性能的重要指标。指微型计算机每秒所能执行指令的条数。1.2.1微型计算机系统微型计算机微型计算机(主机)包括:微处理器、存储器、输入输出接口、系统总线(连接)存储器存储器是微型机的存储和记忆装置,用来存储数据、程序、中间结果和最终结果的数字信息。分为随机存储器(RAM)和只读存储器(ROM)。读操作是CPU将内存单元的内容读入CPU内部写操作是CPU将信息传送到内存单元保存起来(2)系统总线分为地址总线(AB)、数据总线(DB)、控制总线(CB)。地址总线:地址总线的位数决定了CPU可直接寻址的内存容量。(三态 单向总线)数据总线:用来传输数据和信息的。数据总线的条数和所用微处理器的 字长相等(三态双向总线)控制总线:传送各类控制信号。 每条控制总线最多传送两个控制信号。控制信号分为两类:1.CPU发出(如读命令、写命令、中断响应等) 2.存储器和外部设备的状态信息,(如中断请求、 复位、总线请求)控制总线宽度根据系统需要确定,传送方向就具体控制信号而定。(3)微处理器:算术逻辑部件、控制部件、寄存器组三部分组成1.2.2微处理器微处理器(1)微处理器简称MPU,它是一个中央处理器CPU。(2)CPU是微型计算机的核心部件,它将运算器、控制器、寄存器通过内部总线连接在一起,并集成在一个独立芯片上。(具有解释指令、执行指令、和与外界交换数据的能力)。1)运算器由运算逻辑单元、累加器、标识寄存器及相应控制逻辑组合而成的电路。(在控制 信号下可完成加减乘除等运算)控制器(计算机控制中心。指令寄存器、指令译码器、操作控制器组成)它对指令进行分析、处理以及产生控制信号。同时产生控制部件所需的 定时脉冲信号,是计算机各部件协调的工作。控制器只会是通过程序进行的,程序放在存储器中,它依次从存储器中 取出指令。控制器根据指令的要求,对CPU内部和外部发出相应的控制 信息。寄存器(专用寄存器固定通用寄存器依据需要规定用途)用来存放参加处理和运算的操作数,以及存放数据处理的中间结果和最 终结果性能指标主频:微处理器的时钟频率。外频:微处理器外部总线工作频率。制造工艺:管子之间最小线距来衡量位处理器的继承密度。工作电压:微处理器正常工作所需电压。(热量)地址线宽度:决定了为处理器可以访问的物理地址空间。数据线宽度:决定了微处理器与外围部件内存以及输入/输出设备之间依 次数据传输的信息量。内部协办处理器:包含它的话,可以加快特定类型的数值计算。超标量结构:在一个时钟周期内微处理器可以执行一条以上的指令,即 至少包括两条指令流水线。L1/L2高速缓存:一级二级高速缓存。可以提高为处理器的运行效率。回写结构缓存:读写操作均有效,速度较快通写结构缓存:及对读操作有效。1.2.3单片机、单板机、多板机(了解)1.3微型计算机基础知识8位微型计算机地址总线16位,最大寻址范围2^16=64KB16位计算机的地址总线20位,最大寻址范围2^20=1MB32位——4GB36位——64GB1.3.1计算机数制及其相互转换二进制、八进制、十进制、十六进制之间相互转换。B、O、D、H(2、8、10、16)数制:一定规律的计数规则基数:一个正整数,它等于相邻数位上权的比系数:一个数的一组数字或符号中各个位数上的数字权:用数字或符号表示一个数时它所具有的位值1.3.2计算机数值表示及其运算原码、补码(取反加1)、反码。 (简单要掌握)加减乘除运算。补码加减法运算1.3.3数的定点和浮点表示(1)定点数:指小数点在数值中的位置固定不变。用这种方法表示的数称为定点数。1)纯小数:小数点固定在符号位之后。范围-(1-2^(-n))≤X≤1-2^(-n)2)纯整数:小数点固定在最低位之后。-(2^n-1)≤X≤2^n-1(2)浮点数:指小数点在数值中的位置不是固定不变,实际位置将随阶码而浮动,用这种 方法表示的数叫做浮点数。一个浮点数a由两个数m和e来表示:a=m×b^e。在任意一个这样的系统 中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。 m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间 的整数,包括0和b-1)。编码格式:阶符±阶码e数符±尾数m阶符和数符都是一位,0表示正1表示负。1.3.4溢出概念计算机表示的数的范围是一定,如果超出这个范围,计算机就会发生溢出。(上溢和下溢)。1.4常用编码及表示用某种文字符号或数码串来表示一对应数字、信号和状态的过程,叫做编码。BCD码表示0-9,加减计算时,记得调整加六(压缩、非压缩)ASCII注意:B、D、H:2、10、16.ASCII:0~9:30HA~F:37HA~Z与a~z相差20HBCD码:当结果10进制和大于9或大于等于16时,必须加6调整。9.12第二章8086/8088微处理器及其结构内部结构一、微处理器简介字长:16位/准16位时钟频率:标准主频5MHz数据地址总线复用内存容量:20位地址总线,可直接寻址1MB存储空间端口地址:16位I/O地址总线,可直接寻址64KB个端口中断功能:可处理内部软件和外部硬件中断,中断源可达256个两种工作模式:支持单片CPU和多片CPU系统工作。信息处理时采用执行指令和取指令并行进行内存采用分段的管理方式微处理器和协处理器可以工作在同一系统中微处理器内部结构(1)分为两个逻辑单元:1)执行部件EU。2)总线接口部件BIU两个单元相互独立,分 别完成各自操作两个单元可以并行执行(执行指令、取指令),实现指令取指和执行的流水线操作BIU功能:总线接口单元是微处理器内存与存储器和I/O接口传送信息的通道。BIU负责从 内存中将指令送到指令队列中、负责数据从内存或I/O口送到执行单元EU、负 责将执行单元的运行结果送到内存或I/O接口。当执行单元执行转移类指令时,指令队列立刻被清除总线接口单元又重新开始从内存中 取转移目标处的指令代码送入指令队列。地址加法器:产生20位地址。指令指针寄存器IP:用于存放要执行的指令的偏移地址,不能作为一般寄存器使用。EU功能负责译码和执行指令三、8086流水线(1)总线接口部件BIU和执行部件EU并不是同步工作的,两者的动作管理遵循如下原则:每当8086的指令队列中有2个空字节,BIU就会自动把指令取到指令队列中。而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。在执行转移、调用和返回指令时,指令队列中的原有内容被自动清除。四、8086微处理器的寄存器结构1用来暂时存放参加运算的操作数和运算过程中的中间结果,减少程序执行的过程中访 问存储器的个数。可供编程时用的有14个16位寄存器,用途分为三类:通用寄存器、控制寄存器、段 寄存器。通用寄存器分为:数据寄存器、地址指针和变址寄存器1)数据寄存器控制寄存器8086位处理器的控制寄存器主要有:指令指针寄存器IP状态标识寄存器FLAG指令指针寄存器IP:16位寄存器,存放EU要执行的下一条指令的偏移地址,用以 控制程序中指令的执行顺序。(即程序运行过程中,IP始终指向下一次要取出的指 令偏移地址。或称IP和CS一起指向下一条指令的物理地址。)物理地址=CS(段基址)×16【起始地址】+IP(偏移地址)在十六位进制CS+0状态标识寄存器:一个16位寄存器,共9个有效标志,6个状态标志,3个控制标 识。段寄存器由于8086微处理器可直接寻址的存储器空间是1MB,直接寻址需要20位地址码,而所有内部寄存器是16位的,用这些寄存器只能寻址64KB的空间。(采用储存器分段技术来实现用16位地址寻访1MB存储空间。)代码段寄存器CS(CodeSegment):存放当前正在运行的程序代码所在段的段基值, 表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移值则由 IP提供。数据段寄存器DS(DataSegment):指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基值。堆栈段寄存器SS(StackSegment):指出当前堆栈的底部地址,即存放堆栈段的段基值。附加段寄存器ES(ExtraSegment):指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。8086/8088区别1)8088指令队列长度仅有4个字节(8086有6个),只要出现一个空闲字节,BIU就 会自动访问存储器,去新的指令来补充指令队列的空缺。(CPU限制)2)8088CPU的BIU通过总线控制电路与外部交换数据的数据总线宽度是8位,总线控 制电路与专用寄存器之间的数据总线宽度也是8位,而EU内部总线是16位。(8086是16位的,8088是8位的。这与二者的外部数据总线的根数是相同的为了兼容性)引脚不同(1)AD15~AD0的定义不同:在8086中都定义为地址/数据复用总线;而在8088中, 由于只需用8条数据总线,因此,对应予8086的AD15~AD8这8条引脚,只作地址线使 用。(2)34号引脚的定义不同:在8086中定义为BHE信号;而在8088中定义为SS0,它与 DT/R,IO/M一起用作最小方式下的周期状态信号。(3)28号引脚的相位不同:在8086中为M/IO;而在8088中被倒相,改为IO/M,以便 与8080/8085系统的总线结构兼容。第二节80868088微处理器外部结构简介:(1)8086/8088内部结构基本相同,外部都是采用40引脚双列直插式封装(DIP),它们都 采用外部数据总线与地址总线分时复用的方法用以减少芯片引脚,(2)40条引脚的功能可分为三类:数据总线、地址总线、控制总线。它们有两种模式:最大模式、最小模式。最小模式系统中只有一个微处理器,系统的所有控制信号全部由8086/8088提供。最大模式中有多个微处理器,系统中所有控制信号全部由总线控制器提供。8086,16根数据线,20根地址线。8088,8根数据线,20根地址线。微处理器具备:1)能够接收发送数据2)能够对接收的数据和发送的数据进行相应的处理3)能够对指令进行寄存、译码并执行指令操作4)能够暂存少量数据5)能够提供系统所需的定时和控制信号6)能够响应I/O设备发出的中断请求。8086/8088与8位机相比1)处理信息时,采用执行指令和取指令并行进行2)8080采用串行串行工作方式,而8086/8088取指令和执行指令可同时进行。2.2.18086/8088在最小模式中引脚定义AD15——AD0(AddressDateBus)地址/数据线。数据总线16根,传送数据为双向三态输入/输出,T1时CPU这些引脚输出存储 器或I/O端口的地址,T2——T4,用来传输数据。在中断响应及系统总线“保持响应”周期时, AD15——AD0被设置成高组 态。8088:AD7——AD08条地址/数据线,A15——A8只用来输出地址。A19/S6——A16/S3地址状态线(Address/status)(1)4根线时分时复用的,单向输出传送地址和状态。T1时刻A19/S6——A16/S3作为地址线输出地址信号,与AD15——AD0一起构 成20位物理地址,可访问1MB。T2——T4时刻A19/S6——A16/S3作为状态线输 出。S6恒等于0,以表示8086/8088当前连接总线上。S5表示中断允许标志位的状态:1表明CPU可以响应可屏蔽的中断请求,0表示 禁止一切可屏蔽的中断。S4、S3代码组合对应状态控制总线3.NMI(Non-MaskbleInterrupt)不可屏蔽中断请求信号(1)不受IF状态影响也不能用软件进行屏蔽,中断类型为2.(经常 处理电源掉电等紧急情况)。4.INTR(InterruptRequest)可屏蔽中断请求信号线(1)IF为1时,表示外设提出了中断请求,8086在每个指令周期最后一个T状态去 检测信号,一旦检测到信号有效,当IF(中断允许位)=1,则CPU在执行完 当前指令后响应中断。(2)用STI指令,使标识允许标志位IF=1,用CLI指令,使IF=0,实现中断屏蔽。5.CLK(Clock)系统时钟信号线(1)系统时钟一般由8284时钟发生器产生,8086为5~15MHz;8088为5MHz,时钟信号比为33%。6.RESET(Reset)系统复位信号线(1)高电平有效,CPU接收到复位信号时,停止现行操作,并初始化段寄存器、标志位寄存器、指令指针、指令队列,CS=FFFFH,标识寄存器为清0,指令队列变空,其它段寄存器为0000H。(2)复位脉冲宽度不得小于4个时钟周期,接通电源时不能小于50us。7.READY(Ready)“准备好”信号线(1)“准备好”信号是由被访问的存储器或I/O端口发来的响应信号,高电平有效。(2)CPU在每个周期的T3时刻检测READY信号线,当READY为高电平时,表示被访问的内存或I/O设备已准备好,CPU可以进行数据传输。若=0,在T3结束时CPU插入几个T等待状态,直到READY信号有效,才进入T4状态。8.非TEST(Test)等待测试信号线(1)用于最大模式中,且只有在执行WAIT指令时才使用。当CPU执行 Wait指令时,每隔5个时钟周期对该引脚的输入进行一次测试,若为高电平,CPU将停止取消条指令而进入等待状态,重复执行Wait指令,直到其变成低电平,继续执行上一直令。等待期间允许外部中断。9.非INTA(InterruptAcknowledge)中断效应信号(1)输出,低电平有效。它是CPU对外部发来的中断请求信号INTR的响应信号。(2)在中断响应总总线周期T2/T3/TW状态,发出两个连续负脉冲。第一个负脉冲是通知外设接口,它发出的中断请求以获得允许,准备好中断类型码;外设接口收到第二个负脉冲后,将中断类型码放在数据总线上,从而使CPU读到该中断请求的详细信息。10.ALE(AddressLatchEnable)地址锁存允许信号(1)用作8282/8283地址锁存起的片选信号,在T1状态,ALE 有效,表示地址/数据总线上传送的是地址信息,将它锁存到8282/8283中。这是 由于地址数据/总线分时复用所需要的,ALE信号不能浮空(就是逻辑器件的输入引脚不接任何电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平)。11.非DEN(DataEnable)最小系统下作为数据允许信号线(1)作为数据收发器使用时,DEN为收发器提供一个控制信号,当其有效时,表示CPU当前准备发送或接收一个数据。在DMA方式时,被置为高组态。12.DT/非R(DataTransmit/Receive)数据发送/接收控制信号线(1)三态,输出。该信号控制8286/8287数据总线收发器的传送方向。(2)当其为高电平,CPU向内存或I/O端口发送数据;当其为低电平,CPU从内存或I/O端口接收数据。在DMA方式时,DT/非R被设为高组态。13.M/非IO(Memory/InputandOutput)存储器输入输出信号线(1)当其为高电平,表明CPU正与存储器之间进行数据传送。当其为低电平时,表示CPU与输入/输出设备之间进行数据传送。一般在前一个总线周期的T4状态,其为有效电平,直到本周期的T4状态为止。在DMA方式时M/非IO被设置为高阻状态。14.WR(Write)允许写信号线(1)低电平:CPU进行I/O口写操作。高电平:CPU进行存储器的写操作。(2)在写总线周期的T2/T3/TW状态,其为低电平,在DMA方式时,该信号被设置为高阻状态。15.HLDA(HoldAcknowledge)总线保持响应信号(1)CPU一旦测试到HLOD总线请求信号有效,如果CPU允许让出总线,在当前总线周期结束时,与T4状态发出HLDA信号,表示响应这一信号请求,并立即让出总线使用权,将3总线设置成高阻状态。总线请求不见获得总线控制权后,总线使用完毕后使HOLD无效。16.HPLD(HoldRequest)总线保持请求信号线(1)输入,当8086/8088最小模式系统中CPU之外的其他共享总线的部件要求占用总线时,通过信号向CPU发出一个高电平的总线保持请求信号。17.RD(Read)读选通信号(1)当其为低电平时,M/非IO为低电平时,表示CPU当前正在进行I/O端口的读操作。M/非IO为高电平时,表示CPU当前正在进行存储器读操作。在DMA方式时,该信号被设置为高组态。在读总线周期的T2/T3/TW状态,非RD为低电平。 在保持响应周期,被设置为高阻状态。18.MN/非MX(Minimum/MaximumModeControl)最小最大模式控制信号线(1)当其为高电平时,最小模式。低电平:最大模式。19.34引脚8086BHE/S7(8088非SSO)高8位数据总线有效/状态分时复用线,三态、输出,在总线周期T1状态时输出,S7在T2~T4时输出。当非BHE/S7引脚上输出非BHE信号时,表示总线高8位AD15~AD8上数据有效。SSO系统状态信号线,输出低电平有效。与IO/非M、DT/非R、的不同组合有不同操作。VCC/GND2.2.28086最小工作模式下的系统配置1.硬件包括:1片时钟发生器82843片地址锁存器8282(当系统存储器及外设较多 时,需增加2片8286或8287数据接收器以增加数据总线的驱动能力)2.8282是典型8位锁存芯片。8086系统采用20位地址,加上非BHE和ALE信号,所以需 要3片8282作为地址锁存器。3.8282的选通信号输入端STB和微处理器ALE端相连,当ALE为高电平时,输出(DO0~DO7)随输入(DI0~DI7)变化。当ALE为低电平时,输出被锁存。总线驱动器(发送器和接收器):当一个系统中所连得存储器和外设较多时,数据总线上需要有发送和接收器来增加数据总线的驱动能力。8286和8287功能相同,相位相反。8286/8287有两个控制输入信号:传送方向控制信号和输出允许信号非OE。当非OE有效时,允许数据通过。当非OE,禁止数据通过内部缓冲器, 输出成高阻状态。T为高电平时,A0~A7为输入端,B0~B7为输出端。T为低电平时,A0~A7为输出端,B0~B7为输入端。时钟发生器8284功能:产生恒定的时钟信号,对准备好信号及复位信号进行同步。外界控制信号RDY及 非RES信号可以再任何时候到来,8284能把他们同步在时钟后延时输出READY 及RESET信号到8086微处理器。2.2.38086微处理器最大工作模式下的引脚当MN/非MX=0时,8086CPU工作在最大模式系统中。此时除24~31外,其他引脚与最小模式完全相同。非S2、非S1、非S0总线周期状态信号 用来指示当前总线周期所进行的操作类型,它们经由总线控制器8288进行译码,产生 相应的访问存储器或I/O端口的总线控制信号。非LOCK封锁信号:三态,输出,低电平有效。当其有效时,表明此时CPU不允许其他系统总 线控制其占用总线。QS1/QS0指令队列状态。向外部输出,QS1/QS0两个信号组合起来,可指示BIU中指令队列的状态,以提供一种让其他处理器监视CPU中指令队列状态的手段。非RQ/非GT0,非RQ/非GT1总线请求(输入)/总线请求允许(输出)信号,双向低电平有效。其为8086和 其他处理器使用总线时所提供一种总裁电路,以代替最小模式HOLD/HLDA两信 号的功能。专门为多处理器系统而设计的。输入时表示其他处理器向CPU请求使用总线;输 出时表示CPU对总线请求的响应信号,两条线可同时与两个处理器相连,内部保 证非RQ/非GT0比非RQ/非GT1有较高的优先级。2.2.48088的引脚由于8086的CPU外部数据总线只有8条,因此分时复用地址数据总线只有 AD0~AD7.A8~A15专门用来传送地址。28管脚IO/非M,与808628管脚定义相反。34管脚SS0,它与DT/非R、IO/非M一起表示8088CPU在最小模式中的周期状态。2.3存储器组织存储器是计算机储存信息的地方。程序运行所需要的数据、程序执行的结果以及程序本身均保持在存储器中。2.3.1数据的存储格式计算机存储信息的基本单位1个二进制位(bit),一个为可以存储一个二进制数。8个bir=1个字节Byte,位编号由右向左从0开始递增,2个字节组成一个位。为了正确显示信息,每个字节单元被赋予一个地址,即存储单元地址。一个存储单元中存放的信息称为该存储单元的内容。每个存储单元的内容是一个字节,存放时字的低字节存放在低地址单元中,高字节存放在高地址单元中,并以低地址作为该字的地址。从偶地址开始存放的字,称为规则字或对准字,从奇地址开始存放的字,称为非规则字或非对准字。2.3.28086/8088系统对存储器的组织1.8086系统对存储器的组织(1)8086存储器1MB的存储空间被分成两个512KB的存储体,分别叫低位库和高位库。低位库固定与CPU低位数据线相连,该存储器中每个地址均为偶地址。高位库与CPU的高位数据线D8~D15相连,该存储器中的每个地址均为奇地址。两个存储体之间采用字节交叉编码方式。对于任何一个存储体,只需要19位地址线A1~A19就够了。当A0=0,表示访问偶地址存储器。A0=1,表示访问奇地址存储器。2.8088系统对存储器的组织由于外部数据总线是8位,8088CPU每访问一次存储器只能读/写一个字节的信息,任何字的存取都需要两次访问存储器才能完成。存储器分段8086微处理器允许它们在整个存储空间浮动,各个逻辑段之间可以紧密相连,也可以相互重叠,还可以分开一段距离。规定字节的起始地址能被16整除,各个逻辑段应从节的起始边界开始,保证段起始地址的低4位地址为0。存储器地址物理地址:存储单元的实际地址。20位唯一代表存储空间每个字节单元地址段的起始地址:无符号20位二进制,各类段的第一个存储单元的物理地址。段基址:段的起始地址高16位。偏移地址:要寻址的内存单元距本段的起始地址的偏移量(有效地址)。逻辑地址:在程序中使用的地址,由段基址和偏移地址两部分组成。公式:物理地址=段基址*10H+偏移地址专用和保留的存储单元(1)00000H~003FFH:存放中断向量表,每个中断向量占4个字节,前两个字节放中断服务程序入口的偏移地址,后两个字节存放中断服务程序入口的段基址。FFFF0H~FFFFFH:系统上电或复位时,CS=FFFFH,IP=0000H,故FFFF0H为系统的复位地址,从这个地址开始存放一条无条件转移指令,使系统自动跳转到初始化程序。2.48086微处理器的工作时序简介:(1)8086/8088CPU中把BIU完成一次访问存储器或访问一次I/O端口操作所需要的时间称作一个总线周期。实际上EU和BIU都不可能完全处于连续工作状态,因为BIU可能由于EU执行某些复杂指令时内部操作时间很长,且不需要访问外设,这时BIU处于空闲状态。等待周期:考虑到CPU与慢速的存储器或I/O接口之间传送速度间的配合,有时需要在T3、T4状态之间插入若干个附加的时钟周期Tw,以等待存储器或I/O接口将准备好的数据能送上数据总线,或可靠地从数据总线上获取数据后,再通知CPU脱离等待状态,并立即进入T4状态。空闲状态:总线周期不是一直存在,时钟周期是一直存在。2.4.2最小工作模式读/写总线周期课堂笔记:浮空区间是为数据输入准备,时间长短取决于设备;(读操作)写操作中,浮空区间为0(CPU写好直接发送)存储器:8086内部8根数据线,而引脚16根地址线——间隔分开(奇、偶地址)一部分19根线非BHE与A0匹配晶振频率(分频)——时钟周期;CPU——CLK脉冲周期指令周期:随寻址方式不同而不同。TW以时钟周期为单位。第三章8086/8088CPU指令系统第一节8086/8088CPU指令格式与寻址方式汇编指令组合:指令助记符【操作数】注:(目的操作数源操作数)(1)指令助记符:表示命令的名字,它是机器指令功能的符号表示(例MOV)。汇编程 序对其汇编时,将其译成对应的二进制机器指令代码。(2)操作数:是指令要处理的数据或数据所存放的地址。助记符空格操作数之间用,分开。二、8086/8088寻址方式:立即数寻址方式、寄存器寻址方式、存储器寻址方式、I/O端口 寻址方式立即寻址方式MOVAL,66H 紧跟操作码之后,作为指令的一部分存放在代码段中的操作数。主要用来寄存器或存储器单元赋初值,它只能用于源操作数。寄存器寻址方式MOVDS,AX存放在CPU的某个寄存器中。在汇编指令中:直接写出指定寄存器的名称存储器寻址方式(由于寄存器的数量有限,大量数据要放在存储器中)访问存储单元需要根据:段基址和段内偏移量(即有效地址)来计算其物理地址段基址:DSSS直接寻址方式MOVAX,[4000H]其操作数地址的16位偏移量直接存放在指令操作码之后,他和操作码一起存 放在代码段中。完整的逻辑地址表达式为:段R:[基址R+变址R*比例因子+位移量]冒号之前称为段超越前缀助记符(简称段超越前缀),用于通知CPU在生成物理地址时应该使用那个段寄存器的内容以获取逻辑段的段基址。冒号之后的部分称为有效/偏移地址表达式。用来通知CPU在生成物理地址时在一个逻辑段中的某个存储单元,相对于段基址的偏移/有效地址。(2)寄存器间接寻址方式操作数存放在存储器中,而操作数的有效地址可在BX,BP,SI和DI(统称间 址寄存器)寄存器之一中。其中BX、BP为基址寄存器,SI和DI为变址寄 存器。若间址寄存器为BX、SI、DI时,则默认操作数寄存在数据段中。(DS)*16+(BX)(DS)*16+(SI)(DS)*16+(DI)若间址寄存器为BP时,则默认操作数寄存在堆栈SS段中。(SS)*16+(BP)(3)寄存器相对寻址地址有效地址是基址或变址寄存器中内容与指令中指定的8位或16位偏移量之和。若间址寄存器为BX、SI、DI时,则用DS段寄存器的内容作为段基址。物理地址=(DS)*16+(BX)+disp物理地址=(DS)*16+(SI)+disp物理地址=(DS)*16+(DI)+disp如MOVAX,[COUNT+BX]若间址寄存器为BP时,则用SS段寄存器的内容作为段基址。物理地址=(SS)*16+(BP)+disp4..基址变址寻址方式有效地址是一个基址寄存器与一个变址寄存器的内容之和。物理地址=(DS)*16+(BX)+(SI)或(DI)物理地址=(SS)*16+(BP)+(SI)或(DI)相对基址变址寻址方式:操作数的有效地址是一个基址、基址寄存器的内容、8位或16位偏移量disp之和。I/O端口寻址方式(输入指令IN输出指令OUT)直接寻址AL适用于00~FFH如INAL,80H间接寻址适用于0000~FFFFH的全部端口,再输入输出指令中,用DX存放16位端口 地址。如MOVDX,2000HINAL,DX表示DX确定的2000H端口读取一个字节数据到AL中注意:(1)除了立即寻址和寄存器寻址外,其他寻址方式操作数都来自存储区或I/O端口(2)只有BX、BP、DI、SI可在方括号内出现。 (3)SI、DI(BX、BP)可单独出现在方括号内,也可与BX、BP(SI、DI)或常熟 一起出现在【】内,不允许SI、DI或BX、BP同时出现在一个括号内。一个【】内包括多个内容时,它们只能做加法运算。若【】内包含BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用段 寄存器DS提供的段基址。第二节8086/8088指令集8086基本指令从功能上分:数据传送指令、算术运算指令、逻辑运算指令、串行操作指令、控制转移指令、处理器控制指令。数据传送指令负责在寄存器、存储单元和I/O端口之间传送数据和地址。1通用数据传送指令通用数据传送指令(MOV)格式:MOVdest,src功能:把源操作数src中的字节或字传送到目的操作数dest中1)IP不能作为MOV指令的操作数2)CS不能作为MOV指令的目的操作数3)MOV的两个操作数位数必须相同4)立即数不能直接送到段寄存器中,它可以通过其它MOV指令实现5)不允许段寄存器之间直接传送,可通过MOV实现6)不允许两个存储单元之间的直接传送,可通过MOV实现7)MOV指令不影响标志位交换指令格式:XCHGOPRD1,OPRD2功能:将两个操作数OPRD1,OPRD2交换。1)段寄存器不能作为交换指令的操作数2)两个操作数中,必须有一个寄存器操作数,而不允许两个都是存储器操作 数。3)立即数不能作为交换指令的操作数4)交换指令不影响标志位堆栈操作指令(数据存取操作遵循“后进先出”原则的一段内存区域叫做堆 栈)主要用来保护现场和恢复现场堆栈指令分为:PUSH(把信息压入堆栈)POP信息由堆栈弹出1)入栈指令格式:PUSHsrc功能:将源操作数指定的寄存器或存储单元中的字数据压入到堆栈的顶 部。具体操作分两步:1修改指针(SP)-2→SP2.把源操作数推 入由SP指向的内存字节单元堆栈中。出栈指令格式:POPdest功能:将堆栈栈顶的字数据弹出到由目的操作数指定的寄存器或存储 单元中。分两步1把SP所指向的字单元的内容传送到目的地 址中2修改指针(SP)+2→SP指针指向栈顶位置。堆栈使用必须是字操作。CS不能作为POP指令的目的操作数堆栈操作不影响标志位累加器专用传送指令输入输出指令(INOUT)换码指令(XLAT)输入/输出指令(用来完成I/O端口与累加器之间的数据传送)1)IN输入指令直接寻址方式INAL,port;从port端口读入一字节数据INAX,port;从port端口读入一 字数据功能:从8位地址端口中读入一个字节数据或一个字数据。当读入一个 字数据时,若外设端口的宽度为8位则从port中读入一个字节数 据送AL中,再从port+1中读入一个字节送入AH中。该指令的端 口地址(00~FFH)直接包含在IN指令里,可寻址256个端口, 当端口地址大于255时,需要间接寻址。间接寻址方式INAL,DX;从DX寄存器指向的端口读入一个字节的数据INAX,DX;从DX寄存器指向的地址端口读入一个字数据功能:从DX寄存器指向地址端口读入一个字节数据或字数据。当读入 一个字数据时,若外设端口的宽度为8位,同上,也是对两个连续 的8位端口进行输入操作。2)OUT输出指令直接寻址方式OUTport,AL;将AL内容写入port端口OUTport,AX;将AX内容写入port端口功能:将AL.AX内容写入port端口。具体同上间接寻址方式OUTDX,AL/AX;将内AL/AX容写入DX寄存器指向的端口。写入一个 字数据时同上。注意:输入/输出指令只能通过累加器AL/AX来传送数据输入输出指令的字或字节传送操作的选用,取决于外设端口的宽度直接输入输出指令,寻址外设端口范围0~255;而间接寻址范围 0~65535。输入输出指令不影响标志位换码指令格式:XLAT功能:以(BX)为基,(AL)为索引,将索引到的值返回在AL中。规定BX寄存器指向表的首地址,AL中的值为表中对应项与表格首地址之间 的偏移量,将该单元的内容送到AL中。3.目标地址的传送指令有效地址传送指令LEA格式:LEAreg,src功能:把源操作数的有效地址EA传送到目的操作数中。源操作数必须是存储器的操作数,而目的操作数必须是16位通用寄存器。执行这 条指令不影响标志位。数据段寄存器传送指令LDS格式:LDSreg,src功能:从源操作数所指定的存储单元开始连续取出4个字节的内容,把前两个字 节(变量的偏移地址)传送到目标操作数(常用SI寄存器),后两个字节(变量的 段基址)传送到DS寄存器中。不影响标志位。附加段寄存传送指令LES格式:LESreg,src功能:从源操作数所指定的存储单元开始连续取出4个字节的内容,前两个字节 (变量的偏移地址)传送到目的操作数(常用DI寄存器),后两个字节(变量 的段基址)传送到ES段寄存器。不影响标志位。LDS和LES指令常用来在串操作指令之前传送串(以DS内容为段基址,SI 内容为偏移地址)和目的串(ES的内容为段基址,DI的内容为偏移地址)的 地址指针。4标志位传送指令标识寄存器送AH指令LAHF格式:LAHF功能:将标志寄存器的的低字节内容传送至AH寄存器中。不影响标志位将AH的内容送标识寄存器指令SAHF格式:SAHF功能:将AH寄存器中的相应位送至标识寄存器的SF.ZF.AF.PF.CF位。执行 这条指令不影响OF.DF.IF.TF等状态。标志位入堆栈指令PUSHF格式:PUSHF功能:先执行(SP)-2→SP,再将整个标志寄存器Flag推入堆栈保存。指令 不影响标志位标志位弹出到标志位寄存器指令POPF格式:POPF功能:把现行堆栈栈顶的字数据送入标识寄存器Flag,在执行(SP)+2→SP.执行者条指令后,标识寄存器的标志位取决于原堆栈栈顶的内容。算术运算类指令加法指令不带进位位的加法指令格式:ADDdest,src功能:将源操作数src与目的操作数dest的内容相加,并将结果送回目的操作数。注意:目的操作数不能作为立即数不允许两个操作数都为目的操作数段寄存器不能参与加法器执行指令影响标志位CFOFPFSFZFAF(2)带进位位的加法指令格式:ADCdest,src功能:同上ADC用于多字节算术运算加1指令格式:INCdest功能:将目的操作数加1后送回目的操作数。目的操作数不能为立即数和段寄存器目的操作数为存储器时,应指明按字类型还是按字节类型。本操作影响OFPFSFZFAF2减法指令不带借位的减法指令SUB格式:SUBdest,src功能:目的操作数减去源操作数,送回目的操作数注意:同ADD带借位的减法指令SBB格式:SBBdest,src功能:目的操作数减去源操作数的内容和标志位CF的值,结果送回目的操作数SBB与ADC指令类似主要用于多字节减法减1指令格式:DECdest功能:目地操作数减1后送回目的操作数同INC指令求补指令NEG格式:NEGdest功能:对目地操作数求补,送回目的操作数注意:1)目的操作数可以是通用寄存器寻址方式或存储器寻址方式,若是存储器操作数, 应指明是字类型还是字节类型。2)在字节操作时,对-128求补,对字操作时,对-32768求补,但目地操作数不变, 但OF=1.3)执行指令影响标志位,AFOFPFSFZFCF仅当目地操作数为0时,CF=0;否侧 为1。(5)比较指令CMP格式:CMPdest,src功能:从目地操作数减去源操作数的内容,相减结果不回送目的操作数,影响所有状态 标识位。注意:分情况相等:根据ZF状态判断。AF=1,则两操作数相等。否则不等。不等:分为无符号有符号两个无符号数,若CF=0,则被减数大于减数,否则相反有符号OF异或SF=0,被减数大于减数。否则,相反。乘法无符号的乘法格式:MULsrc功能:字节数据相乘,将累加器AL的内容与指令中指定的源操作数的内容相乘,乘积 放在AX中,AL存放乘积的低字节,AX存放高字节。字数据相乘,累加器AX的内容与指令中指定的源操作数的内容相乘,乘积 放在DX、AX,AX存放低16位,DX存放高16位。两操作数都是无符号数,目的操作数隐含使用AX/AL,源操作数可以采用寄存器 寻址或存储器寻址方式,若是存储器操作数,应指明按字类型还是按字节类型。带符号数的乘法指令格式:IMULsrc功能:与MUL功能大体相同,不同之处有两条。这个是有符号的如果乘积的高一半数位是乘积的符号拓展时,CF=0,OF=0,否则,都等于1.除法无符号除法格式:DIVsrc功能:字节除法时AX内容作为被除数,以8位源操作数为除数,其商存放在AL中,余 数存放在AH中。字除法时以DX和AX(DX的内容为高字)内容作为被除数,以16位源操作数为 除数,其商存放在AX中,余数存放在DX中。带符号的除法指令格式:IDIVsrc功能:与DIV功能相同带符号且余数符号与被除数符号相同。注意:对标志位影响不确定,0,1都无意义。IDIV指令字节除法商的范围-128~+127,字除法商的范围-32768~+32767.如果超出 范围,系统当做除数为0处理,自动产生0型中断,转去执行0中断内容。8086系统规定余数的符号与被除数的符号相同。对字节除法,若被除数只有8位时,必须将8位放在AL中,并对此数据进行拓展 16位,高8位放在AX中。对字除法,若被除数只有16位,必须将16位数据放在 AX中,并拓展32位,高16位放在DX中。对于无符号的拓展,只要把AH.DX清0 即可。字节变换字指令格式:CBW功能:将AL中的符号拓展到AH中,即若AL的D7=0,则执行CBW指令后,(AH)=00H; 若AL的D7=1,则执行CBW指令后(AH)=0FFH。CBW不影响标志位。字节拓展成双字节指令格式:CWD功能:将AX中的符号位拓展到DX中即若AL的D15=0,则执行CBW指令后,(AH)=0000H; 若AL的D15=1,则执行CBW指令后(AH)=0FFFFH。5.十进制调整指令ASCII的加法调整指令(AAA)ASCII的减法调整指令(AAS)十进制的加法调整指令(DAA)十进制的减法调整指令(DAS)乘法的ASCII调整指令(AAM)除法的ASCII调整指令(AAD)ASCII的加法调整指令(AAA)ASCII的减法调整指令(AAS)两个非压缩BCD码相减后的结果存于AL中,此指令是将AL中的数调整为非压缩BCD 码。调整方法:若(AL)低四位<等于9,且AF=0,则(AL)中高四位清零,CF=0;若(AL)低四位>9,或AF=1,则(AL)-6→AL,(AL)中高四位清零,(AH) -1→AH,AF=1,CF=1;十进制的加法调整指令(DAA)两个压缩BCD码相加后的结果存于AL中,此指令是将AL中的数调整为正确的BCD 码, 结果存于AL中。调整方法:若(AL)高四位>9,或CF=1,则(AL)+60H→AL,CF=1;若(AL)低四位>9,或AF=1,则(AL)+6→AL,AF=1;(4)十进制的减法调整指令(DAS)两个压缩BCD码相减后的结果存于AL中,此指令是将AL中的数调整为正确的BCD 码, 结果存于AL中。调整方法:若(AL)高四位>9,或CF=1,则(AL)-60H→AL,CF=1;若(AL)低四位>9,或AF=1,则(AL)-6→AL,AF=1;乘法的ASCII调整指令(AAM)两个非压缩BCD码相乘后的结果存于AX中,此指令是将AL中的数进行调整,在AX中 得到正确的非压缩的BCD码,其中AH存放高位,AL存放低位。调整方法:将AL内容除以10,商放在AH中,余数放在AL中。(6)除法的ASCII调整指令(AAD)已知被除数放在AX中,为两个非压缩的BCD码调整为二进制数,结果放于AL中。调整方法:将AH内容乘以10,再与AL的内容相加,结果存于AL同时使(AH)=0。注意:加法、减法、乘法的调整指令都是紧跟在算数指令之后,将二进制数转为十进制数。 而除法的调整指令必须放在除法指令之前,防止除法出现错误的结果。逻辑运算指令和位移指令逻辑运算指令逻辑非指令NOT格式:NOTdest功能:对目的操作数的内容求反,结果送回目的操作数。目的操作数的寻址方式可以是8位或16位的寄存器寻址或存储器寻址方式。对标志位 无影响。逻辑与指令AND格式:ANDdest,src功能:源、目的操作数进行与运算,结果存入目的操作数,CFOF清零。源操作数寻址方式可以是8、16位立即数、寄存器寻址或存储器寻址方式;而目的操作 数的寻址方式可以是寄存器、存储器寻址方式,不允许位立即数;不允许二者均为存储 器操作数。执行后CF=0,OF=0,且影响SF、ZF和PF,对AF未定义。逻辑或指令OR格式:ORdest,src功能:源、目的操作数或运算,结果存入目的操作数,同时将CF、OF清零。逻辑疑惑指令XOR格式:XORdest,src功能:源、目的操作数或异运算,结果存入目的操作数,同时将CF、OF清零对标志位影响同AND测试指令TEST格式:TESTdest,src功能:与AND指令基本相同,但结果不送回目的操作数,不改变两个操作值,只根据结 果影响标志位。操作数寻址方式的约定和对标志位的影响同AND指令。移位指令逻辑算数左移指令SHL/SAL格式:SHLdest,1或SHLdest,CLSALdest,1或SALdest,CL功能:将目的操作数左移一位或CL所指定的位,每左移一位,左边最高位移入最高位 CF,而右边的最低位补0.算数右移指令SAR格式:SARdest,1或SARdest,CL功能:将目的操作数右移一位或CL所指定的位,每右移一位,最低位移至标志位CF, 而符号为保持不变。因为符号位不变,所以OF=0;逻辑右移指令SHR格式:SHRdest,1或SHRdest,CL功能:将目的操作数右移一位或CL位,每右移一次,最低位移至标志位CF, 而最高 位补0。移位指令常用来进行乘以2或除以2的操作,其中,算数移位指令适用于带符号数的运 算,而逻辑移位指令适合于无符号数的运算。3.循环移位指令ROL、ROR、RCL、RCR前两条只对目的操作数内容进行循环移位,后两条把标志位CF也 包含(同时进行)在循环中。循环左移指令ROL格式:ROLdest,1或ROLdest,CL功能:对目的操作数进行循环左移1位或CL位,最高位移入标志位CF,同时返回目的 操作数的最低位。循环右移指令格式:RORdest,1或RORdest,CL功能:对目的操作数进行循环右移1位或CL位,最低位移入标志位CF,同时返回目的 操作数的最高位。带进位位循环左移指令格式:RCLdest,1或RCLdest,CL功能:把目的操作数的内容合金为标志CF一起循环左移1位或CL位。每左移一次,最 高位移至CF中,CF原值移至目的操作数的最低位。带进位位循环右移指令格式:RCRdest,1或RCRdest,CL功能:把目的操作数的内容和进位标志CF一起循环右移1位或CL位。每右移一次,最 低位移至CF中,CF原值移至目的操作数的最高位。串操作指令1.DF是8088中的一个重要的控制标志位,它决定了串指令的处理方向。DF=0:SI和DI自动加1、2DF=1:SI和DI自动减1、2(字节串和字串)2.8088提供有两条专用指令设置DF,分别是CLD和STD指令。【指令格式】CLD【功能】把标志位DF清0。【指令格式】STD【功能】把标志位DF置1。由多个字节数据组成的数据串称为字节数据串,字节串由多个字数据组成的数据串称为字数据串,字串组成数据串的字节数据或字数据称为数据串元素。(1)MOVS指令──传送指令【指令格式】MOVSB或MOVSW【功能】(1)MOVSB进行字节传送指令,把DS:SI所指向的一个字节型数据送往ES:DI所指向目的单元中。当DF=0时,令SI←SI+1,DI←DI+1;当DF=1时,令SI←SI-1,DI←DI-1。(2)MOVSW进行字传送指令,把DS:SI所指向的一个字型数据送往ES:DI所指向的目的单元中。当DF=0时,令SI←SI+2,DI←DI+2;当DF=1时,令SI←SI-2,DI←DI-2。注意:MOVS指令可以实现把内存中的一个数据,不经过寄存器的过渡由一处复制到另一处。这一点是MOV指令做不到的。(2)CMPS指令──串比较【指令格式】CMPSB或CMPSW【功能】(1)CMPSB进行字节型串比较,把DS:SI所指向的一个字节型数据与ES:DI所指向的一字节相减,把相减结果反映到条件标志位上。当DF=0时,令SI←SI+1,DI←DI+1;当DF=1时,令SI←SI-1,DI←DI-1。(2)CMPSW进行字型串比较,把DS:SI所指向的一个字型数据与ES:DI所指向的一个字相减,相减结果反映到条件标志位上。当DF=0时,令SI←SI+2,DI←DI+2;当DF=1时,令SI←SI-2,DI←DI-2。程序设计中经常会遇到比较问题,比较两个符号串是否完全相同,或者比较两个串按字典顺序的大小,这一类问题正是CMPS指令发挥作用的地方。(3)SCAS指令──串扫描【指令格式】SCASB或SCASW【功能】(1)SCASB把AL与字节型串中数据比较,用AL减去ES:DI所指向的一个字节型数据,相减结果反映到条件标志位上。当DF=0时,令DI←DI+1;当DF=1时,令DI←DI-1。(2)SCASW把AX与字型串中数据比较,用AX减去ES:DI所指向的一个字,结果反映到条件标志位上。当DF=0时,令DI←DI+2;当DF=1时,令DI←DI-2。SCAS指令通常用于查找一个数组中是否存在某个指定的值。该指令不改变数组中的任何数据,也不改变AX或AL的值,可以用循环控制的方法连续查找。LODS指令──串装入指令按照串中存放的是字节型数据还是字型数据,有两条指令分别用于从串中取出一个元素。【指令格式】LODSB或LODSW【功能】(1)LODSB进行字节型串操作,从内存中DS:SI所确定的逻辑地址处取出一个字节的数据,送到AL中。当DF=0时,令SI←SI+1,当DF=1时,令SI←SI-1。(2)LODSW进行字型串操作,从内存中DS:SI所确定的逻辑地址处取出一个字型数据,送到AX中。当DF=0时,令SI←SI+2,当DF=1时,令SI←SI-2。(5)STOS指令──往串中存入数据【指令格式】STOSB或STOSW【功能】(1)STOSB进行字节型串操作,把AL的值送往内存中由ES:DI所确定的内存中。当DF=0时,令DI←DI+1,当DF=1时,令DI←DI-1。(2)STOSW进行字型串操作,把AX的值送往内存中由ES:DI所确定的内存中。当DF=0时,令DI←DI+2,当DF=1时,令DI←DI-2。STOS指令主要用于把一段连续的存储区域以AL或AX中的值填充,特别的是,存储区的段地址必须放在附加段寄存器ES中。STOS与LODS指令配合,还可以从一个串中取出数据,有选择地存到另一个串中。(6)REPZ和REPNZ前缀REPZ和REPNZ也是串指令前缀,与REP一样都是用于控制后面的串指令重复执行,但重复执行不仅依赖于CX的值,还依赖于标志寄存器中的ZF标志位。【功能】带有REPZ前缀的串指令按下列方式执行:(1)若CX=0,则结束指令的执行,否则转(2)。(2)CX←CX-1。(3)执行一次串指令。(4)若ZF=0,则结束指令的执行,否则转(1)。REPNZ的功能与REPZ仅在第(4)项不同,REPZ是在ZF=1时控制串操作重复执行,而REPNZ则是在ZF=0时控制串操作重复执行。REPZ和REPNZ的功能可以用图7.7描述。五、控制转移指令计算机执行程序一般是顺序的逐条执行指令,但有时根据需要不在顺序执行指令,而要发生转移,所以需要转移指令。无条件转移指令JMP格式:JMPTARGET功能:使程序无条件的转移到指令指定的目的地址TARGET段内直接短转移格式:JMPSHORTTARGET功能:把当前的IP值与机器码指令指定的8位偏移量之和送到IP这里8位偏移量是一个带符号数,当它为负数时,则向前转移;当它为正数时,则向后转移,因此只允许在-128——+127字节范围内转移。段内直接近转移格式:JMPNEARTARGET功能:把当前IP值与指令指定的16位偏移量之和送至IP16位的偏移量也是个带符号数,其值为-32768——+32767,因此可以转移段内任意地 址。以上两种格式可以写成如下统一格式:JMPTARGET汇编程序在汇编时能够确定转移目 的地址到JMP指令的距离,根据距离,自动产生转移指令。段内间接转移目的地址可以由16位通用寄存器或字节存储单元指出。格式:JMPREGJMPWORD[TARGET]功能:段内间接转移指令,若用一个16位通用寄存器来寻址,则把指令中给出的寄存 器内容送至IP;若是由内存单元来寻址,则把指令中给出的字内存单元的内容送至IP。段间直接转移格式:JMPFARPTRTARGET功能:把指令中由TARGET给定的两个16位数分别送至IP和CS,即把目的的符号地址TARGET段内偏移地址送IP,把所在段的段基址送CS。段间间接转移格式:JMPDWORDPTRTARGET功能:由目的符号地址TARGET寻址方式来确定有效地址,由此有效地址所指定的双字中第一个字送入IP,第二个字送CS。2.条件转移指令条件转移指令是根据当前标志位的状态来决定程序执行的转向。若满足指令所规定的条件,则程序转移,否则顺序执行。条件转移指令是两个字节指令,一个字节操作码和一个字节偏移量。条件转移指令的目的与本条转移指令的下一条指令之间的字节距离必须在-128——+127范围内。单个标志位的条件转移指令测试ZF格式:JZTARGET(结果为0转移)JETARGET(相等时转移)功能:当ZF=1时,转移到目的地址TARGET执行程序格式:JNZTARGET(结果不为零转移) JNETARGET(不相等转移)功能:当ZF=0时,转移到目的地址TARGET执行程序。测试CF格式:JCTARGET功能:当CF=1时,转移到目的地址TARGET执行程序。格式:JNCTARGET功能:当CF=0时,转移到目的地址TARGET执行程序。测试SF格式:JSTARGET功能:当SF=1,转移到目的地址TARGET执行程序。格式:JNSTARGET功能:当SF=0时,转移到目的地址TARGET执行程序。测试OF格式:JOTARGET功能:当OF=1,转移到目的地址TARGET执行程序。格式:JNOTARGET功能:当OF=0时,转移到目的地址TARGET执行程序。测试PF格式:JPTARGETJPETARGET功能:当PF=1,转移到目的地址TARGET执行程序。格式:JNPTARGETJPOTARGET功能:当PF=0时,转移到目的地址TARGET执行程序。两个无符号数比较的条件转移指令JA/JNBE转移指令格式:JATARGETJNBETARGET功能:当CF=0,且ZF=0时,转移到目的地址TARGET执行程序。JAE/JNB转移指令格式:JAETARGETJNBTARGET功能:当CF=0,转移到目的地址TARGET执行程序。JB/JNAE转移指令格式:JBTARGETJNAETARGET功能:当CF=1,转移到目的地址TARGET执行程序。JBE/JNA转移指令格式:JBETARGETJNATARGET功能:当CF=1,或ZF=1时,转移到目的地址TARGET执行程序。两个带符号数比较的条件转移指令JL/JNGE(小于/不大于等于)转移指令格式:JLTARGETJNGETARGET功能:当SF异或OF=1,且ZF=0时,则转移。JNL/JGE(不小于/大于等于)转移指令格式:JNLTARGETJGETARGET功能:当SF异或OF=0,或ZF=1时,则转移。JNLE/JG(不小于等于/大于)转移指令格式:JNLETARGETJGTARGET功能:当SF异或OF=0,或ZF=0时,则转移。JLE/JNG(不小于等于/大于)转移指令格式:JLETARGETJNGTARGET功能:当SF异或OF=1,或ZF=1时,则转移。测试(CX)=0的条件转移指令JCXZ格式:JCXZTARGET功能:对CX寄存器进行测试,当CX=0时,则转移到目的地址TARGET执行程序。循环控制指令循环控制指令的目的地址必须在该循环控制指令的下一条指令的-128——+127的范围之内。使用循环控制指令,必须先置循环次数于CX寄存器中。计数循环指令LOOP格式:LOOPTARGET功能:每执行一次LOOP指令,CX内容减1,若CX不等于0,则循环转移到目的地址TARGET重复执行期间的程序段,直到CX=0,退出循环,顺序执行下一条指令。结果为0或相等时循环指令LOOPE/LOOPE格式:LOOPZTARGETLOOPETARGET功能:使CX-1→CX,当CX不等于0,且ZF=1,则循环转移至目的地址TARGET去 重复执行其间的程序段。当CX=0,或ZF=0,退出循环,顺序执行本指令的下一条指 令。结果不为0或不相等时循环指令LOOPNZ/LOOPNE格式:LOOPNZTARGETLOOPNETARGET功能:使CX-1→CX,当CX不等于0,且ZF=0,则循环转移至目的地址TARGET去 重复执行其间的程序段。当CX=0,或ZF=1,退出循环,顺序执行本指令的下一条指 令。子程序调用指令和返回指令为方便模块化程序设计,可以把某些经常重复出现的一段程序独立编制成一个模块,称为一个子过程或子程序。程序可有调用子程序CALL指令来调用子程序。CALL指令能迫使CPU暂停执行后续的下一条指令,转去执行指定的程序。待子程序执行完由RET指令返回到断电继续执行程序。调用指令CALL段内直接调用格式:CALLDEST功能:段内调用时,CALL指令和被调用子过程都在同一代码段内,因此只需先将CALL指令的下一条指令的偏移地址压入堆栈,然后将子程序的第一条指令的偏移地址送入IP,从而转向子程序执行之,即SP-2→SP,IP→堆栈,IP+16→IP段内间接调用格式:CALLDEST功能:先将CALL指令的下一条指令的偏移地址压入堆栈,然后由指令中DEST所指定的寄存器或存储器寻址方式所确定的有效地址EA送入IP,从而转向子程序执行。段内直接调用格式:CALLDEST功能:段间调用时,CALL指令和被调用过程不在同一代码段内,因此要先将CALL指令的下一条指令的段基址和有效地址分别压入堆栈,然后将指令DEST所指定的段内偏移地址送至IP,将段基址送至CS,从而转向此程序执行之,SP-2→SP,CS→堆栈,SP-2→SP,IP→堆栈。偏移地址(指令的第2,3字节)→IP。段基址(指令的4,5字节)→CS段间间接调用格式:CALLDEST功能:先将CALL指令的下一条指令的段基址和有效地址分别压入堆栈段,然后由指令中DEST所指定的存储器寻址方式确定的有效地址的存储单元的第一个字节送入IP,而第二个字节送入CS,从而转向子程序执行之。返回指令RETRET指令通常放在子程序的末尾,它使子程序执行完后返回调用程序的断点处继续往下执行。RET指令通常与CALL指令配合使用。如果程序定义是一个NEAR(段内)过程则RET指令就产生一个段内返回(断点地址出栈送IP):如果程序定义一个FAR(段间)过程,则RET指令就产生段间返回。段内返回格式:RET功能:将堆栈栈顶内容弹出送IP。即堆栈栈顶内容→IP,SP+2→SP段内带立即数返回格式:RETn功能:将堆栈栈顶内容弹出送入IP,且将指令第2,3字节中的16位不带符号的偶数n加到堆栈指针SP中,即堆栈栈顶内容→IP,SP+2→SP,SP+n→SPRETn指令这一特性可用来冲掉在CALL指令之前压入堆栈的一些参数。这些参数提供给子程序使用,由子程序返回时,这些参数以没有在堆栈保留的必要,因此将SP自动移动n个字节,以释放这些无用参数所占的堆栈单元。段间返回格式:RET功能:堆栈返回第一个字节送IP,第二个字接送CS。即堆栈栈顶内容→IP,SP+2→SP堆栈栈顶内容→CS,SP+2→SP段间带立即数返回格式:RETn功能:将堆栈栈顶内容弹出送入IP和CS,且将16位不带符号的偶数n加到SP中,即堆栈栈顶内容→IP,SP+2→SP,堆栈栈顶内容→CS,SP+2→SP,SP+n→SP软中断指令和中断指令软中断指令格式:INTn功能:INTn为两个字节指令,n为中断类型码,可以取00H~0FFH256个之中的任一个。每个中断服务程序入口地址在中断矢量表中占4个字节,前两个字节用来存放服务程序入口地址的偏移地址,后两个字节用来存放段基址。CPU执行INT指令时,首先将标识寄存器Flag的内容入栈,接着清除中断标志IF和单步标识TF;然后将当前程序的段基址和偏移地址入栈保护,最后将中断矢量表中断类型码所对应的4个字节内容先后送入IP和CS,从而CPU将转去执行相应的中断服务程序。溢出中断指令格式:IRET功能:IRET指令安排在中断程序的出口处,有他控制从堆栈栈顶先后弹出程序断点送回IP和CS中,在弹出标志寄存器内容送回Flage中。即堆栈栈顶内容→IP,SP+2→SP,堆栈栈顶内容→CS,SP+2→SP,堆栈栈顶内容→Flag,SP+2→SP,于是CPU就返回源程序断点处继续执行程序。六、处理器控制指令处理器控制指令用来控制8086CPU的状态标志位、控制CPU与外部设备同步以及与协处理器之间的交互作用。此类控制指令只完成简单的控制功能。标志位设置指令标志位设置指令只对本指令的指定标志产生影响,而不影响其他标志。进位位清0指令格式:CLC功能:令CF=0进位位置1指令格式:STC功能:令CF=1进位位取反指令格式:CMC功能:令非CF→CF方向标志位清0指令格式:CLD功能:令DF=0方向标志位置1指令格式:STD功能:令DF=1中断标志位清0指令格式:CLI功能:令IF=0中断标志位置1指令格式:STI功能:令IF=1同步指令8086工作在最大模式时,需要8087、8089协处理器协助他完成某个操作任务,此时,CPU可用同步指令向协处理器发出请求。交权指令ESC格式:ESC外部操作码,源操作数功能:协处理器在系统加电工作后,就不断检测8086是否需要自己协助工作,当发现有ESC指令时,被选定的协处理器便可开始工作。等待指令WAIT格式:WAIT功能:它与ESC配合使用,为8086提供一种与协处理协同工作的能力。WAIT指令每 隔5个时钟周期测试一次非TEST的状态,若是高电平,CPU进入等待状态, 若是低电平,继续执行后续指令。总线封锁指令前缀LOCKLOCK指令是一个前缀,可放在任何一条指令前面。执行这条指令时,就封锁了指令控制权,不允许其他指令占用总线。在此期间,如果有其他处理器请求使用总线,CPU将请求挂起,代执行LOCK后,才将总线使用权交给挂起的微处理器使用。对于8086最小系统,LOCK功能是将HOLD引脚上的保持请求信号延时,等待执行完成这条指令后,才能发出保持响应信号。其他指令暂停指令HLT使CPU处于暂停状态复位信号RESET有效非屏蔽中断请求信号NMI有效可屏蔽中断请求信号INTR有效(当IF=1)。因此,常用HLT指令来等待外部设备的中断请求。空操作指令该指令不产生任何结果。执行该指令需要3个时钟周期,常用延时或某些取代指令。存储器拓展概述一、存储器分类存储器在系统中的地位分类:主存储器辅助存储器存储器媒质分类:磁存储器、半导体存储器、光盘存储器信息存取方式:RAMROM存储器性能指标存储容量——容量=字数(存储单元数)*字长(一个存储单元的位数)最大存取时间——访问一次存储器所需要的时间,这个时间上限制即为最大存储时间。存储功耗——维持功耗、操作工号。存取速度越快功耗越大。可靠性和工作寿命存储系统的层次结构存储系统分为四层:CPU及存储器高速缓冲存储器内存储器外存储器CPU寄存处器CPU寄存器组是最高一层的存储器

温馨提示

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

评论

0/150

提交评论