微机原理与接口技术第3章课件.ppt

上传人(卖家):三亚风情 文档编号:3430525 上传时间:2022-08-30 格式:PPT 页数:78 大小:1.25MB
下载 相关 举报
微机原理与接口技术第3章课件.ppt_第1页
第1页 / 共78页
微机原理与接口技术第3章课件.ppt_第2页
第2页 / 共78页
微机原理与接口技术第3章课件.ppt_第3页
第3页 / 共78页
微机原理与接口技术第3章课件.ppt_第4页
第4页 / 共78页
微机原理与接口技术第3章课件.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、第第3 3章章 指令系统指令系统3.1 8086/80883.1 8086/8088的指令格式及寻址方式的指令格式及寻址方式3.2 3.2 微处理器的基本指令系统微处理器的基本指令系统3.1 8086/80883.1 8086/8088的指令格式及寻址方式的指令格式及寻址方式 汇编语言是一种接近于机器语言的低级计算机语言,在汇编语言是一种接近于机器语言的低级计算机语言,在汇编语言中,助记符代替了操作码,而操作数部分也像机器汇编语言中,助记符代替了操作码,而操作数部分也像机器语言一样需要指明具体位置,具有机器语言相应的寻址方式,语言一样需要指明具体位置,具有机器语言相应的寻址方式,当然表现形式不

2、是二进制符号,而是数值、寄存器名、变量当然表现形式不是二进制符号,而是数值、寄存器名、变量等。对有操作数的指令,在执行指令所规定的操作之前首先等。对有操作数的指令,在执行指令所规定的操作之前首先要寻找操作数。要寻找操作数。3.1.1 3.1.1 指令格式指令格式 指令格式是指令字用二进制代码表示的结构形式。计算机中的指令指令格式是指令字用二进制代码表示的结构形式。计算机中的指令由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执行的操作,操作数字段指出在指令执行操作过程的所需要的操作数。行的操作,操作数字段指出在指令执行操

3、作过程的所需要的操作数。汇编语言语句用符号或符号地址来表示操作数或操作数地址,它的汇编语言语句用符号或符号地址来表示操作数或操作数地址,它的操作码与机器指令是一一对应的。用助记符表达的指令格式通常为:操作码与机器指令是一一对应的。用助记符表达的指令格式通常为:操作码操作码操作数操作数操作数操作数 操作数字段可以有一个、两个或三个,通常称为一地址、二地址、操作数字段可以有一个、两个或三个,通常称为一地址、二地址、三地址指令。三地址指令。3.1.2 3.1.2 寻址方式寻址方式 指令中操作的对象称为操作数。指令中操作的对象称为操作数。8086/80888086/8088指令系统中,操作指令系统中,

4、操作数分为两大类:数据操作数和转移地址操作数,寻找这些操作数数分为两大类:数据操作数和转移地址操作数,寻找这些操作数的方式称为寻址方式,即指令中用于说明操作数或操作数所在地的方式称为寻址方式,即指令中用于说明操作数或操作数所在地址的方法。址的方法。8086/8088 8086/8088的有的有7 7种基本的寻址方式:立即数寻址、寄存器寻种基本的寻址方式:立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址。寻址和相对基址加变址寻址。1 1)立即数寻址方式)立即数寻址方式 操作数包含在指令中,

5、作为指令的一部分,跟在操作码后存放在代操作数包含在指令中,作为指令的一部分,跟在操作码后存放在代码前,这种操作数称为立即数。码前,这种操作数称为立即数。立即数可以是立即数可以是8 8位,也可以是位,也可以是1616位,按位,按“高高低低高高低低”原则存放,即原则存放,即高位字节在高地址存储单元,低位字节在低地址存储单元。高位字节在高地址存储单元,低位字节在低地址存储单元。图图3-1 3-1 立即数寻址方式的存储和执行示意图立即数寻址方式的存储和执行示意图 2 2)寄存器寻址方式)寄存器寻址方式 该寻址方式的操作数在该寻址方式的操作数在CPUCPU内部的寄存器中,指令中指定寄存器号。内部的寄存器

