第4章8086-CPU指令系统.ppt

上传人:可****阿 文档编号:76414786 上传时间:2023-03-10 格式:PPT 页数:60 大小:966.54KB
返回 下载 相关 举报
第4章8086-CPU指令系统.ppt_第1页
第1页 / 共60页
第4章8086-CPU指令系统.ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《第4章8086-CPU指令系统.ppt》由会员分享,可在线阅读,更多相关《第4章8086-CPU指令系统.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章8086 CPU指令系统指令系统4.1指令格式与寻址方式指令格式与寻址方式4.2 8086/8088 CPU指令系统指令系统 4.1指令格式与寻址方式指令格式与寻址方式4.1.1 指令格式指令格式 微型计算机中的控制信息就是使计算机进行某种操作的命令,微型计算机中的控制信息就是使计算机进行某种操作的命令,这些命令称为指令。计这些命令称为指令。计 算机通过执行指令序列来解决问题的,因而每算机通过执行指令序列来解决问题的,因而每种计算机都有一组指令集提供给用户使用,种计算机都有一组指令集提供给用户使用,这种指令集就称为计算机这种指令集就称为计算机的指令系统。指令系统是计算机硬件和软件之间

2、的桥梁,是汇编的指令系统。指令系统是计算机硬件和软件之间的桥梁,是汇编 语言语言程序设计的基础。程序设计的基础。指令格式是指令的编码格式,其体现了指令系统的概貌,说明指指令格式是指令的编码格式,其体现了指令系统的概貌,说明指令系统的机器目标代令系统的机器目标代 码是如何构成的。指令通常由操作码段和操作数码是如何构成的。指令通常由操作码段和操作数段两部分组成:段两部分组成:操作码段给出计算机要执行的具体操作(如传送、运算、移位、操作码段给出计算机要执行的具体操作(如传送、运算、移位、跳转等),是指令中必不可少的组成部分。跳转等),是指令中必不可少的组成部分。返回下一页4.1指令格式与寻址方式指令

3、格式与寻址方式 操作数段说明在指令执行过程中参与该操作的对象,它可以是操作数段说明在指令执行过程中参与该操作的对象,它可以是操作数本身,也可以是操作数地址或是地址的一部分,还可以是指向操作数本身,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址指针或其他有关操操作数地址指针或其他有关操 作数据的信息。单地址指令的操作只需作数据的信息。单地址指令的操作只需一个操作数,如加一个操作数,如加 1 指令:指令:INC AX。大多。大多 数运算指令都需要两个操数运算指令都需要两个操作数,如加法指令:作数,如加法指令:ADD AX,BX;运算的结果送到;运算的结果送到 AX 中,中,AX 称称为

4、目的操作数,为目的操作数,BX 称为源操作数。称为源操作数。操作数的种类又可分为数据操作数和转移地址操作数。操作数的种类又可分为数据操作数和转移地址操作数。数据操作数:指令中操作的对象是数据,包括立即数操作数、寄数据操作数:指令中操作的对象是数据,包括立即数操作数、寄存器操作数、存数。存器操作数、存数。转移地址操作数:这类操作数是与转移地址有关的操作数,即指转移地址操作数:这类操作数是与转移地址有关的操作数,即指令中操作的对象令中操作的对象 不是数据,而是要转移的目标地址。转移地址操作数不是数据,而是要转移的目标地址。转移地址操作数也可分为:立即数操作数、也可分为:立即数操作数、寄存器操作数和

5、存储器操作数,也就是说,寄存器操作数和存储器操作数,也就是说,要转移目标的地址包含在指令中,或要转移目标的地址包含在指令中,或 存放在寄存器中,或存放在存储存放在寄存器中,或存放在存储单元中。单元中。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式4.1.2 寻址方式寻址方式数据的寻址方式数据的寻址方式1)立即数寻址)立即数寻址 立即数寻址方式所提供的操作数直接包含在指令中,其紧跟在操立即数寻址方式所提供的操作数直接包含在指令中,其紧跟在操作码的后面,与操作作码的后面,与操作 码一起被放在代码段区域中。因而,立即数总是码一起被放在代码段区域中。因而,立即数总是与操作码一起被取入与操作

