汇编语言指令大全
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格式: DAS
功能:对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数且仍存于AL中.
说明:
调整操作
若(AL) and 0FH > 9或AF=1,则(AL)<--(AL)-6,AF=1
若(AL) and 0F0H > 90H或CF=1,则(AL)<--(AL)-60,CF=1
DIV
无符号数除法指令DIV(DIVision)
格式: DIV OPRD
功能:实现两个无符号二进制数除法运算.
说明:
1.其中OPRD为任一个通用寄存器或存储器操作数.
2.字节相除,被除数在AX中;字相除,被除数在DX,AX中,除数在OPRD中.
字节除法: (AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
OPRD1<--OPRD1 and OPRD2.
说明:
1.目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.
2.示例: AND AL,0FH ;(AL)<--(AL) AND 0FH
AND AX,BX ;(AX)<--(AX) AND (BX)
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CLD
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
(2)若(AL) and 0F0H>90H或CF=1,则(AL)<--(AL)+60H,CF<--1.
2.示例: (AL)=18H,(BL)=06H
ADD AL,BL ; (AL)<--(AL)+(BL) ; (AL)=1EH
DAA ; (AL)
DAS
组合十进制减法调整指令DAS(Decimal Adjust for Subtraction)
AND DX,BUFFER[SI+BX]
AND BETA[BX],00FFH
注意:两数相与,有一个数假则值为假
CALL
过程调用指令CALL
格式: CALL OPRD
功能:过程调用指令
说明:
1.其中OPRD为过程的目的地址.
2.过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种.
AAD
未组合十进制数除法调整指令AAD(ASCII Adjust for Division)
格式: AAD
功能:在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL中)和余数(在AH中).
说明:
1. AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH中.
2.示例: MOV BL,5
MOV AX,0308H
AAD ;(AL)<--1EH+08H=26H,(AH)<--0
DIV BL ;商=07H-->(AL),余数=03H-->(AH).
AND
逻辑与运算指令AND
格式: AND OPRD1,OPRD2
功能:对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算,
CMPSB
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
同时SI,DI将自动调整.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
CMPSW
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
CMP
比效指令CMP(CoMPare)
格式: CMP OPRD1,OPRD2
功能:对两数进行相减,进行比较.
说明:
1. OPRD1为任意通用寄存器或存储器操作数.
OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.
2.对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.
3.当被除数为8位,在进行字节除法前,应把AL的符号位扩充至AH中.在16位除法时,若被除数为16位,则应将AX中的符号位扩到DX中.
IMUL
带符号数乘法指令IMUL(Integer MULtiply)
格式: IMUL OPRD
功能:完成两个带符号数的相乘
说明:
1.其中OPRD为任一通用寄存器或存储器操作数.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
3.在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.
CMPS
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
同时SI,DI将自动调整.
3.本指令不影响标志位.
CLC
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:
1.其中EXTOPRD为外部操作码,OPRD为源操作数.
2.本指不影响标志位.
HLT
处理器暂停指令HLT
格式: HLT
功能:使处理器处于暂时停机状态.
说明:
1.本指令不影响标志位.
2.由执行HLT引起的暂停,只有RESET(复位)、NMI(非屏蔽中断请求)、INTR(可屏蔽的外部中断请求)信号可以使
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CMC
处理器控制指令-标志位操作指令
CWD
字扩展指令CWD(Convert Word to Double Word)
格式: CWD
功能:将字扩展为双字长,即把AX寄存器的符号位扩展到DX中.
说明:
1.两个字或字节相除时,先用本指令形成一个双字长的的被除数.
2.本指令不影响标志位.
3.示例:在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a运算。
DAA
组合的十进制加法调整指令DAA(Decimal Adjust for Addition)
格式: DAA
功能:对AL中的两个组合进制数相加的结果进行调整,调整结果仍放在AL中,进位标志放在CF中.
说明:
1.调整操作如下
(1)若(AL) and 0FH>9或AF=1,则(AL)<--(AL)+6,AF<--1,对低四位的调整.
2. MUL指令对带符号相乘时,不能得到正确的结果.
例如: (AL)=255
(CL)=255
MUL CL
(AX)=65025
注意:这对无符号数讲,结果是正确的,但对带符号数讲,相当于(-1)*(-1)结果应为+1,而65025对应的带符号数为-511,显然是不正确的.
IN
输入指令IN
格式: IN AL,n ;(AL)<--(n)
3.示例:
INC SI;(SI)<--ቤተ መጻሕፍቲ ባይዱSI)+1
INC WORD PTR[BX]
INC BYTE PTR[BX+DI]
INC CL;(CL)<--(CL)+1
注意:上述第二,三两条指令,是对存储字及存储字节的内容加1以替代原来的内容.
INT
软中断指令INT
格式: INT n其中n为软中断的类型号.
功能:本指令将产生一个软中断,把控制转向一个类型号为n的软中断,该中断处理程序入口地址在中断向量表的n*4地址
处的二个存储器字(4个单元)中.
说明:操作过程与INTO指令雷同,只需将10H改为n*4即可.所以,本指令也将影响标志位IF及TF.
INTO
溢出中断指令INTO(INTerrupt if Overflow)
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CLI
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
字除法: (AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD
ESC
处理器交权指令ESC
格式: ESC EXTOPRD,OPRD
功能:使用本指令可以实现协处理器出放在ESC指令代码中的6位常数,该常数指明协处理器要完成的功能.
当源操作数为存储器变量时,则取出该存储器操作数传送给协处理器.
其退出暂停状态.它可用于等待中断的到来或多机系统的同步操作.
IDIV
带符号数除法指定IDIV(Interger DIVision)
格式: IDIV OPRD
功能:这实现两个带符号数的二进制除法运算.
说明:
1.其中OPRD为任一通用寄存器或存储器操作数.
2.理由与IMUL相同,只有IDIV指令,才能得到符号数相除的正确结果.
格式: INTO
同时SI,DI将自动调整.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
DEC
减一指令DEC(Decrement by 1)
格式: DEC OPRD
功能: OPRD<--OPRD-1
说明:
1. OPRD为寄存器或存储器操作数.
2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.
3.示例DEC AX
DEC CL
DEC WORD PTR[DI]
DEC ALFA[DI+BX]
当输入数据字时,[(DX)+1]送AH,[(DX)]送AL中,用符号:(AX)<--[(DX)+1],[(DX)]表示.
INC
加1指令INC(INCrement by 1)
格式: INC OPRD
功能: OPRD<--OPRD+1
说明:
1. OPRD为寄存器或存储器操作数.
2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.
IN AX,n ;(AX)<--(n+1),(n)
IN AL,DX ;(AL)<--[(DX)]
IN AX,DX ;(AX)<--[(DX)+1],[(DX)]
功能:输入指令
说明:
1.其中n为8位的端口地址,当字节输入时,将端口地址n+1的内容送至AH中,端口地址n的内容送AL中.
2.端口地址也可以是16位的,但必须将16位的端口地址送入DX中.当字节寻址时,由DX内容作端口地址的内容送至AL中;
功能:对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数且仍存于AL中.
说明:
调整操作
若(AL) and 0FH > 9或AF=1,则(AL)<--(AL)-6,AF=1
若(AL) and 0F0H > 90H或CF=1,则(AL)<--(AL)-60,CF=1
DIV
无符号数除法指令DIV(DIVision)
格式: DIV OPRD
功能:实现两个无符号二进制数除法运算.
说明:
1.其中OPRD为任一个通用寄存器或存储器操作数.
2.字节相除,被除数在AX中;字相除,被除数在DX,AX中,除数在OPRD中.
字节除法: (AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
OPRD1<--OPRD1 and OPRD2.
说明:
1.目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.
2.示例: AND AL,0FH ;(AL)<--(AL) AND 0FH
AND AX,BX ;(AX)<--(AX) AND (BX)
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CLD
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
(2)若(AL) and 0F0H>90H或CF=1,则(AL)<--(AL)+60H,CF<--1.
2.示例: (AL)=18H,(BL)=06H
ADD AL,BL ; (AL)<--(AL)+(BL) ; (AL)=1EH
DAA ; (AL)
DAS
组合十进制减法调整指令DAS(Decimal Adjust for Subtraction)
AND DX,BUFFER[SI+BX]
AND BETA[BX],00FFH
注意:两数相与,有一个数假则值为假
CALL
过程调用指令CALL
格式: CALL OPRD
功能:过程调用指令
说明:
1.其中OPRD为过程的目的地址.
2.过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种.
AAD
未组合十进制数除法调整指令AAD(ASCII Adjust for Division)
格式: AAD
功能:在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL中)和余数(在AH中).
说明:
1. AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH中.
2.示例: MOV BL,5
MOV AX,0308H
AAD ;(AL)<--1EH+08H=26H,(AH)<--0
DIV BL ;商=07H-->(AL),余数=03H-->(AH).
AND
逻辑与运算指令AND
格式: AND OPRD1,OPRD2
功能:对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算,
CMPSB
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
同时SI,DI将自动调整.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
CMPSW
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
CMP
比效指令CMP(CoMPare)
格式: CMP OPRD1,OPRD2
功能:对两数进行相减,进行比较.
说明:
1. OPRD1为任意通用寄存器或存储器操作数.
OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.
2.对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.
3.当被除数为8位,在进行字节除法前,应把AL的符号位扩充至AH中.在16位除法时,若被除数为16位,则应将AX中的符号位扩到DX中.
IMUL
带符号数乘法指令IMUL(Integer MULtiply)
格式: IMUL OPRD
功能:完成两个带符号数的相乘
说明:
1.其中OPRD为任一通用寄存器或存储器操作数.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
3.在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.
CMPS
字符串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能:由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.
同时SI,DI将自动调整.
3.本指令不影响标志位.
CLC
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:
1.其中EXTOPRD为外部操作码,OPRD为源操作数.
2.本指不影响标志位.
HLT
处理器暂停指令HLT
格式: HLT
功能:使处理器处于暂时停机状态.
说明:
1.本指令不影响标志位.
2.由执行HLT引起的暂停,只有RESET(复位)、NMI(非屏蔽中断请求)、INTR(可屏蔽的外部中断请求)信号可以使
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CMC
处理器控制指令-标志位操作指令
CWD
字扩展指令CWD(Convert Word to Double Word)
格式: CWD
功能:将字扩展为双字长,即把AX寄存器的符号位扩展到DX中.
说明:
1.两个字或字节相除时,先用本指令形成一个双字长的的被除数.
2.本指令不影响标志位.
3.示例:在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a运算。
DAA
组合的十进制加法调整指令DAA(Decimal Adjust for Addition)
格式: DAA
功能:对AL中的两个组合进制数相加的结果进行调整,调整结果仍放在AL中,进位标志放在CF中.
说明:
1.调整操作如下
(1)若(AL) and 0FH>9或AF=1,则(AL)<--(AL)+6,AF<--1,对低四位的调整.
2. MUL指令对带符号相乘时,不能得到正确的结果.
例如: (AL)=255
(CL)=255
MUL CL
(AX)=65025
注意:这对无符号数讲,结果是正确的,但对带符号数讲,相当于(-1)*(-1)结果应为+1,而65025对应的带符号数为-511,显然是不正确的.
IN
输入指令IN
格式: IN AL,n ;(AL)<--(n)
3.示例:
INC SI;(SI)<--ቤተ መጻሕፍቲ ባይዱSI)+1
INC WORD PTR[BX]
INC BYTE PTR[BX+DI]
INC CL;(CL)<--(CL)+1
注意:上述第二,三两条指令,是对存储字及存储字节的内容加1以替代原来的内容.
INT
软中断指令INT
格式: INT n其中n为软中断的类型号.
功能:本指令将产生一个软中断,把控制转向一个类型号为n的软中断,该中断处理程序入口地址在中断向量表的n*4地址
处的二个存储器字(4个单元)中.
说明:操作过程与INTO指令雷同,只需将10H改为n*4即可.所以,本指令也将影响标志位IF及TF.
INTO
溢出中断指令INTO(INTerrupt if Overflow)
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CLI
处理器控制指令-标志位操作指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
字除法: (AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD
ESC
处理器交权指令ESC
格式: ESC EXTOPRD,OPRD
功能:使用本指令可以实现协处理器出放在ESC指令代码中的6位常数,该常数指明协处理器要完成的功能.
当源操作数为存储器变量时,则取出该存储器操作数传送给协处理器.
其退出暂停状态.它可用于等待中断的到来或多机系统的同步操作.
IDIV
带符号数除法指定IDIV(Interger DIVision)
格式: IDIV OPRD
功能:这实现两个带符号数的二进制除法运算.
说明:
1.其中OPRD为任一通用寄存器或存储器操作数.
2.理由与IMUL相同,只有IDIV指令,才能得到符号数相除的正确结果.
格式: INTO
同时SI,DI将自动调整.
说明:
1.其中OPRD2为源串符号地址,OPRD1为目的串符号地址.
2.本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.
3.与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)进位标志求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能:完成对标志位的置位、复位等操作.
说明:例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
DEC
减一指令DEC(Decrement by 1)
格式: DEC OPRD
功能: OPRD<--OPRD-1
说明:
1. OPRD为寄存器或存储器操作数.
2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.
3.示例DEC AX
DEC CL
DEC WORD PTR[DI]
DEC ALFA[DI+BX]
当输入数据字时,[(DX)+1]送AH,[(DX)]送AL中,用符号:(AX)<--[(DX)+1],[(DX)]表示.
INC
加1指令INC(INCrement by 1)
格式: INC OPRD
功能: OPRD<--OPRD+1
说明:
1. OPRD为寄存器或存储器操作数.
2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.
IN AX,n ;(AX)<--(n+1),(n)
IN AL,DX ;(AL)<--[(DX)]
IN AX,DX ;(AX)<--[(DX)+1],[(DX)]
功能:输入指令
说明:
1.其中n为8位的端口地址,当字节输入时,将端口地址n+1的内容送至AH中,端口地址n的内容送AL中.
2.端口地址也可以是16位的,但必须将16位的端口地址送入DX中.当字节寻址时,由DX内容作端口地址的内容送至AL中;