6、中,指令中指定寄存器号。对于对于1616位操作数,寄存器可以是位操作数,寄存器可以是AXAX、BXBX、CXCX、DXDX,SISI、DIDI、SPSP和和 BP BP等;等;对于对于8 8位操作数,寄存器可以是位操作数,寄存器可以是ALAL、AHAH、BLBL、BHBH、CLCL、CHCH、DLDL和和DHDH。3 3)直接寻址方式)直接寻址方式 该寻址方式的操作数一般存放在存储器的数据段,直接寻址的有效该寻址方式的操作数一般存放在存储器的数据段,直接寻址的有效地址地址EA(16EA(16位偏移位偏移)在指令的操作码后面直接给出,它与指令的操作码一在指令的操作码后面直接给出,它与指令的操作码

7、一起,存放在存储器的代码段中,也是高位字节存放在高地址中,低位字起,存放在存储器的代码段中,也是高位字节存放在高地址中,低位字节存放在低地址中。但是,操作数本身一般存放在存储器的数据段中。节存放在低地址中。但是,操作数本身一般存放在存储器的数据段中。所以操作数的地址由所以操作数的地址由DSDS加上指令中直接给出的加上指令中直接给出的1616位偏移地址得到。如果位偏移地址得到。如果采用段超越前缀,则操作数也可含在数据段外其他段中。采用段超越前缀,则操作数也可含在数据段外其他段中。图图3-2 3-2 直接寻址方式指令的执行情况直接寻址方式指令的执行情况 4 4)寄存器间接寻址方式)寄存器间接寻址方

8、式 操作数在存储器中,操作数有效地址在操作数在存储器中,操作数有效地址在SISI、DIDI、BXBX、BPBP这这4 4个寄存个寄存器之一中,在一般情况(即不使用段超越前缀明确指定段寄存器)下,器之一中,在一般情况(即不使用段超越前缀明确指定段寄存器)下,如果有效地址在如果有效地址在SISI、DIDI和和BXBX中,则以中,则以DSDS段寄存器的内容为段值;如果有段寄存器的内容为段值;如果有效地址在效地址在BPBP中,则以中,则以SSSS段寄存器的内容为段值。段寄存器的内容为段值。寄存器间接寻址方式指令的书写应加方括号,避免与一般的寄存器寄存器间接寻址方式指令的书写应加方括号,避免与一般的寄存

9、器寻址方式混淆。寻址方式混淆。图图3-3 3-3 寄存器间接寻址方式指令的执行情况寄存器间接寻址方式指令的执行情况 5 5)寄存器相对寻址方式)寄存器相对寻址方式 操作数在存储器中,操作数的有效地址是一个基址寄存器(操作数在存储器中,操作数的有效地址是一个基址寄存器(BXBX、BPBP)或)或变址寄存器的(变址寄存器的(SISI、DIDI)内容加上指令中给定的)内容加上指令中给定的8 8位获位获1616位位移量之和。位位移量之和。在一般情况(即不使用段超越前缀明确指定段寄存器)下,如果在一般情况(即不使用段超越前缀明确指定段寄存器)下,如果SISI、DIDI或或BXBX的内容作为有效地址的一部

10、分,那么引用的段寄存器是的内容作为有效地址的一部分,那么引用的段寄存器是DSDS;如果;如果BPBP的内的内容作为有效地值的一部分,那么引用的段寄存器是容作为有效地值的一部分,那么引用的段寄存器是SSSS。比如,。比如,“MOV BXMOV BX,BP-4BP-4”指令中,源操作数采用寄存器相对寻址,引用的段寄存器是指令中,源操作数采用寄存器相对寻址,引用的段寄存器是SSSS;“MOV ESMOV ES:BX+5BX+5,ALAL”指令中,目的操作数采用寄存器相对寻址,引用指令中,目的操作数采用寄存器相对寻址,引用的段寄存器是的段寄存器是ESES。图图3-4 3-4 寄存器相对寻址方式指令的执

11、行情况寄存器相对寻址方式指令的执行情况 6 6)基址加变址寻址方式)基址加变址寻址方式 操作数在存储器中,操作数的有效地址由基址寄存器之一的内容操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容相加得到。即在一般情况(即不使用段超越与变址寄存器之一的内容相加得到。即在一般情况(即不使用段超越前缀明确指定段寄存器)下,如果前缀明确指定段寄存器)下,如果BPBP的内容作为有效地址的一部分,的内容作为有效地址的一部分,则以则以SSSS的内容为段值,否则以的内容为段值,否则以DSDS的内容为段值。的内容为段值。7 7)相对基址加变址寻址方式)相对基址加变址寻址方式 操作数在

12、存储器中,操作数的有效地址由基址寄存器之一的内容操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容与指令中给定的与变址寄存器之一的内容与指令中给定的8 8位或位或1616位位移量相加得到。位位移量相加得到。也就是说,相对基址变址寻址方式的有效地址是由指令中指定的也就是说,相对基址变址寻址方式的有效地址是由指令中指定的8 8 位位或或16 16 位位移量位位移量(disp)(disp)、一个基址寄存器内容和一个变址寄存器内容、一个基址寄存器内容和一个变址寄存器内容之和。即:之和。即:BX BXSISI8 8 位位disp disp 或或 BP BPDIDI1616位位