6、码一起被取入 CPU 的指令队列,在的指令队列,在 指令执行时不需再访问存指令执行时不需再访问存储器。立即寻址方式仅用于源操作数,主要是用来给寄存器或存储器。立即寻址方式仅用于源操作数,主要是用来给寄存器或存 储器储器赋初值。赋初值。立即数可以是立即数可以是 8 位或位或 16 位数。若立即数是位数。若立即数是 16 位的,则其低位的,则其低 8 位位字节存放在相邻两个字节存放在相邻两个 存储单元的低地址单元中,高存储单元的低地址单元中,高 8 位字节则存放在位字节则存放在高地址单元中。高地址单元中。例如:例如:MOV AX,1234H;将立即数;将立即数1234H送入累加器送入累加器AX M

7、OV 2100H ,12H;将立即数;将立即数12H送入送入2100H的存储单元的存储单元上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式2)寄存器寻址)寄存器寻址 寄存器寻址即为寄存器直接寻址。在此寻址方式中,操作数存放寄存器寻址即为寄存器直接寻址。在此寻址方式中,操作数存放在指令规定的在指令规定的 CPU 内内 部寄存器中。对于部寄存器中。对于 16 位操作数,寄存器可以是位操作数,寄存器可以是 AX、BX、CX、DX、SI、DI、SP 或或 BP;对于对于 8 位操作数,寄存器位操作数,寄存器可以是可以是 AL、AH、BL、BH、CL、CH、DL 或或 DH。例如:例如:INC

8、 CX;CX内容加内容加1,结果送回,结果送回CX MOV CL,DL;DL 内容送至内容送至CL MOV DS,AX;AX内容送至内容送至DS上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式3)存储器寻址方式)存储器寻址方式(1)直接寻址直接寻址 直接寻址是存储器直接寻址的简称,是一种最简单的存储器寻址直接寻址是存储器直接寻址的简称,是一种最简单的存储器寻址方式。在这种寻址方方式。在这种寻址方 式下,指令中的操作数部分直接给出操作数的有式下,指令中的操作数部分直接给出操作数的有效地址效地址 EA(16 位的偏移地址),且该地址位的偏移地址),且该地址 与操作码一起被放在代码与操作码

9、一起被放在代码段中。通常,在直接寻址方式中,操作数放在存储器的数据段(段中。通常,在直接寻址方式中,操作数放在存储器的数据段(DS)中,这是一种默认的方式。中,这是一种默认的方式。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(2)寄存器间接寻址寄存器间接寻址 在寄存器间接寻址方式中,操作数存在寄存器间接寻址方式中,操作数存 放在存储区中,其有效地放在存储区中,其有效地址址 EA 为一个由指令规为一个由指令规 定的基址寄存器(定的基址寄存器(BP、BX)或变址寄存器)或变址寄存器(SI、DI)的内容,即)的内容,即上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(3)寄存

10、器相对寻址寄存器相对寻址 在这种寻址方式中,操作数存放在存储单元中,其有效地址在这种寻址方式中,操作数存放在存储单元中,其有效地址 EA 等于一个由指令规定的等于一个由指令规定的 基址寄存器(基址寄存器(BP、BX)或变址寄存器()或变址寄存器(SI、DI)的内容与由指令中给定的)的内容与由指令中给定的 8 位或位或 16 位的位的 相对地址位移量之和,相对地址位移量之和,即即上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(4)I/O 端口寻址方式端口寻址方式 IN/OUT 指令对指令对 I/O 端口的寻址方式有两种:端口的寻址方式有两种:直接端口寻址。该寻址方式用于直接端口寻址。

11、该寻址方式用于 8 位位 I/O 端口的寻址,端口的寻址,8 位位 I/O 端端口地址(口地址(00H FFH)以立即数的形式在指令中直接给出。可寻址的以立即数的形式在指令中直接给出。可寻址的端口地址范围为端口地址范围为 0 255。间接端口寻址。该寻址方式是针对间接端口寻址。该寻址方式是针对 16 位位 I/O 端口的寻址,类似于端口的寻址,类似于寄存器间接寻址。寄存器间接寻址。在间接端口寻址时,应事先将在间接端口寻址时,应事先将 16 位位 I/O 端口地址端口地址(0000H 0FFFFH)存放在规定的存放在规定的 DX 寄存器中,即通过寄存器中,即通过 DX 对端口间对端口间接寻址。该

12、寻址方式可寻址的端口号的范围为接寻址。该寻址方式可寻址的端口号的范围为0 65535。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式转移地址寻址方式转移地址寻址方式(1)段内直接寻址)段内直接寻址 采用这种寻址方式时,应在指令中指明一个采用这种寻址方式时,应在指令中指明一个 8 位或位或 16 位的相对位的相对地址偏移量地址偏移量 disp。由于。由于 转向的有效地址转向的有效地址 EA=IP+disp,则转移地址,则转移地址为代码段寄存器为代码段寄存器 CS 的内容加上转移的有效地的内容加上转移的有效地 址,即(址,即(CS)+EA 。例如:例如:JMP LT0;程序转移至标号;

13、程序转移至标号LT0处处 CALL GAME;先将当前断点地址送至堆栈保存,程序转移至;先将当前断点地址送至堆栈保存,程序转移至GAME处处上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(2)段内间接寻址)段内间接寻址 在这种寻址方式中,转向的有效地址(即目标地址的段内偏移量)在这种寻址方式中,转向的有效地址(即目标地址的段内偏移量)是一个是一个 16 位的寄存位的寄存 器的内容或存储器中两个连续单元的内容。存放器的内容或存储器中两个连续单元的内容。存放偏移地址的寄存器或存储器的地址将按指偏移地址的寄存器或存储器的地址将按指 令码规定的寻址操作数的方令码规定的寻址操作数的方式给出。

