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