13、disp disp 相对基址加变址这种寻址方式最复杂,但也是最灵活。其寻址方式的表相对基址加变址这种寻址方式最复杂,但也是最灵活。其寻址方式的表示方法多种多样,下面的表示方法是等价的:示方法多种多样,下面的表示方法是等价的:MOV AXMOV AX,BX+DI+1234HBX+DI+1234HMOV AXMOV AX,1234HBX+DI1234HBX+DIMOV AXMOV AX,1234H1234H,BXDIBXDIMOV AXMOV AX,1234HDIBX1234HDIBX3.2 3.2 微处理器的基本指令系统微处理器的基本指令系统 80 x86 80 x86的指令系统大致分为的指令系

14、统大致分为6 6 种类型:数据传送指令、种类型:数据传送指令、算术运算指令、位操作指令、串操作指令、程序控制指令和算术运算指令、位操作指令、串操作指令、程序控制指令和处理器控制指令。处理器控制指令。3.2.1 3.2.1 数据传送指令数据传送指令 数据传送是机器内部最基本的操作之一。这些指令不仅能实现寄存数据传送是机器内部最基本的操作之一。这些指令不仅能实现寄存器之间、寄存器与内存之间、寄存器与器之间、寄存器与内存之间、寄存器与I/OI/O端口之间的字节或字数据的传端口之间的字节或字数据的传送,而且能传送目标地址和状态标示以及完成堆栈的操作。数据传送指送,而且能传送目标地址和状态标示以及完成堆

15、栈的操作。数据传送指令负责把数据地址或立即数传送到寄存器或存储单元中。它又可以分为令负责把数据地址或立即数传送到寄存器或存储单元中。它又可以分为以下以下5 5种。种。1.1.通用数据传送指令通用数据传送指令 1 1)MOVMOV传送指令传送指令 格式:格式:MOVMOVDST,SRCDST,SRC 功能:将源操作数功能:将源操作数SRCSRC送到目的操作数送到目的操作数DSTDST中。中。操作:(操作:(DSTDST)(SRC)(SRC)需要注意以下几点:需要注意以下几点:目的操作数目的操作数DSTDST和源操作数和源操作数SRCSRC不能同时用内存寻址方式,这个限制适用于不能同时用内存寻址方

16、式,这个限制适用于所有指令。所有指令。目的操作数目的操作数DSTDST不能是不能是CSCS,也不能用立即数方式。,也不能用立即数方式。MOVMOV指令不影响标志位。指令不影响标志位。MOVMOV允许传送字或双字。允许传送字或双字。2 2)入栈指令)入栈指令格式:格式:PUSH SRCPUSH SRC功能:将操作数压入堆栈中。功能:将操作数压入堆栈中。操作:操作:1616位指令位指令:(SP(SP)(SP)-2(SP)-2(SP)+1,(SP)(SRC)(SP)+1,(SP)(SRC)32 32位指令位指令:(ESP)(ESP)-4(ESP)(ESP)-4(ESP)+3,(ESP)+2,(ESP

17、)+1,(ESP)(SRC)(ESP)+3,(ESP)+2,(ESP)+1,(ESP)(SRC)3 3)出栈指令)出栈指令格式:格式:POPPOPDSTDST功能:将数据从堆栈中取出送到功能:将数据从堆栈中取出送到DSTDST指定的地址。指定的地址。操作:操作:1616位指令:位指令:(DST)(SP)+1,(SP)(DST)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+2 32 32位指令:位指令:(DST)(ESP)+3,(ESP)+2,(ESP)+1,(ESP)(DST)(ESP)+3,(ESP)+2,(ESP)+1,(ESP)(ESP)(ESP)+4 (ESP)(ESP)

18、+42.2.交换指令交换指令格式:格式:XCHGXCHGOPR1,OPR2OPR1,OPR2功能:使两个操作数功能:使两个操作数OPR1OPR1和和OPR2OPR2互相交换,其中一个操作数必须在寄存器互相交换,其中一个操作数必须在寄存器中,另一个操作数可以在寄存器或内存中。中,另一个操作数可以在寄存器或内存中。操作:操作:(OPR1)(OPR2)(OPR1)(OPR2)需要注意以下几点:需要注意以下几点:不允许使用段寄存器。不允许使用段寄存器。不能在两个内存之间传送。不能在两个内存之间传送。不影响标志位。不影响标志位。不能用立即寻址方式。不能用立即寻址方式。允许字或字节操作。允许字或字节操作。

19、3.3.地址传送指令地址传送指令1 1)LEALEA指令指令格式:格式:LEALEAREG,SRCREG,SRC功能:取有效地址送到寄存器。功能:取有效地址送到寄存器。操作:(操作:(REGREG)(SRC)(SRC)需要注意以下几点:需要注意以下几点:源操作数可以是除寄存器和立即数以外的任意一种内存寻址方式。源操作数可以是除寄存器和立即数以外的任意一种内存寻址方式。目的操作数可以是目的操作数可以是1616位和位和3232位,但不能用段寄存器。位,但不能用段寄存器。不影响标志位。不影响标志位。2 2)LDSLDS指令指令格式:格式:LDSLDSREG,SRCREG,SRC功能:把源操作数指定的