14、此时,寻址所得到转移地址,而不是操作数。式给出。此时,寻址所得到转移地址,而不是操作数。例如:例如:JMPBX;寄存器间接寻址,目标地址在当前代;寄存器间接寻址,目标地址在当前代码段(码段(CS),),;目标地址的偏移量存放在寄存器中;目标地址的偏移量存放在寄存器中 JMPWORD PTR BX;存储器寻址,目标地址在当前代码段;存储器寻址,目标地址在当前代码段内,内,;偏移地址在数据段内;偏移地址在数据段内上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(3)段间直接寻址)段间直接寻址 段间直接寻址须在指令码中直接给出目标地址的段基址和段间直接寻址须在指令码中直接给出目标地址的段基

15、址和 16 位位段内偏移地址。段内偏移地址。例如:例如:JMPFAR PTR P1;要转移至的标号或过程名必;要转移至的标号或过程名必须具备须具备 FAR 属性。属性。在执行这条段间直接寻址指令时,指令操作码后的第二个字数据在执行这条段间直接寻址指令时,指令操作码后的第二个字数据将赋于代码段寄存器将赋于代码段寄存器CS,第一个字数据赋于指令指针寄存器,第一个字数据赋于指令指针寄存器 IP。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(4)段间间接寻址)段间间接寻址 该寻址方式类似段内间接寻址,由于转移地址的确定需要该寻址方式类似段内间接寻址,由于转移地址的确定需要32 位位信息,

16、因此,其只适用于存储器寻址方式,即目标地址存放在信息,因此,其只适用于存储器寻址方式,即目标地址存放在4 个连个连续字节存储单元中,其中前两个单元存放续字节存储单元中,其中前两个单元存放16位的段内偏移地址,后两位的段内偏移地址,后两个单元存放个单元存放16 位的段地址。位的段地址。上一页返回4.2 8086/8088CPU 指令系统指令系统8086/8088CPU 的指令可分为六大类:的指令可分为六大类:(1)数据传送类指令()数据传送类指令(Data transfer instructions)(2)算术运算类指令()算术运算类指令(Arithmetic instructions)(3)位

17、操作类指令()位操作类指令(Bit manipulation instructions)(4)串操作类指令()串操作类指令(String instructions)(5)控制转移类指令()控制转移类指令(Program transfer instructions)(6)处理器控制类指令()处理器控制类指令(Processor control instructions)返回下一页4.2 8086/8088CPU 指令系统指令系统4.2.1 数据传送类指令数据传送类指令通用数据传送指令通用数据传送指令()传送指令()传送指令 MOV 指令格式:指令格式:功能:将源操作数的内容传送给目的操作数。功能

18、:将源操作数的内容传送给目的操作数。MOV 指令对标志指令对标志寄存器(寄存器(FR)的各位无影响。在)的各位无影响。在 MOV 指令中,两个操作数可以是字,指令中,两个操作数可以是字,也可以是字节,但两者必须等长。也可以是字节,但两者必须等长。在使用在使用 MOV 指令时,应注意以下几点:指令时,应注意以下几点:段寄存器段寄存器 CS 仅能作源操作数,不能作为目的操作数;仅能作源操作数,不能作为目的操作数;源操作数和目的操作数不能同时为存储单元操作数(串操作指令除外)源操作数和目的操作数不能同时为存储单元操作数(串操作指令除外);立即数不能直接传送给段寄存器,且不同的段寄存器之间不能进行直立

