一、通用数据传送指令1、传送指令MOV(move)指令的汇编格式:MOVDST,SRC指令的基本功能:(DST)-(SRC)将原操作数(字节或字)传送到目的地址。指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。2、进栈指令PUSH(pushontothestack)出栈指令POP(popfromthestack)指令的汇编格式:PUSHSRC;POPDST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。PUSHSRC(SP)-(SP)-2;(SP)-(SRC)POPDST(DST)-((SP));(SP)-(SP)指令支持的寻址方式:push和pop指令不能不能使用立即数寻址方式。指令对标志位的影响:PUSH和POP指令都不影响标志位。指令的特殊要求:PUSH和POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2或者-2;POP指令的DST不允许是CS寄存器;3、交换指令XCHG(exchange)指令的汇编格式:XCHGOPR1,OPR2指令的基本功能:(OPR1)-(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。指令对标志位的影戏:不影响标志位。指令的特殊要求:不允许使用段寄存器。二、累加器专用传送指令4、输入指令IN(input)输出指令OUT(output)指令的汇编格式:INac,portport=0FFHINac,DXport0FFHOUTport,acport=0FFHOUTDX,acport0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。INac,portport=0FFH(AL)-(port)传送字节或(AX)-(port+1,port)传送字INac,DXport0FFH(AL)-((DX))传送字节或(AX)-((DX)+1,(DX))传送字OUTport,acport=0FFH(port)-(AL)传送字节或(port+1,port)-(AX)传送字OUTDX,acport0FFH(DX)-(AL)传送字节或((DX)+1,(DX))-(AX)传送字指令对标志位的影响:不影响标志位。指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。5、换码指令XLAT(translate)指令的汇编格式:XLATopr或XLAT指令的基本功能:这条指令根据AL寄存器提供的位移量,将BX指使的字节表格中的代码换存在AL中。(AL)-((DS)*16+(BX)+(AL))指令对标志位的影响:不影响标志位。指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。三、地址传送指令6、有效地址传送器LEA(loadeffectiveaddress)指令的汇编格式:LEAreg,src指令的基本功能:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。指令支持的寻址方式:各种存储器寻址方式。指令对标志位的影响:不影响标志位。指令的特出要求:指令中reg不能是段寄存器;7、指针送寄存器和DSLDS(loadDSwithpoint)指针送寄存器和ESLES(loadESwithpoint)指令的汇编格式:LDSreg,srcLESreg,src指令的基本功能:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。LDSreg,src(reg)-(src)(DS)-(src+2)LESreg,src(reg)-(src)(ES)-(src+2)指令支持的寻址方式:src必须为存储器寻址方式指令对标志位的影响:不影响标志位。指令的特殊要求:指令中REG不能是段寄存器;四、标志寄存器传送指令8、标志寄存器的低字节送AHLAHF(loadAHwithFLAGS)指令的汇编格式:LAHF指令的基本功能:(AH)-(FLAGS)0-7指令对标志位的影响:不影响标志位9、AH送标志寄存器低字节SAHF(storeAHintoFLAGS)指令的汇编格式:SAHF指令的基本功能:(FLAGS)0-7-(AH)指令对标志位的影响:由装入值来确定标志位的值。10、标志进栈PUSHF(pushtheflags)指令的汇编格式:PUSHF指令的基本功能:(SP)-(SP)-2((SP)+1,(SP))-(FLAGS)0-15指令对标志位的影响:不影响标志位。11、标志出栈POPF(poptheFLAGES)指令的汇编格式:POPF指令的基本功能:(FLAGS)0-15-((SP)+1,(SP))(SP)-(SP)+2指令对标志位的影响:由装入值来确定标志位的值。[算术指令]一、加法指令12、加法指令ADD(addition)指令的汇编格式:adddst,src指令的基本功能:(dst)-(src)+(dst)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:SF=1加法结果为负数(符号位为1)SF=0加法结果为正数(符号位为0)ZF=1加法结果为零ZF=0加法结果不为零CF=1最高有效位向高位有进位CF=0最高有效位向高位无进位OF=1两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。OF=0两个不同符号数相加,或同符号数相加,结果符号与其相同。13、带进为加法指令ADC(addwithcarry)指令的汇编格式:ADDdst,src指令的基本功能:(dst)-(src)+(dst)+CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:SF=1加法结果为负数SF=0加法结果为正数ZF=1加法结果为零ZF=0加法结果不为零CF=1最高有效位向高位有进位CF=0最低有效位相高位无进位OF=1两个同符号数相加,结果符号与其相反,OF=0两个同符号数相加,或同符号相加,结果符号与其相同14、加1指令INC(increament)指令的汇编格式:INCopr指令的基本功能:(opr)-(opr)指令支持的寻址方式可以使用除立即数方式外的任何寻址方式指令对标志位的影响:SF=1加法结果为负数SF=0加法结果为正数ZF=1加法结果为零ZF=0加法结果不为零OF=1两个同符号数相加,结果符号与其相反,OF=0两个同符号数相加,或同符号相加,结果符号与其相同。二、减法指令15、减法指令SUB(subtract)指令的汇编格式:SUBdst,src指令的基本功能:(dst)-(dst)-(src)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:SF=1减法结果为负数(符号位为1)SF=0减法结果为正数(符号位为0)ZF=1减法结果为零ZF=0减法结果不为零CF=1二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。OF=0同符号数相减时,或不同符号数相减,其结果符号与减数不同。16、带借位减法指令SBB(subtractwithborrow)指令的汇编格式:SBBdst,src指令的基本功能:(dst)-(dst)-(src)-CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:SF=1减法结果为负数(符号位为1)SF=0减法结果为正数(符号位为0)ZF=1减法结果为零ZF=0减法结果不为零CF=1二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。OF=0同符号数相减时,或不同符号数相减,其结果符号与减数不同。17、减1指令DEC(decrement)指令的汇编格式:DECopr指令的基本功能:(opr)-(opr)-1指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。指令对标志位的影响:SF=1减法结果为负数(符号位为1)SF=0减法结果为正数(符号位为0)ZF=1减法结果为零ZF=0减法结果不为零OF=1两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。OF=0同符号数相减时,或不同符号数相减,其结果符号与减数不同。18、比较指令CMP(compare)指令的汇编格式:CMPopr1,opr2指令的基本功能:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:SF=1减法结果为负数(符号位为1)SF=0减法结果为正数(符号位为0)ZF=1减法结果为零ZF=0减法结果不为零CF=1二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。OF=0同符号数相减时,或不同符号数相减,其结果符号与减数不同。19、求补指令NEG(negate)指令的汇编格式:NEGopr指令的基本功能:(opr)--(opr)指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。指令对标志位的影响:CF=1不为0的操作数求补时CF=0为0的操作数求补时OF=1操作数为-128(字节运算)或操作数为-32768(字运算)OF=0当求补运算的操作数不为-128(字节)或-32768(字)时三、乘法指令20、无符号乘法指令NUL(unsignedmultiple)有符号乘法指令IMUL(signedmuliple)指令的汇编格式:NULsrcIMULsrc指令的基本功能:(AX)-(AL)*(src)(DX,AX)-(AX)*(src)指令支持的寻址方式:src可以使用除立即数方式以外的任一种寻址方式。指令对标志位的影响:乘法指令只影响标志位CF和OF,其他条件码位无定义。MUL指令的条件码设置为:CFOF=00乘积的高一半为0(字节操作的(AH)或字操作的(DX))CFOF=11乘积的高一半不为0IMUL指令的条件码设置为:CFOF=00乘积的高一半为低一半的符号扩展.CFOF=11其他情况指令的特殊要求:MUL和IMUL指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src,目的操作数是隐含的,它只能是累加器(字运算为AX,字节运算为AL)。隐含的乘积寄存器是AX或DX(高位)和AX(低位)。四、符号扩展指令21、