20、内存中的字节单元中的低地址中的字送到指定功能:把源操作数指定的内存中的字节单元中的低地址中的字送到指定的寄存器中,高地址中的字送到的寄存器中,高地址中的字送到DSDS寄存器中。寄存器中。操作:(操作:(REGREG)(SRCSRC)注意以下几点:注意以下几点:SRCSRC不能是段寄存器。不能是段寄存器。SRCSRC必须使用内存寻址方式。必须使用内存寻址方式。不影响标志位。不影响标志位。3 3)LES LES指令指令格式:格式:LESLESREG,SRCREG,SRC功能:把源操作数指定的内存中的字节单元中的低地址中的字送到指定功能:把源操作数指定的内存中的字节单元中的低地址中的字送到指定的寄存

21、器中,高地址中的字送到的寄存器中,高地址中的字送到ESES寄存器中。寄存器中。操作:(操作:(REGREG)(SRCSRC)注意以下几点:注意以下几点:SRCSRC不能是段寄存器。不能是段寄存器。SRCSRC必须使用内存寻址方式。必须使用内存寻址方式。不影响标志位。不影响标志位。4.4.状态标志位传送指令状态标志位传送指令有有4 4条专门传送状态标志位的指令条专门传送状态标志位的指令LAHFLAHF、SAHTSAHT、PUSHFPUSHF和和POPFPOPF。1 1)LAHFLAHF指令指令格式:格式:LAHF LAHF 功能:将标志送到功能:将标志送到AHAH中。中。操作:(操作:(AHAH

22、)(FLAGS(FLAGS的低字节的低字节)2 2)SAHFSAHF指令指令格式:格式:SAHFSAHF功能:将功能:将AHAH中的内容送到中的内容送到FLAGSFLAGS的低的低8 8位。位。操作:(操作:(FLAGSFLAGS的低字节的低字节)(AHAH)3)PUSHF/POPF3)PUSHF/POPF指令指令格式:格式:PUSHFPUSHFPOPFPOPF功能:标志寄存器进栈和出栈功能:标志寄存器进栈和出栈操作:操作:PUSHF:PUSHF:(SP)(SP)-2(SP)(SP)-2(SP)+1,(SP)(FLAGS)(SP)+1,(SP)(FLAGS)POPF:POPF:(FLAGS)(

23、SP)+1,(SP)(FLAGS)(SP)+1,(SP)(SP)(SP)-2(SP)(SP)-2注意以下几点:注意以下几点:LAHFLAHF和和PUSHFPUSHF不影响标志位。不影响标志位。POPFPOPF会以弹出值设置标志寄存器值,会以弹出值设置标志寄存器值,SAHFSAHF由新装入的值确定标志的值。由新装入的值确定标志的值。5.5.专用传送指令专用传送指令专用传送指令主要限于使用累加器专用传送指令主要限于使用累加器EAXEAX,AXAX或或ALAL和计算机接口传送信息。和计算机接口传送信息。1 1)ININ输入指令输入指令长格式:长格式:ININAL,PORT(AL,PORT(字节字节)

24、ININAX,PORT(AX,PORT(字字)ININEAX,PORT(EAX,PORT(双字双字)操作:操作:(ALAL)(PORT)(PORT)(字节字节)(AXAX)(PORT+1,PORT)(PORT+1,PORT)(字字)(EAXEAX)(PORT+3,PORT+2,PORT+1,PORT)(PORT+3,PORT+2,PORT+1,PORT)(双字双字)1 1)ININ输入指令输入指令短格式:短格式:ININAL,DX(AL,DX(字节字节)ININAX,DX(AX,DX(字字)ININEAX,DX(EAX,DX(双字双字)操作:操作:(ALAL)(DX)(DX)(字节字节)(AX

25、AX)(DX)+1,(DX)(DX)+1,(DX)(字字)(EAXEAX)(DX)+3,(DX)+2,(DX)+1,(DX)(DX)+3,(DX)+2,(DX)+1,(DX)(双字双字)2 2)OUTOUT输入指令输入指令长格式:长格式:OUTOUTPORT,AL(PORT,AL(字节字节)OUTOUTPORT,AX(PORT,AX(字字)OUTOUTPORT,EAX(PORT,EAX(双字双字)操作:操作:(PORT)(PORT)(ALAL)(字节字节)(PORT+1,PORT)(PORT+1,PORT)(AXAX)(字字)(PORT+3,PORT+2,PORT+1,PORT)(PORT+3

26、,PORT+2,PORT+1,PORT)(EAXEAX)(双字双字)短格式:短格式:OUTOUTDX,AL(DX,AL(字节字节)OUTOUTDX,AX(DX,AX(字字)OUTOUTDX,EAX(DX,EAX(双字双字)操作:操作:(DX)(DX)(ALAL)(字节字节)(DX)+1,(DX)(DX)+1,(DX)(AXAX)(字字)(DX)+3,(DX)+2,(DX)+1,(DX)(DX)+3,(DX)+2,(DX)+1,(DX)(EAXEAX)(双字双字)3.2.2 3.2.2 算术运算类指令算术运算类指令1.1.加法指令加法指令 1 1)普通加法)普通加法ADDADD格式:格式:ADD

27、 OPRDADD OPRD,OPRSOPRS功能:完成两个操作数相加,结果送至目的操作数功能:完成两个操作数相加,结果送至目的操作数OPRDOPRD。操作:(操作:(OPRDOPRD)(OPRDOPRD)+(OPRSOPRS)(用的是各个字符指的内容,因而要)(用的是各个字符指的内容,因而要加上括号)加上括号)注意以下几点:注意以下几点:如果参与运算的操作数有两个,则它们的类型必须一致,即同时为字节,或如果参与运算的操作数有两个,则它们的类型必须一致,即同时为字节,或同时为字。同时为字。源操作数可以存放在通用寄存器或存储器中,也可以是立即数。源操作数可以存放在通用寄存器或存储器中,也可以是立即

28、数。目的操作数只能在寄存器或存储单元,不能是立即数。目的操作数只能在寄存器或存储单元,不能是立即数。对无符号数和有符号数的处理一视同仁。既作为无符号数而影响标志对无符号数和有符号数的处理一视同仁。既作为无符号数而影响标志CFCF和和AFAF,也作为有符号数影响标志也作为有符号数影响标志OFOF和和SFSF,当然总会影响标志,当然总会影响标志ZFZF和和PFPF。2 2)带进位加指令)带进位加指令ADCADC格式:格式:ADC OPRD,OPRSADC OPRD,OPRS功能:与功能:与ADDADD指令类似,完成两个操作数相加,但还要把进位标志指令类似,完成两个操作数相加,但还要把进位标志CFC

29、F的当前值加上去,把结果送到目的操作数的当前值加上去,把结果送到目的操作数OPRDOPRD。操作:(操作:(OPRDOPRD)(OPRDOPRD)+(OPRSOPRS)+CF+CF注意:注意:ADCADC与与ADDADD指令相比,唯一的差别是:若在指令相比,唯一的差别是:若在ADCADC指令前指令前CFCF1 1,则,则在两个操作数相加之后要再加在两个操作数相加之后要再加1 1,否则它与,否则它与ADDADD的指令完成的功能是一的指令完成的功能是一样的。样的。3 3)INCINC指令指令格式:格式:INC OPRDINC OPRD功能:完成对操作数功能:完成对操作数OPRDOPRD加,然后把结

30、果送回加,然后把结果送回OPRDOPRD。操作:(操作:(OPRDOPRD)(OPRDOPRD)+1+1注意以下几点:注意以下几点:操作数操作数DSTDST可以是通用寄存器,也可以是存储单元。可以是通用寄存器,也可以是存储单元。这条指令执行的结果影响标志这条指令执行的结果影响标志ZFZF、STST、OFOF、PFPF和和AFAF,但它不影响,但它不影响CFCF。该指令主要用于调整地址指针和计数器。该指令主要用于调整地址指针和计数器。2.2.减法指令减法指令1 1)普通减法)普通减法SUBSUB格式:格式:SUB OPRD,OPRSSUB OPRD,OPRS功能:功能:完成两个操作数相减,从完成

31、两个操作数相减,从OPRDOPRD中减去中减去OPRSOPRS,结果送到目标操作数,结果送到目标操作数OPRDOPRD中。中。操作:(操作:(OPRDOPRD)(OPRDOPRD)-(OPRSOPRS)注意事项同注意事项同ADDADD指令。指令。2 2)带借位减法)带借位减法SBBSBB格式:格式:SUB OPRD,OPRSSUB OPRD,OPRS功能:与功能:与SUB SUB 指令类似,在操作数指令类似,在操作数OPRDOPRD减去操作数减去操作数OPRSOPRS的同时还要减借位标的同时还要减借位标志志CFCF的现行值。的现行值。操作:(操作:(OPRDOPRD)(OPRDOPRD)-(O

32、PRSOPRS)-CF-CF3 3)减指令)减指令DECDEC格式:格式:DEC OPRDDEC OPRD功能:这条指令把操作数功能:这条指令把操作数OPRDOPRD减,并把结果送回减,并把结果送回OPRDOPRD。操作:操作:(OPRDOPRD)(OPRDOPRD)-1-1注意以下几点:注意以下几点:操作数操作数OPRDOPRD可以是通用寄存器,也可以是存储单元。可以是通用寄存器,也可以是存储单元。在相减时,把操作数作为一个无符号数对待。在相减时,把操作数作为一个无符号数对待。这条指令执行的结果影响标志这条指令执行的结果影响标志ZFZF、SFSF、OFOF、PFPF和和AFAF,但它不影响,

33、但它不影响CFCF。该指令主要用于调整指针和计数器。该指令主要用于调整指针和计数器。)取补指令)取补指令NEGNEG格式:格式:NEG OPRDNEG OPRD功能:这条指令对操作数取补,就是用零减去操作数功能:这条指令对操作数取补,就是用零减去操作数OPRDOPRD,再把结果送回,再把结果送回OPRDOPRD。操作:(操作:(OPRDOPRD)0-0-(OPRDOPRD)注意以下几点:注意以下几点:在字节操作时对在字节操作时对-128-128取补,或在字操作时对取补,或在字操作时对-32 768-32 768取补,则操作数没有变取补,则操作数没有变化,但化,但OFOF被置位。被置位。操作数可

34、以是通用寄存器,也可以是存储单元。操作数可以是通用寄存器,也可以是存储单元。此指令的执行结果影响此指令的执行结果影响CFCF、ZFZF、SFSF、OFOF、A A和和PFPF,一般总使,一般总使CFCF为,除非为,除非操作数为。操作数为。)比较指令)比较指令CMPCMP格式:格式:CMP OPRD,OPRS CMP OPRD,OPRS功能:完成操作数功能:完成操作数OPRDOPRD减去操作数减去操作数OPRSOPRS,运算结果不送到,运算结果不送到OPRDOPRD,但影响标志,但影响标志CFCF,ZFZF,SFSF,OFOF,AFAF和和PFPF。操作:操作数(操作:操作数(OPRDOPRD)

35、操作数()操作数(OPRSOPRS)3 3乘除指令乘除指令1 1)无符号数乘法指令)无符号数乘法指令MULMUL格式:格式:MUL OPRDMUL OPRD功能:如果功能:如果OPRDOPRD是字节操作数,则把是字节操作数,则把ALAL中的无符号数与中的无符号数与OPRDOPRD相乘,相乘,1616位位结果送到结果送到AXAX中;如果中;如果OPRDOPRD是字操作数,则把是字操作数,则把 AX AX中的无符号数与中的无符号数与OPRDOPRD相相乘,乘,32 32 位结果送到位结果送到DXDX和和AXAX中,中,DXDX含高含高1616位,位,AXAX含低含低1616位。所以由操作位。所以由