19、即数不能直接传送给段寄存器,且不同的段寄存器之间不能进行直接传送。接传送。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)交换指令)交换指令 XCHG 指令格式:指令格式:功能:源操作数和目的操作数的内容相互交换。该指令对标志寄功能:源操作数和目的操作数的内容相互交换。该指令对标志寄存器的各位均无存器的各位均无 影响。影响。(3)查表转换指令)查表转换指令 XLAT 指令格式:指令格式:功能:完成一个字节的查表转换。该指令又称代码转换指令,可功能:完成一个字节的查表转换。该指令又称代码转换指令,可以方便地实现不以方便地实现不 同数制或编码之间的转换。同数制或编码之间的转

20、换。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(4)堆栈操作指令)堆栈操作指令 PUSH/POP指令格式:指令格式:PUSH src;POP dest;功功 能:对堆栈的信息进行存取。堆栈操作不影响标志寄存器。能:对堆栈的信息进行存取。堆栈操作不影响标志寄存器。8086/8088 堆栈的使用规则如下:堆栈的使用规则如下:堆栈的使用要遵循后进先出(堆栈的使用要遵循后进先出(LIFO)的准则;)的准则;堆栈中操作数的类型必须是字操作数,不允许以字节为操作数;堆栈中操作数的类型必须是字操作数,不允许以字节为操作数;PUSH 指令可以使用指令可以使用 CS 寄存器,但寄存器,但

21、 POP 指令不允许使用指令不允许使用 CS 寄存器;寄存器;8086/8088CPU 堆栈操作可以使用除立即寻址以外的任何寻址方式。堆栈操作可以使用除立即寻址以外的任何寻址方式。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统地址传送指令地址传送指令 地址传送指令完成的操作是传送存储器操作数的地址(偏移量、地址传送指令完成的操作是传送存储器操作数的地址(偏移量、段基址),而不是传段基址),而不是传 送存储器操作数的内容。这组指令对标志寄存器送存储器操作数的内容。这组指令对标志寄存器各标志位均无影响,指令中的源操作数都各标志位均无影响,指令中的源操作数都 必须是存储器操作数,

22、而目必须是存储器操作数,而目的操作数可以是任何一个的操作数可以是任何一个 16 位的通用寄存器。位的通用寄存器。(1)装入有效地址)装入有效地址 LEA 指令格式:指令格式:LEA reg16,mem16;reg16 EAmem16 功能:将当前段内的源操作数的有效地址功能:将当前段内的源操作数的有效地址 EA(地址偏移量)传(地址偏移量)传送至目的操作数,即将一个送至目的操作数,即将一个 16 位的近地址指针写入到指定的位的近地址指针写入到指定的 16 位通位通用寄存器中。用寄存器中。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)装入远地址指针)装入远地址指针 LD

23、S/LES 指令格式:指令格式:LDS reg 16,mem32;reg16 EAmem32 ,DS EAmem32+2 LES reg16,mem32;reg16 EAmem32 ,ES EAmem32+2 功能:将源操作数所对应的功能:将源操作数所对应的 4 字节内存单元中的第一个字送字节内存单元中的第一个字送入指定的通用寄存器,而第二个字则送入段寄存器入指定的通用寄存器,而第二个字则送入段寄存器 DS(或(或 ES),即),即将一个将一个 32 位的远地址指针的偏移地址写入到指定的通用寄存器中,位的远地址指针的偏移地址写入到指定的通用寄存器中,而该指针的段基址送至段寄存器而该指针的段基址

24、送至段寄存器 DS(或(或 ES)。)。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统标志寄存器传送指令标志寄存器传送指令 CPU 中各标志寄存器中各标志寄存器 FLAG(FR),其中的每一个状态标志位),其中的每一个状态标志位代表代表 CPU 运行的状态。运行的状态。许多指令的执行结果会影响许多指令的执行结果会影响 FR 的某些状态的某些状态标志位;同时,有些指令的执行也受标志位;同时,有些指令的执行也受 FR 中某些中某些 位的控制。标志寄存位的控制。标志寄存器传送类指令共有器传送类指令共有 4 条,专门用于对标志位寄存器的保护或更新。条,专门用于对标志位寄存器的保护或

25、更新。标志寄存器读标志寄存器读/写指令写指令指令格式:指令格式:LAHF;AH(FR)的低的低 8 位位 SAHF;FR 的低的低 8 位位(AH)标志寄存器压栈标志寄存器压栈/弹栈指令弹栈指令指令格式:指令格式:PUSHF;SP (SP)2 ;(SP)+1:(SP)(FR)POPF;FR (SP)+1:(SP);SP (SP)+2上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4输入输入/输出数据传输指令输出数据传输指令 IN/OUT 这组指令专门用于累加器(这组指令专门用于累加器(AL 或或 AX 寄存器)与寄存器)与 I/O 端口之端口之间的数据传输。其中,输入指令间的

