汇编指令大全.docx
- 文档编号:7640159
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:56
- 大小:33.27KB
汇编指令大全.docx
《汇编指令大全.docx》由会员分享,可在线阅读,更多相关《汇编指令大全.docx(56页珍藏版)》请在冰豆网上搜索。
汇编指令大全
汇编指令大全
零、状态寄存器
1MOVE数据传送指令MOV
格式:
MOVOPRD1,OPRD2
功能:
本指令将一个源操作数送到目的操作数
中,即OPRD1<--OPRD2.
说明:
1.OPRD1为目的操作数,可以是
寄存器、存储器、累加器.
OPRD2为源操作数,可以是寄存
器、存储器、累加器和立即数.
2.MOV指令以分为以下四种情
况:
<1>寄存器与寄存器之间的数据
传送指令
<2>立即数到通用寄存器数据传
送指令
<3>寄存器与存储器之间的数据
传送指令
<4>立即数到存储器的数据传送
3.本指令不影响状态标志位
2PUSH堆栈操作指令PUSH和POP
格式:
PUSHOPRD
POPOPRD
功能:
实现压入操作的指令是PUSH指令;实现弹出
操作的指令是POP指令.
说明:
1.OPRD为16位(字)操作数,可以
是寄存器或存储器操作数.
2.PUSH的操作过程是:
(SP)<--
(SP)-2,((sp))<--OPRD即先修
改堆栈指针SP(压入时为自动减
2),然后,将指定的操作数送入新
的栈顶位置.
此处的((SP))<--OPRD,也可以理
解为:
[(SS)*16+(SP)]<--OPRD
或[SS:
SP]<--OPRD
3POP堆栈操作指令PUSH和POP
格式:
PUSHOPRD
POPOPRD
功能:
实现压入操作的指令是PUSH指令;实现弹出
操作的指令是POP指令.
说明:
1.OPRD为16位(字)操作数,可以
是寄存器或存储器操作数.
2.POP指令的操作过程是:
POP
OPRD:
OPRD<--((SP)),(SP)<--
(SP)+2
它与压入操作相反,是先弹出栈
顶的数顶,然后再修改指针SP的
内容.
3.示例:
POPAX
POPDS
POPDATA1POPALFA[BX][DI]
4.PUSH和POP指令对状态标志位
没有影响.
4XCHG数据交换指令XCHG
格式:
XCHGOPRD1,OPRD2其中的OPRD1为目的操作
数,OPRD2为源操作数
功能:
将两个操作数相互交换位置,该指令把源操
作数OPRD2与目的操数OPRD1交换.
说明:
1.OPRD1及OPRD2可为通用寄存
器或存储器,但是两个存储器之
间是不能用XCHG指令实现的.
2.段寄存器内容不能用XCHG指
令来交换.
3.若要实现两个存储器操作数
DATA1及DATA2的交换,可用以下
指令实现:
示例:
PUSHDATA1
星尘-易尘
页码,1/22
PUSHDATA2
POPDATA1
POPDATA2
4.本指令不影响状态标志位.
5XLAT查表指令XLAT
格式:
XLATTABLE其中TABLE为一待查表格的首地
址.
功能:
把待查表格的一个字节内容送到AL累加器
中.
说明:
1.在执行该指令前,应将TABLE
先送至BX寄存器中,然后将待查
字节与在表格中距表首地址位移
量送AL,即(AL)<--((BX)+
(AL)).
2.本指令不影响状态标位,表格
长度不超过256字节.
6LAHF标志传送指令LAHF
格式:
LAHF
功能:
取FLAG标志寄存器低8位至AH寄存器.(AH)<-
-(FLAG)7~0
说明:
该指令不影响FLAG的原来
内容,AH只是复制了原FLAG的低8
位内容.
7SAHF标志传送指令SAHF
格式:
SAHF
功能:
将AH存至FLAG低8位
说明:
本指令将用AH的内容改写
FLAG标志寄存器中的SF、ZF、
AF、PF、和CF标志,从而改变原
来的标志位.
8PUSHF标志传送指令PUSHF
格式:
PUSHF
功能:
本指令可以把标志寄存器的内容保存到堆栈
中去
9POPF标志传送指令POPF
格式:
POPF
功能:
本指令的功能与PUSHF相反,在子程序调用和
中断服务程序中,往往用PUSHF指令保护FLAG的内
容,用POPF指令将保护的FLAG内容恢复.
说明:
如果对堆栈中的原FLAG内
容进行修改,如对TF等标志位进
行修改,然后再弹回标志位寄存
器FLAG.这是通过指令修改TF标
志的唯一方法.
10LEA有效地址传送指令LEA
格式:
LEAOPRD1,OPRD2
功能:
将源操作数给出的有效地址传送到指定的的
寄存器中.
说明:
1.OPRD1为目的操作数,可为任
意一个16位的通用寄存器.
OPRD2为源操作数,可为变量
名、标号或地址表达式.
示例:
LEABX,DATA1
LEADX,BETA[BX+SI]
LEABXBX,[BP],[DI]
2.本指令对标志位无影响。
11LDS从存储器取出32位地址的指令LDS
格式:
LDSOPRD1,OPRD2
功能:
从存储器取出32位地址的指令.
说明:
OPRD1为任意一个16位的寄存
器.
OPRD2为32位的存储器地址.
示例:
LDSSI,ABCD
LDSBX,FAST[SI]
LDSDI,[BX]
注意:
上面LDSDI,[BX]指令的
功能是把BX所指的32位地址指针
的段地址送入DS,偏移地址送入
星尘-易尘
页码,2/22
DI.
12LES从存储器取出32位地址的指令LES
格式:
LESOPRD1,OPRD2
功能:
从存储器取出32位地址的指令.
说明:
OPRD1为任意一个16位的寄存
器.
OPRD2为32位的存储器地址.
示例:
LESSI,ABCD
LESBX,FAST[SI]
LESDI,[BX]
注意:
上面LESDI,[BX]指令的
功能是把BX所指的32位地址指针
的段地址送入ES,偏移地址送入
DI.
13ADD加法指令ADD(Addition)
格式:
ADDOPRD1,OPRD2
功能:
两数相加
说明:
1.OPRD1为任一通用寄存器或存
储器操作数,可以是任意一个通
用寄存器,而且还可以是任意一
个存储器操作数.
OPRD2为立即数,也可以是任意一
个通用寄存器操作数.立即数只
能用于源操作数.
2.OPRD1和OPRD2均为寄存器是
允许的,一个为寄存器而另一个
为存储器也是允许的,但不允许
两个都是存储器操作数.
3.加法指令运算的结果对CF、
SF、OF、PF、ZF、AF都会有影
响.以上标志也称为结果标志.加
法指令适用于无符号数或有符号
数的加法运算.
14ADC带进位加法指令ADC(AdditionCarry)
格式:
ADCOPRD1,OPRD2
功能:
OPRD1<--OPRD1+OPRD2+CF
说明:
1.OPRD1为任一通用寄存器或存
储器操作数,可以是任意一个通
用寄存器,而且还可以是任意一
个存储器操作数.
OPRD2为立即数,也可以是任意一
个通用寄存器操作数.立即数只
能用于源操作数.
2.OPRD1和OPRD2均为寄存器是
允许的,一个为寄存器而另一个
为存储器也是允许的,但不允许
两个都是存储器操作数.
3.加法指令运算的结果对CF、
SF、OF、PF、ZF、AF都会有影
响.以上标志也称为结果标志.
4.该指令对标志位的影响同ADD
指令.
15INC加1指令INC(INCrementby1)
格式:
INCOPRD
功能:
OPRD<--OPRD+1
说明:
1.OPRD为寄存器或存储器操作
数.
2.这条指令执行结果影响AF、
OF、PF、SF、ZF标志位,但不影
响CF标志位.
星尘-易尘
页码,3/22
3.示例:
INCSI;(SI)<--(SI)+1
INCWORDPTR[BX]
INCBYTEPTR[BX+DI]
INCCL;(CL)<--(CL)+1
注意:
上述第二,三两条指令,是
对存储字及存储字节的内容加1
以替代原来的内容.
16AAA未组合的十进制加法调整指令AAA(ASCIIAdgust
forAddition)
格式:
AAA
功能:
对两个组合的十进制数相加运算(存在AL中)
的结果进行调整,产生一个未组合的十进制数放在
AX中.
说明:
1.组合的十进制数和未组合的
十进制数:
在计算中,十进制数可
用四位二进制数编码,称为BCD
码.
当一个节(8位)中存放一位BCD
码,且放在字节的低4位,高4位
为时称为未组合的BCD码.
2.AAA的调整操作
若(AL)and0FH>9或AF=1,则
调整如下:
(AL)<--(AL)+6,(AH)<--(AH)+1
AF=1,CF<--AF,(AL)<--(AL)
and0FH
17DAA组合的十进制加法调整指令DAA(DecimalAdjust
forAddition)
格式:
DAA
功能:
对AL中的两个组合进制数相加的结果进行调
整,调整结果仍放在AL中,进位标志放在CF中.
说明:
1.调整操作如下
(1)若(AL)and0FH>9或AF=1
则(AL)<--(AL)+6,AF<--1,对低
四位的调整.
(2)若(AL)and0F0H>90H或
CF=1,则(AL)<--(AL)+60H,CF<--
1.
2.示例:
(AL)=18H,(BL)=06H
ADDAL,BL;(AL)<--(AL)+
(BL);(AL)=1EH
DAA;(AL)
299SUB减法指令SUB(SUBtract)
格式:
SUBOPRD1,OPRD2
功能:
两个操作数的相减,即从OPRD1中减去OPRD2,
其结果放在OPDR1中.
说明:
示例SUBDX,CX
SUB[BX+25],AX
SUBDI,ALFA[SI]
SUBCL,20
SUBDATA1[DI][BX],20A5H
300SBB带借位减去指令SBB(SuBtractionwithBorrow)
格式:
SBBOPRD1,OPRD2
功能:
是进行两个操作数的相减再减去CF进位标志
位,即从OPRD1<--OPRD1-OPRD2-CF,其结果放在OPDR
1中.
说明:
示例SBBDX,CX
SBBAX,DATA1
SBBBX,2000H
SBBALFA[BX+SI],SI
SBBBETAP[DI,030AH
301DEC减一指令DEC(Decrementby1)
格式:
DECOPRD
功能:
OPRD<--OPRD-1
说明:
1.OPRD为寄存器或存储器操作
数.
2.这条指令执行结果影响AF、
OF、PF、SF、ZF标志位,但不影
响CF标志位.
星尘-易尘
页码,4/22
3.示例DECAX
DECCL
DECWORDPTR[DI]
DECALFA[DI+BX]
302NEG取补指令NEG(NEGate)
格式:
NEGOPRD
功能:
对操作数OPRD进行取补操作,然后将结果送
回OPRD.取补操作也叫作求补操作,就是求一个数的
相反数的补码.
说明:
1.OPRD为任意通用寄存器或存
储器操作数.
2.示例:
(AL)=44H,取补后,
(AL)=0BCH(-44H).
3.本指令影响标志位CF、OF、
SF、PF、ZF及AF.
303CMP比效指令CMP(CoMPare)
格式:
CMPOPRD1,OPRD2
功能:
对两数进行相减,进行比较.
说明:
1.OPRD1为任意通用寄存器或存
储器操作数.
OPRD2为任意通用寄存器或存储
器操作数,立即数也可用作源操
作数OPRD2.
2.对标志位的影响同SUB指令,
完成的操作与SUB指令类似,唯一
的区别是不将OPRD1-OPRD2的结
果送回OPRD1,而只是比较.
3.在8088/8086指令系统中,专
门提供了一组根据带符号数比较
大小后,实现条件转移的指令.
304AAS未组合十进制减法调整指令AAS(ASCIIAdjust
forSubtraction)
格式:
AAS
功能:
对两个未组合十进制数相减后存于AL中的结
果进行调整,调整后产生一个未组合的十进制数数
且仍存于AL中.
说明:
1.本指令影响标志位CF及AF.
2.调整操作
若(AL)and0FH>9或AF=1
则(AL)<--(AL)-6,(AH)<--(AH)-
1,CF<--AF,(AL)<--(AL)and0
FH,
否则(AL)<--(AL)and0FH
305DAS组合十进制减法调整指令DAS(DecimalAdjust
forSubtraction)
格式:
DAS
功能:
对两个组合十进制数相减后存于AL中的结果
进行调整,调整后产生一个组合的十进制数且仍存
于AL中.
说明:
调整操作
若(AL)and0FH>9或AF=1,
则(AL)<--(AL)-6,AF=1
若(AL)and0F0H>90H或CF=
1,则(AL)<--(AL)-60,CF=1
306MUL无符号数乘法指令MUL(MULtiply)
格式:
MULOPRD
功能:
乘法操作.
说明:
1.OPRD为通用寄存器或存储器
操作数.
2.OPRD为源操作数,即作乘数.
目的操作数是隐含的,即被乘数
总是指定为累加器AX或AL的内
容.
3.16位乘法时,AX中为被乘数.8
位乘法时,AL为被乘数.当16位乘
法时,32位的乘积存于DX及AX中;
星尘-易尘
页码,5/22
8位乘法的16位乘积存于AX中.
4.操作过程:
字节相乘:
(AX)<-
-(AL)*OPRD,当结果的高位字节
(AH)不等于0时,则CF=1、OF=1
.
307IMUL带符号数乘法指令IMUL(IntegerMULtiply)
格式:
IMULOPRD
功能:
完成两个带符号数的相乘
说明:
1.其中OPRD为任一通用寄存器
或存储器操作数.
2.MUL指令对带符号相乘时,不
能得到正确的结果.
例如:
(AL)=255
(CL)=255
MULCL
(AX)=65025
注意:
这对无符号数讲,结果是
正确的,但对带符号数讲,相当于
(-1)*(-1)结果应为+1,而65025
对应的带符号数为-511,显然是
不正确的.
308AAM未组合十进制数乘法调整指令AAM(ASCIIAdjust
MULtiply)
格式:
AAM
功能:
对两个未组合的十进制数相乘后存于AX中的
结果进行调整,产生一个未组合的十进制数存在AL
中.
说明:
1.实际上是两个未组合的十进
制数字节相乘,一个0~9的数与
另一个0~9的数相乘其积最大为
81.为了得到正确的结果,应进行
如下调整:
乘积:
(AH)<--(AL)/10
(AL)<--(AL)MOD10
2.本指令应跟在MUL指令后使
用,乘积的两位十进制结果,高位
放在AH中,低位放在AL中.AH内容
是MUL指令的结果被10除的商,即
(AL)/10,而最后的AL内容是乘积
被10整除的余数(即个位数).
309DIV无符号数除法指令DIV(DIVision)
格式:
DIVOPRD
功能:
实现两个无符号二进制数除法运算.
说明:
1.其中OPRD为任一个通用寄存
器或存储器操作数.
2.字节相除,被除数在AX中;字
相除,被除数在DX,AX中,除数在
OPRD中.
字节除法:
(AL)<--(AX)/OPRD,
(AH)<--(AX)MODOPRD
字除法:
(AX)<--(DX)
(AX)/OPRD,(DX)<--(DX)(AX)
MODOPRD
310IDIV带符号数除法指定IDIV(IntergerDIVision)
格式:
IDIVOPRD
功能:
这实现两个带符号数的二进制除法运算.
说明:
1.其中OPRD为任一通用寄存器
或存储器操作数.
2.理由与IMUL相同,只有IDIV指
令,才能得到符号数相除的正确
结果.
3.当被除数为8位,在进行字节
除法前,应把AL的符号位扩充至
星尘-易尘
页码,6/22
AH中.在16位除法时,若被除数为
16位,则应将AX中的符号位扩到
DX中.
311CBW字节扩展指令CBW(ConvertBytetoWord)
格式:
CBW
功能:
将字节扩展为字,即把AL寄存器的符号位扩
展到AH中.
说明:
1.两个字节相除时,先使用本指
令形成一个双字节长的被除数.
2.本指令不影响标志位.
3.示例:
MOVAL,25
CBW
IDIVBYTEPTRDATA1
312CWD字扩展指令CWD(ConvertWordtoDoubleWord)
格式:
CWD
功能:
将字扩展为双字长,即把AX寄存器的符号位
扩展到DX中.
说明:
1.两个字或字节相除时,先用本
指令形成一个双字长的的被除
数.
2.本指令不影响标志位.
3.示例:
在B1、B2、B3字节类
型变量中,分别存有8们带符号数
a、b、c,实现(a*b+c)/a运算。
313AAD未组合十进制数除法调整指令AAD(ASCIIAdjust
forDivision)
格式:
AAD
功能:
在除法指令前对AX中的两个未组合十进制数
进行调整,以便能用DIV指令实现两个未组合的十进
制数的除法运算,其结果为未组合的十进制数,商
(在AL中)和余数(在AH中).
说明:
1.AAD指令是在执行除法DIV之
前使用的,以便得到二进制结果
存于AL中,然后除以OPRD,得到的
商在AL中,余数在AH中.
2.示例:
MOVBL,5
MOVAX,0308H
AAD;(AL)<--1EH+08H=26H,(AH)
<--0
DIVBL;商=07H-->(AL),余数
=03H-->(AH).
314AND逻辑与运算指令AND
格式:
ANDOPRD1,OPRD2
功能:
对两个操作数实现按位逻辑与运算,结果送
至目的操作数.本指令可以进行字节或字的‘与’
运算,
OPRD1<--OPRD1andOPRD2.
说明:
1.目的操作数OPRD1为任一通用
寄存器或存储器操作数.源操作
数OPRD2为立即数,任一通用寄存
器或存储器操作数.
2.示例:
ANDAL,0FH;(AL)<--
(AL)AND0FH
ANDAX,BX;(AX)<--(AX)AND
(BX)
ANDDX,BUFFER[SI+BX]
ANDBETA[BX],00FFH
注意:
两数相与,有一个数假则
值为假
315OR逻辑或指令OR
格式:
OROPRD1,OPRD2
功能:
OR指令完成对两个操作数按位的‘或’运
算,结果送至目的操作数中,本指令可以进行字节或
字的‘或’运算.
OPRD1<--OPRD1OROPRD2.
说明:
1.其中OPRD1,OPRD2含义与AND
指令相同,对标志位的影响也与
AND指令相同.
2.两数相或,有一个数为真则值
为真.
316NOT逻辑非运算指令NOT
格式:
NOTOPRD
功能:
完成对操作数按位求反运算(即0变1,1变0),
说明:
1.其中OPRD可为任一通用寄存
器或存储器操作数.
星尘-易尘
页码,7/22
结果关回原操作数.2.本指梳令可以进行字或字节
‘非’运算.
3.本指令不影响标志位.
317XOR逻辑异或运算指令XOR
格式:
XOROPRD1,OPRD2
功能:
实现两个操作数按位‘异或’运算,结果送
至目的操作数中.
OPRD1<--OPRD1XOROPRD2
说明:
1.其在OPRD1、OPRD2的含义与
AND指令相同,对标志位的影响与
与AND指令相同.
2.相异为真,相同为假.
318TEST测试指令TEST
格式:
TESTOPRD1,OPRD2
功能:
其中OPRD1、OPRD2的含义同AND指令一样,也
是对两个操作数进行按位的'与'运算,唯一不同之
处是不将'与'的结
果送目的操作数,即本指令对两个操作数的内容均
不进行修改,仅是在逻辑与操作后,对标志位重新置
位.
说明:
TEST与AND指令的关系,有
点类似于CMP与SUB指令之间的关
系.
319SHL逻辑左移指令SHL(Shiftlogicalleft)
格式:
SHLOPRD1,COUNT
功能:
对给定的目的操作数左移COUNT次,每次移位
时最高位移入标志位CF中,最低位补零.
说明:
1.其中OPRD1为目的操作数,可
以是通用寄存器或存储器操作
数.
2.COUNT代表移位的次数(或位
数).移位一次,COUNT=1;移位多
于1次时,COUNT=(CL),(CL)中为
移位的次数.
3.例如:
SHLAL,1
SHLCX,1
SHLALFA[DI]或者:
MOVCL,3
SHLDX,CL
SHLALFA[DI],CL
320SHR逻辑右移指令SHR
格式:
SHROPRD1,COUNT
功能:
本指令实现由COUNT决定次数的逻辑右移操
作,每次移位时,最高位补0,最低位移至标志位CF
中.
说明:
1.其中OPRD1为目的操作数,可
以是通用寄存器或存储器操作
数.
2.COUNT代表移位的次数(或位
数).移位一次,COUNT=1;移位多
于1次时,COUNT=(CL),(CL)中为
移位的次数.
3.影响标志位OF,PF,SF,ZF,CF.
321SAL算术左移指令SAL(ShiftArithmeticLeft)
格式:
SALOPRD1,COUNT
功能:
其中OPRD1,COUNT与指令SHL相同.本指令与
SHL的功能也完全相同,这是因为逻辑左移指令与算
术左移指令所要完成的操作是一样的.
说明:
1.其中OPRD1为目的操作数,可
以是通用寄存器或存储器操作
数.
2.COUNT代表移位的次数(或位
数).移位一次,COUNT=1;移位多
于1次时,COUNT=(CL),(CL)中为
移位的次数.
322SAR算术右移指令SAR
格式:
SAROPRD1,COUNT
说明:
1.其中OPRD1为目的操作数,可
以是通用寄存器或存储器操作
星尘-易尘
页码,8/22
功能:
本指令通常用于对带
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 指令 大全