36、操作数数OPRDOPRD决定是字节相乘,还是字相乘。决定是字节相乘,还是字相乘。操作:字节操作:(操作:字节操作:(AXAX)(ALAL)(OPRDOPRD)字操作:(字操作:(DX,AXDX,AX)(AXAX)(OPRDOPRD)2 2)带符号数乘法指令)带符号数乘法指令IMULIMUL格式:格式:IMUL OPRDIMUL OPRD 功能:这条指令把被乘数和乘数均作为有符号数,此外与指功能:这条指令把被乘数和乘数均作为有符号数,此外与指令令MULMUL完成类似。完成类似。操作:字节操作:(操作:字节操作:(AX AX)(ALAL)(OPRD)(OPRD)字操作:字操作:(DX,AX)(AX

37、)(DX,AX)(AX)(OPRD)(OPRD)3 3)无符号数除法指令)无符号数除法指令DIVDIV格式:格式:DIV OPRDDIV OPRD功能:如果功能:如果OPRDOPRD是字节操作数,则把是字节操作数,则把AXAX中的无符号除数以中的无符号除数以OPRDOPRD,位的,位的商送到商送到ALAL中,中,8 8位的余数送到位的余数送到AHAH;如果;如果OPRDOPRD是字操作数,则把是字操作数,则把DXDX(高(高1616位)和位)和AXAX中的无符号数除以中的无符号数除以OPRDOPRD,1616位的商送到位的商送到 AX AX,1616位的余数送到位的余数送到 DXDX中。所以由