26、数据传输。其中,输入指令 IN 用于从外设端口接收数据,输出用于从外设端口接收数据,输出指令指令 OUT 用于向外设端口发送数据。用于向外设端口发送数据。指令格式:指令格式:IN 累加器累加器 ,port;累加器;累加器 port OUT port ,累加器,累加器;port(累加器累加器)上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4.2.2 算术运算类指令算术运算类指令二进制数运算指令二进制数运算指令(1)加)加/减法指令减法指令 指令格式:指令格式:(2)带进位、借位的加)带进位、借位的加/减法指令减法指令上一页返回下一页4.2 8086/8088CPU 指令系统指

27、令系统(3)加)加“1”、减、减“1”指令指令(4)求补指令)求补指令(5)比较指令)比较指令上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(6)乘法指令)乘法指令(7)除法指令)除法指令上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(8)符号扩展指令)符号扩展指令 指令格式指令格式 1:CBW;如果(;如果(AL)80H,AH 00H;否则,;否则,AH 0FFH 指令格式指令格式 2:CWD;如果(;如果(AX)8000H,DX 0000H;否;否则,则,DX 0FFFFH 功能:功能:CBW 和和 CWD 分别将带符号数按其符号从字节扩展成字分别将

28、带符号数按其符号从字节扩展成字或将字扩展成双字,且操作数隐含在累加器中。该类指令对状态标志或将字扩展成双字,且操作数隐含在累加器中。该类指令对状态标志均无影响。均无影响。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统十进制调整指令十进制调整指令(1)压缩)压缩 BCD 码加码加/减法调整指令减法调整指令 DAA/DAS 指令格式指令格式:DAA;压缩压缩BCD码加法调整码加法调整 DAS;压缩压缩BCD码减法调整码减法调整 功能功能:指令指令DAA/DAS用于把用于把AL中的由两个压缩中的由两个压缩BCD码相加码相加/减后的结减后的结果调整为正确的压缩果调整为正确的压缩BC

29、D码格式。码格式。2)非压缩非压缩BCD码加码加/减法调整指令减法调整指令AAA/AAS 指令格式指令格式:AAA;非压缩非压缩BCD码加法调整码加法调整 AAS;非压缩非压缩BCD码减法调整码减法调整 功能功能:AAA/AAS用于把用于把AL中的由两个非压缩中的由两个非压缩BCD码相加码相加/减后的结果调减后的结果调整为正确的非压缩整为正确的非压缩BCD码格式,并在码格式,并在AH中士中士1,调整运算时产生的进调整运算时产生的进/借位。借位。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统 3)非压缩非压缩BCD码乘码乘/除法调整指令除法调整指令AAM/AAD 8086/8

30、088指令系统只提供厂非压缩型指令系统只提供厂非压缩型BCD码的乘除法调整指令。码的乘除法调整指令。因此,因此,8086 CPU不能直接进行压缩型不能直接进行压缩型BCD码的乘除法运算。为此,码的乘除法运算。为此,在十进制乘在十进制乘/除运算之前,须将压缩型除运算之前,须将压缩型BCD码转换成非压缩型码转换成非压缩型BCD码码(通常,高通常,高4位取为零位取为零)。指令格式指令格式:AAM;非压缩非压缩BCD码乘法调整码乘法调整 AAD:非压缩非压缩BCD码除法调整码除法调整上一页返回下一页4.2 8086/8088CPU 指令系统指令系统在使用十进制调整指令时,应注意以下几点:在使用十进制调

31、整指令时,应注意以下几点:AAA/AAS 指令将影响指令将影响 AF、CF 标志,其它标志位的状态不确定;标志,其它标志位的状态不确定;DAA/DAS 指令指令 将影响除将影响除 OF 以外的所有标志位的状态标志;以外的所有标志位的状态标志;AAM/AAD 指令将根据指令将根据 AL 中的结中的结 果影响状态标志位果影响状态标志位 SF、ZF 和和 PF,其余状态标志位(如,其余状态标志位(如 ZF、CF 和和 OF)的值不确)的值不确 定。定。加加/减法可以直接用减法可以直接用 BCD 码参与运算码参与运算无论其高位数字是否有效,无论其高位数字是否有效,只要在加只要在加/减指令后用一条非压缩

