8086汇编语言指令表1AAA未组合的十进制加法调整指令AAA(ASCIIAdgustforAddition)格式:AAA功能:对两个组合的十进制数相加运算(存在AL中)的结果进行调整,产生一个未组合的十进制数放在AX中.说明:1.组合的十进制数和未组合的十进制数:在计算中,十进制数可用四位二进制数编码,称为BCD码.当一个节(8位)中存放一位BCD码,且放在字节的低4位,高4位为时称为未组合的BCD码.2.AAA的调整操作若(AL)and0FH9或AF=1,则调整如下:(AL)--(AL)+6,(AH)--(AH)+1,AF=1,CF--AF,(AL)--(AL)and0FHAAD未组合十进制数除法调整指令AAD(ASCIIAdjustforDivision)格式:AAD功能:在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL中)和余数(在AH中).说明:1.AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH中.2.示例:MOVBL,5MOVAX,0308HAAD;(AL)--1EH+08H=26H,(AH)--0DIVBL;商=07H--(AL),余数=03H--(AH).AAM未组合十进制数乘法调整指令AAM(ASCIIAdjustMULtiply)格式:AAM功能:对两个未组合的十进制数相乘后存于AX中的结果进行调整,产生一个未组合的十进制数存在AL中.说明:1.实际上是两个未组合的十进制数字节相乘,一个0~9的数与另一个0~9的数相乘其积最大为81.为了得到正确的结果,应进行如下调整:乘积:(AH)--(AL)/10(AL)--(AL)MOD102.本指令应跟在MUL指令后使用,乘积的两位十进制结果,高位放在AH中,低位放在AL中.AH内容是MUL指令的结果被10除的商,即(AL)/10,而最后的AL内容是乘积被10整除的余数(即个位数).AAS未组合十进制减法调整指令AAS(ASCIIAdjustforSubtraction)格式:AAS功能:对两个未组合十进制数相减后存于AL中的结果进行调整,调整后产生一个未组合的十进制数数且仍存于AL中.说明:1.本指令影响标志位CF及AF.2.调整操作若(AL)and0FH9或AF=1则(AL)--(AL)-6,(AH)--(AH)-1,CF--AF,(AL)--(AL)and0FH,否则(AL)--(AL)and0FHADC带进位加法指令ADC(AdditionCarry)说明:8086汇编语言指令表2格式:ADCOPRD1,OPRD2功能:OPRD1--OPRD1+OPRD2+CF1.OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2.OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3.加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.4.该指令对标志位的影响同ADD指令.ADD加法指令ADD(Addition)格式:ADDOPRD1,OPRD2功能:两数相加说明:1.OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2.OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3.加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.加法指令适用于无符号数或有符号数的加法运算.AND逻辑与运算指令AND格式:ANDOPRD1,OPRD2功能:对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算,OPRD1--OPRD1andOPRD2.说明:1.目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.2.示例:ANDAL,0FH;(AL)--(AL)AND0FHANDAX,BX;(AX)--(AX)AND(BX)ANDDX,BUFFER[SI+BX]ANDBETA[BX],00FFH注意:两数相与,有一个数假则值为假CALL过程调用指令CALL格式:CALLOPRD功能:过程调用指令说明:1.其中OPRD为过程的目的地址.2.过程调用可分为段内调用和段间调8086汇编语言指令表3用两种.寻址方式也可以分为直接寻址和间接寻址两种.3.本指令不影响标志位.CBW字节扩展指令CBW(ConvertBytetoWord)格式:CBW功能:将字节扩展为字,即把AL寄存器的符号位扩展到AH中.说明:1.两个字节相除时,先使用本指令形成一个双字节长的被除数.2.本指令不影响标志位.3.示例:MOVAL,25CBWIDIVBYTEPTRDATA1CLC处理器控制指令-标志位操作指令格式:CLC;置CF=0STC;置CF=1CMC;置CF=(NotCF)进位标志求反CLD;置DF=0STD;置DF=1CLI;置IF=0,CPU禁止响应外部中断STI;置IF=1,使CPU允许向应外部中断功能:完成对标志位的置位、复位等操作.说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CLD处理器控制指令-标志位操作指令格式:CLC;置CF=0STC;置CF=1CMC;置CF=(NotCF)进位标志求反CLD;置DF=0STD;置DF=1CLI;置IF=0,CPU禁止响应外部中断STI;置IF=1,使CPU允许向应外部中断功能:完成对标志位的置位、复位等操作.说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CLI处理器控制指令-标志位操作指令格式:CLC;置CF=0STC;置CF=1CMC;置CF=(NotCF)进位标志求反CLD;置DF=0STD;置DF=1CLI;置IF=0,CPU禁止响应外部中断STI;置IF=1,使CPU允许向应外部中断功能:完成对标志位的置位、复位等操作.说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CMC处理器控制指令-标志位操作指令说明:例如串操作中的程序,经常用8086汇编语言指令表4格式:CLC;置CF=0STC;置CF=1CMC;置CF=(NotCF)进位标志求反CLD;置DF=0STD;置DF=1CLI;置IF=0,CPU禁止响应外部中断STI;置IF=1,使CPU允许向应外部中断功能:完成对标志位的置位、复位等操作.CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CMP比效指令CMP(CoMPare)格式:CMPOPRD1,OPRD2功能:对两数进行相减,进行比较.说明:1.OPRD1为任意通用寄存器或存储器操作数.OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.2.对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.3.在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.CMPS字符串比较指令格式:CMPSOPRD1,OPRD2CMPSBCMPSW功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整.说明:1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMPSB字符串比较指令格式:CMPSOPRD1,OPRD2CMPSBCMPSW功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整.说明:1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.8086汇编语言指令表5CMPSW字符串比较指令格式:CMPSOPRD1,OPRD2CMPSBCMPSW功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整.说明:1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CWD字扩展指令CWD(ConvertWordtoDoubleWord)格式:CWD功能:将字扩展为双字长,即把AX寄存器的符号位扩展到DX中.说明:1.两个字或字节相除时,先用本指令形成一个双字长的的被除数.2.本指令不影响标志位.3.示例:在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a运算。DAA组合的十进制加法调整指令DAA(DecimalAdjustforAddition)格式:DAA功能:对AL中的两个组合进制数相加的结果进行调整,调整结果仍放在AL中,进位标志放在CF中.说明:1.调整操作如下(1)若(AL)and0FH9或AF=1,则(AL)--(AL)+6,AF--1,对低四位的调整.(2)若(AL)and0F0H90H或CF=1,则(AL)--(AL)+60H,CF--1.2.示例:(AL)=18H,(BL)=06HADDAL,BL;(AL)--(AL)+(BL);(AL)=1EHDAA;(AL)DAS组合十进制减法调整指令DAS(DecimalAdjustforSubtraction)格式:DAS功能:对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数且仍存于AL中.说明:调整操作若(AL)and0FH9或AF=1,则(AL)--(AL)-6,AF=1若(AL)and0F0H90H或CF=1,则(AL)--(AL)-60,CF=1DEC减一指令DEC(Decrementby1)格式:DECOPRD功能:OPRD--OPRD-1说明:1.OPRD为寄存器或存储器操作数.2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.3.示例DECAXDECCLDECWORDPTR[DI]DECALFA[DI+BX]DIV无符号数除法指令DIV(DIVision)说明:8086汇编语言指令表6格式:DIVOPRD功能:实现两个无符号二进制数除法运算.1.其中OPRD为任一个通用寄存器或存储器操作数.2.字节相除,被除数在AX中;字相除,被除数在DX,AX中,除数在OPRD中.字节除法:(AL)--(AX)/OPRD,(AH)--(AX)MODOPRD字除法:(AX)--(DX)(AX)/OPRD,(DX)--(DX)(AX