38、操作数中。所以由操作数OPRDOPRD决定是字节除,还是字除。决定是字节除,还是字除。操作:操作:字节操作:字节操作:(AL)(AX)(AL)(AX)(OPRD)(OPRD)的商的商(AH)(AX)(AH)(AX)(OPRD)(OPRD)的余数的余数字操作:字操作:(AX)(DX,AX)(AX)(DX,AX)(OPRDOPRD)的商)的商 (DXDX)(DX,AXDX,AX)()(OPRDOPRD)的余数)的余数4 4)带符号数除法指令)带符号数除法指令IDIVIDIV格式:格式:IDIV OPRDIDIV OPRD功能:这条指令把被除数和除数均作为有符号数,此外与指令功能:这条指令把被除数和

39、除数均作为有符号数,此外与指令DIVDIV完成类似。完成类似。操作:字节操作:操作:字节操作:(ALAL)(AXAX)()(OPRDOPRD)的商)的商(AHAH)(AXAX)()(OPRDOPRD)的余数)的余数字操作:(字操作:(AXAX)(DX,AXDX,AX)()(OPRDOPRD)的商)的商(DXDX)(DX,AXDX,AX)()(OPRDOPRD)的余数)的余数3.2.3 3.2.3 逻辑运算指令逻辑运算指令 1.1.逻辑与指令逻辑与指令ANDAND 格式:格式:AND DST,SRCAND DST,SRC 功能:对两个操作数执行按位的逻辑与运算,即只有相功能:对两个操作数执行按位