32、减指令后用一条非压缩 BCD 码的调整指令就能得到正确结码的调整指令就能得到正确结果。果。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4.2.3 位操作类指令位操作类指令逻辑运算指令逻辑运算指令 逻辑运算指令可对字节或字操作数按位进行逻辑运算。源和目标逻辑运算指令可对字节或字操作数按位进行逻辑运算。源和目标操作数可以是通用寄操作数可以是通用寄 存器或存储器,但两者不能均是存储器;源操作存器或存储器,但两者不能均是存储器;源操作数可以使用立即数,但目的操作数却不能。数可以使用立即数,但目的操作数却不能。应注意,段寄存器不能作为源或目的操作数。逻辑运算指令如应注意,段寄存器不

33、能作为源或目的操作数。逻辑运算指令如表表 4-3 所示所示上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(1)逻辑)逻辑“与与”指令指令 AND 指令格式:指令格式:功能:将目标操作数和源操作数按位进行逻辑功能:将目标操作数和源操作数按位进行逻辑“与与”运算,并运算,并将运算结果送回目将运算结果送回目 标操作数。标操作数。AND 指令可用来:指令可用来:屏蔽运算结果中的某些位,而保留其它有用的位。屏蔽运算结果中的某些位,而保留其它有用的位。对状态标志位产生影响。如果将某个操作数自己与自己相对状态标志位产生影响。如果将某个操作数自己与自己相“与与”,虽,虽然操作数内然操作数内

34、 容不变,但该操作却影响了容不变,但该操作却影响了 SF、ZF 和和 PF 状态标志位,状态标志位,且将且将 OF 和和 CF 清零。清零。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)逻辑)逻辑“或或”指令指令 OR 指令格式:指令格式:功能:将目标操作数和源操作数按位进行逻辑功能:将目标操作数和源操作数按位进行逻辑“或或”运算,并将运算,并将运算结果送回目运算结果送回目 标操作数。标操作数。OR 指令常用于以下几种情况:指令常用于以下几种情况:将寄存器或存储器中某些特定位置将寄存器或存储器中某些特定位置“1”,同时使其它位保持原来的,同时使其它位保持原来的状态;状

35、态;对状态标志位产生影响。对状态标志位产生影响。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(3)逻辑)逻辑“异或异或”指令指令 XOR 指令格式:指令格式:功能:将目标操作数和源操作数按位进行逻辑功能:将目标操作数和源操作数按位进行逻辑“异或异或”运算,并运算,并将运算结果送回目标操作数。将运算结果送回目标操作数。XOR 指令常用于:指令常用于:将寄存器或存储器中某些特定位取将寄存器或存储器中某些特定位取“反反”,同时使其它位保持原来的,同时使其它位保持原来的状态;状态;将寄存器的内容清零。将寄存器的内容清零。上一页返回下一页4.2 8086/8088CPU 指令系统指

36、令系统(4)逻辑)逻辑“非非”指令指令 NOT 指令格式:指令格式:功能:将源操作数按位进行功能:将源操作数按位进行“非非”(即取反)运算,并将结果送(即取反)运算,并将结果送回目标操作数。回目标操作数。应注意,应注意,NOT 指令的操作数可以是指令的操作数可以是 8(或或 16)位的寄存器或存储器,位的寄存器或存储器,不能是一个立即数。不能是一个立即数。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(5)测试指令)测试指令 TEST 指令格式:指令格式:功能:将目标操作数和源操作数按位进行逻辑功能:将目标操作数和源操作数按位进行逻辑“与与”运算,但运运算,但运算结果不送回

37、目算结果不送回目 标操作数。指令标操作数。指令 TEST 的主要作用是进行位测试。其的主要作用是进行位测试。其可与条件转移指令一起,共同完成对某可与条件转移指令一起,共同完成对某 个(些)特定位状态的判断,个(些)特定位状态的判断,并实现相应的程序转移。这种作用与并实现相应的程序转移。这种作用与 CMP 相类似,只不过相类似,只不过 TEST 指指令只比较某一特定的位,而令只比较某一特定的位,而 CMP 指令却比较整个操作数。指令却比较整个操作数。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统2移位循环移位类指令移位循环移位类指令 这组指令可以对这组指令可以对 8 位或位或

38、 16 位的寄存器或存储器中的各位进行逻位的寄存器或存储器中的各位进行逻辑移位、算术移位或循辑移位、算术移位或循 环移位。指令及其对应的操作功能见环移位。指令及其对应的操作功能见表表 4-4。(1)移位指令)移位指令 指令格式:指令格式:SHL/SAL/SHR/SAR reg,1 或或 CL 移位指令影响状态标志位移位指令影响状态标志位 PF、SF、ZF、CF 以及以及 OF,但对,但对 AF 的影响不定。其中,的影响不定。其中,CF 总是等于目标操作数最后移出的那一位。如总是等于目标操作数最后移出的那一位。如果移位计数值为果移位计数值为 1,且执行结果使目标操作数的,且执行结果使目标操作数的

39、 符号位符号位 M(即最高位)(即最高位)发生了变化,则(发生了变化,则(OF)=1;否则,(;否则,(OF)=0。若移位计数值大于。若移位计数值大于1,则,则 OF 状态不确定。指令操作见状态不确定。指令操作见图图 4-2。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)循环移位指令)循环移位指令 指令格式:指令格式:ROL/ROR/RCL/RCR reg 或或 mem,1 或或 CL 循环移位分大循环(带进位标志循环移位分大循环(带进位标志 CF 循环移位)和小循环(不带循环移位)和小循环(不带进位标志进位标志 CF 循环移位)两种。循环移位指令只影响循环移位)两种

40、。循环移位指令只影响 CF 和和 OF 两个两个标志。其中,标志。其中,CF 总是等于目标操作数最后一次循环移出的那一位,总是等于目标操作数最后一次循环移出的那一位,而而 OF 标志的变化规则与移位指令的标志的变化规则与移位指令的 OF 变化规则相同。循环指令操变化规则相同。循环指令操作见作见图图 4-3。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4.3.4 串操作类指令串操作类指令 8088/8086CPU 指令系统中有一组十分有用的串操作指令,这组指令系统中有一组十分有用的串操作指令,这组指令的操作对象不只是指令的操作对象不只是 单个的字节或字,而是内存中地址连续的

41、字节单个的字节或字,而是内存中地址连续的字节串或字串。在每次基本操作后,指令能够自串或字串。在每次基本操作后,指令能够自 动修改地址,为下一次操动修改地址,为下一次操作做好准备。串操作指令可处理的数据串的最大长度为作做好准备。串操作指令可处理的数据串的最大长度为 64KB。串操串操作指令共有以下五条:串传送指令作指令共有以下五条:串传送指令(MOVS)、串装入指令、串装入指令(LODS)、串送、串送存指令存指令(STOS)、串比较指令串比较指令(CMPS)和串扫描指令和串扫描指令(SCAS)。见。见表表 4-5 。串操作指令还可以加上重复前缀。此时,指令规定的操作将一串操作指令还可以加上重复前

42、缀。此时,指令规定的操作将一直重复下去,直到完成预定的重复操作次数。串操作指令的重复前缀、直重复下去,直到完成预定的重复操作次数。串操作指令的重复前缀、操作数以及地址指针所用的寄存器等情况如操作数以及地址指针所用的寄存器等情况如表表 4-6 所示。所示。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统1重复前缀重复前缀 重复前缀重复前缀 REP/REPE/REPNE/REPZ/REPNZ 是用来控制其后是用来控制其后的基本串操作指令是否重的基本串操作指令是否重 复,重复前缀不能单独使用。有的串操作指复,重复前缀不能单独使用。有的串操作指令(如令(如 MOVS、LODS、STO

43、S)可加重复前缀)可加重复前缀 REP,这时,指令规,这时,指令规定的定的 操作可重复进行,重复操作的次数由约定的操作可重复进行,重复操作的次数由约定的 CX 寄存器的内容决寄存器的内容决定。定。CPU 按以下步骤执行:按以下步骤执行:首先检查首先检查 CX 寄存器,若寄存器,若(CX)=0,则退出,则退出 REP 操作;操作;指令执行一次字符串基本操作;指令执行一次字符串基本操作;根据根据 DF 标志修改地址指针;标志修改地址指针;CX 减减 l(但不改变标志但不改变标志);重复重复 。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统2基本串操作指令基本串操作指令 1)串传

44、送指令)串传送指令 2)装入指令装入指令LODS LODSB;装入字节串装入字节串 LODSW;装入字串装入字串 3)串送存指令)串送存指令 STOS 指令格式:指令格式:REP STOSB;字节串送存;字节串送存 STOSW;字串送存;字串送存上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4)串比较指令)串比较指令 指令格式:指令格式:REPE/REPNE CMPSB;字节串比较;字节串比较 CMPSW;字串比较;字串比较5)串扫描指令)串扫描指令指令格式:指令格式:REPE/REPNE SCASB;搜索字节串;搜索字节串 SCASW;搜索字串;搜索字串上一页返回4.2