40、的逻辑与运算,即只有相“与与”的两位都的两位都是是1 1,结果才是,结果才是1 1;否则,;否则,“与与”的结果为的结果为0 0。逻辑与的结果送到目的操作数。逻辑与的结果送到目的操作数。操作:操作:(DST)(DST)(SRC)(DST)(DST)(SRC)注意以下几点:注意以下几点:源操作数可以是任意寻址方式。源操作数可以是任意寻址方式。目的操作数只能是立即数之外的其他寻址方式。目的操作数只能是立即数之外的其他寻址方式。两个操作数不能同时为内存寻址方式。两个操作数不能同时为内存寻址方式。所有双操作数的逻辑指令均设置所有双操作数的逻辑指令均设置CF=OF=0CF=OF=0,根据结果设置,根据结

41、果设置SFSF、ZFZF和和PFPF状态,状态,而对而对AFAF未定义。未定义。2.2.逻辑或指令逻辑或指令OROR 格式:格式:ORDST,SRCORDST,SRC 功能:对两个操作数执行按位的逻辑或运算,即只要相功能:对两个操作数执行按位的逻辑或运算,即只要相“或或”的的两位有一位是两位有一位是1 1,结果就是,结果就是1 1。结果送到目的操作数。结果送到目的操作数。操作:操作:(DST)(DST)(SRC)(DST)(DST)(SRC)注意事项同逻辑与指令注意事项同逻辑与指令ANDAND。3.3.逻辑异或指令逻辑异或指令XORXOR 格式:格式:XORDST,SRCXORDST,SRC

42、功能:对两个操作数执行按位的逻辑异或运算,相异或的两位不功能:对两个操作数执行按位的逻辑异或运算,相异或的两位不相同时,结果就是相同时,结果就是1 1,否则,异或的结果为,否则,异或的结果为0 0。结果送到目的操作数。结果送到目的操作数。操作:操作:(DST)(DST)(DST)(DST)(SRC)(SRC)注意事项同逻辑与指令注意事项同逻辑与指令ANDAND。4.4.逻辑非指令逻辑非指令NOTNOT 格式:格式:NOT OPRNOT OPR 功能:对操作数按位求反,功能:对操作数按位求反,NOTNOT指令是一个单操作数指令,结果送到指令是一个单操作数指令,结果送到目的操作数。目的操作数。操作

43、:操作:(OPR)(OPR)(OPR)(OPR)注意以下几点:注意以下几点:源操作数和目的操作数可以是任意寻址方式。源操作数和目的操作数可以是任意寻址方式。不影响标志位。不影响标志位。5.5.测试指令测试指令TESTTEST 格式:格式:TEST TEST DST,SRC DST,SRC 功能:对两个操作数执行按位的逻辑与运算,但结果不回送目的操功能:对两个操作数执行按位的逻辑与运算,但结果不回送目的操作数,只根据结果来设置状态标志。作数,只根据结果来设置状态标志。操作:操作:(DST)(SRC)(DST)(SRC)(符号(符号表示逻辑与)表示逻辑与)3.2.4 3.2.4 移位指令移位指令移

44、位指令包含有逻辑移位、算术移位和循环移位移位指令包含有逻辑移位、算术移位和循环移位3 3种类型种类型6 6条指令。条指令。1.1.逻辑左移位逻辑左移位 格式:格式:SHLSHLOPR,CNTOPR,CNT 功能:功能:SHLSHL指令向左逐位移动指令向左逐位移动CNTCNT次,每次逐位移动后,最低位用次,每次逐位移动后,最低位用0 0来补充,最高位移入来补充,最高位移入CFCF,如图,如图3-63-6所示。所示。注意以下几点:注意以下几点:(1 1)目的操作数)目的操作数OPROPR可以是除立即数外的任何寻址方式。可以是除立即数外的任何寻址方式。(2 2)移位次数)移位次数CNT=1CNT=1