45、8086/8088CPU 指令系统指令系统1无条件转移指令无条件转移指令 JMP 无条件地控制程序转移到指令中操作数无条件地控制程序转移到指令中操作数 oprd 所指定的目标地址。所指定的目标地址。目标地址可以用直接的方式给出,也可以用间接的方式给出。无条件目标地址可以用直接的方式给出,也可以用间接的方式给出。无条件转移指令对状态标志位没有影响。转移指令对状态标志位没有影响。1)段内直接转移)段内直接转移2)段内直接短转移)段内直接短转移返回下一页4.2 8086/8088CPU 指令系统指令系统3)段内间接转移)段内间接转移4)段间直接转移)段间直接转移5)段间间接转移)段间间接转移上一页返

46、回下一页4.2 8086/8088CPU 指令系统指令系统2条件转移指令条件转移指令归纳起来,条件转移指令类指令可分为四类,见归纳起来,条件转移指令类指令可分为四类,见表表 4-7。1)以一个标志位的状态为检测条件的转移指令)以一个标志位的状态为检测条件的转移指令 该类指令适用于根据标志寄存器中的单个标志位的状态来决定是该类指令适用于根据标志寄存器中的单个标志位的状态来决定是否进行转移的场合。否进行转移的场合。2)用于无符号数比较的条件转移指令)用于无符号数比较的条件转移指令 该类指令适用于根据无符号数之间的比较结果来决定是否转移该类指令适用于根据无符号数之间的比较结果来决定是否转移的场合。指

47、令在执行时所检测的是无符号数比较结果的特征标志的场合。指令在执行时所检测的是无符号数比较结果的特征标志 CF 和和 ZF。3)用于带符号数比较的条件转移指令)用于带符号数比较的条件转移指令 该类指令适用于根据带符号数之间的比较结果来决定是否转移该类指令适用于根据带符号数之间的比较结果来决定是否转移的场合。指令在执行时的场合。指令在执行时 所检测的是带符号数比较结果的特征标志所检测的是带符号数比较结果的特征标志 SF、OF 和和 ZF。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4)以)以 CX 的内容为检测条件的转移指令的内容为检测条件的转移指令 JCXZ指令格式:指令格

48、式:JCXZ OPR;当;当(CX)=0 时,程序转移至时,程序转移至 OPR3循环控制指令循环控制指令 循环控制指令是一组增强型的条件转移指令,也是通过检测状态循环控制指令是一组增强型的条件转移指令,也是通过检测状态标志来判定条件是否标志来判定条件是否 满足而进行控制转移的,仅用于控制程序的循环。满足而进行控制转移的,仅用于控制程序的循环。循环控制指令规定将循环控制指令规定将 CX 寄存器为递减计寄存器为递减计 数器,在其中预置程序的循数器,在其中预置程序的循环次数,并根据对环次数,并根据对 CX 内容的检测结果来决定是循环至目标地址内容的检测结果来决定是循环至目标地址 还是还是顺序执行。顺

49、序执行。1)LOOP 循环控制指令循环控制指令 指令格式:指令格式:LOOP OPR 功能:指令的操作是先将功能:指令的操作是先将 CX 的内容减的内容减 1,若结果不等于零,则,若结果不等于零,则转到指令中指定的短标号处;否则,顺序执行下一条指令转到指令中指定的短标号处;否则,顺序执行下一条指令 上一页返回下一页4.2 8086/8088CPU 指令系统指令系统2)LOOPE/LOOPZ 循环控制指令循环控制指令3)LOOPNE/LOOPNZ 循环控制指令循环控制指令 指令格式指令格式:LOOPNE OPR LOOPNZ OPR 功能功能:以上两种格式有着相同的含义。指令的操作是将以上两种格

50、式有着相同的含义。指令的操作是将CX寄存器寄存器的内容减的内容减1,如结果不为零,且零标志,如结果不为零,且零标志ZF=0,则转移到指定的短标号,则转移到指定的短标号处处上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4过程调用和返回指令过程调用和返回指令 在进行程序设计时,可以把程序中经常重复出现的一段程序独在进行程序设计时,可以把程序中经常重复出现的一段程序独立地设计成一个模块,立地设计成一个模块,称为子程序或过程。当主程序执行到某处,需称为子程序或过程。当主程序执行到某处,需要使用该子程序段时,可以用程序调用指令要使用该子程序段时,可以用程序调用指令 对它进行调用;被调

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