45、时,时,1 1可以直接写在指令中,可以直接写在指令中,CNTCNT1 1时,时,CNTCNT必须放必须放入入CLCL寄存器中。寄存器中。(3 3)指令对标志位的影响:)指令对标志位的影响:CF=CF=移入的数值。当移入的数值。当CF=1CF=1时,操作数左移的时,操作数左移的最高位的值为最高位的值为1 1,CF=0CF=0;操作数左移的最高位的值为;操作数左移的最高位的值为0 0。SFSF、ZFZF、PFPF根据根据移动后的结果设置。移动后的结果设置。图图3-63-6 逻辑左移逻辑左移2.2.逻辑右移位逻辑右移位 格式:格式:SHRSHROPR,CNTOPR,CNT 功能:功能:SHRSHR指

46、令向右逐位移动指令向右逐位移动CNTCNT次,每次逐位移动后,最高位用次,每次逐位移动后,最高位用0 0来补充,最低位移入来补充,最低位移入CFCF,如图,如图3-73-7所示。所示。注意事项同逻辑左移指令(注意事项同逻辑左移指令(SHLSHL)中的()中的(1 1)、()、(2 2)。不同的是:)。不同的是:指令对标志位的影响,指令对标志位的影响,CF=CF=移入的数值。移入的数值。CF=1CF=1,移动后操作数最高位的值,移动后操作数最高位的值补补0 0,最低位的,最低位的1 1移走。移走。CF=0CF=0,移动时最高位的值补,移动时最高位的值补0 0,最末位的,最末位的0 0移走。移走。

47、SFSF、ZFZF、PFPF根据移动后的结果设置。根据移动后的结果设置。图图3-73-7 逻辑右移逻辑右移3.3.算术左移算术左移 格式:格式:SALSALOPR,CNTOPR,CNT 功能:功能:SALSAL指令向左逐位移动指令向左逐位移动CNTCNT次,每次逐位移动后,最低位用次,每次逐位移动后,最低位用0 0来补充,最高位移入来补充,最高位移入CFCF,如图,如图3-83-8所示。所示。注意事项同逻辑左移指令(注意事项同逻辑左移指令(SHLSHL)中的()中的(1 1)、()、(2 2)。不同的是:指)。不同的是:指令对标志位的影响,指令对标志位的影响。令对标志位的影响,指令对标志位的影

48、响。CF=CF=移入的数值。当移入的数值。当CF=1CF=1时,时,操作数左移的最高位的值为操作数左移的最高位的值为1 1,操作数的最高位补,操作数的最高位补1 1,。,。CF=0CF=0,操作数左,操作数左移的最高位的值为移的最高位的值为0 0。操作数的最高位补。操作数的最高位补0 0,最末位也补,最末位也补0 0。SFSF、ZFZF、PFPF根根据移动后的结果设置。据移动后的结果设置。图图3-83-8 算术左移算术左移4.4.算术右移算术右移 格式:格式:SARSAROPR,CNTOPR,CNT 功能:功能:SARSAR指令向右逐位移动指令向右逐位移动CNTCNT次,每次逐位移动后,最高位

49、用符次,每次逐位移动后,最高位用符号位来补充,最低位移入号位来补充,最低位移入CFCF,如图,如图3-93-9所示。所示。注意事项同逻辑左移指令(注意事项同逻辑左移指令(SHLSHL)中的()中的(1 1)、()、(2 2)。不同的是:指)。不同的是:指令对标志位的影响,令对标志位的影响,CF=CF=移入的数值。移入的数值。CF=1CF=1,移动时操作数最高位的值补,移动时操作数最高位的值补原来的二进制的值,最低位的原来的二进制的值,最低位的1 1移走。移走。CF=0CF=0,移动时最高位的值补原来的,移动时最高位的值补原来的二进制的值,最末位的二进制的值,最末位的0 0移走。移走。SFSF、

50、ZFZF、PFPF根据移动后的结果设置。根据移动后的结果设置。图图3-9 3-9 算术右移算术右移5.5.循环左移循环左移 格式:格式:ROLROLOPR,CNTOPR,CNT 功能:功能:ROLROL对由对由OPROPR指定的寄存器或存储器操作数左移循环移动指定的寄存器或存储器操作数左移循环移动CNTCNT所指所指定的次数,每左移一次,把最高位同时移入定的次数,每左移一次,把最高位同时移入CFCF和操作数最低位,如图和操作数最低位,如图3-103-10所所示。示。注意事项同逻辑左移指令(注意事项同逻辑左移指令(SHLSHL)中的()中的(1 1)、()、(2 2)。不同的是:指令)。不同的是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(微机原理与接口技术第3章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|