汇编指令表Word文档下载推荐.docx
- 文档编号:5785037
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:11
- 大小:21.14KB
汇编指令表Word文档下载推荐.docx
《汇编指令表Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编指令表Word文档下载推荐.docx(11页珍藏版)》请在冰点文库上搜索。
.IN输入指令
长格式为:
IN
AL,PORT(字节)
AX,PORT(字)
(AL)<
-(PORT)(字节)
(AX)<
-(PORT+1,PORT)(字)
短格式为:
AL,DX(字节)
AX,DX(字)
AL<
-((DX))(字节)
AX<
-((DX)+1,DX)(字)
.OUT输出指令
OUT
PORT,AL(字节)
PORT,AX(字)
(PORT)<
-(AL)(字节)
(PORT+1,PORT)<
-(AX)(字)
DX,AL(字节)
DX,AX(字)
((DX))<
((DX)+1,(DX))<
-AX(字)
在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>
=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息.
.XLAT
换码指令
XLAT
OPR
或:
XLAT
(AL)<
-((BX)+(AL))
3.有效地址送寄存器指令
LEA(Loadeffectiveaddress)有效地址送寄存器
LDS(LoadDSwithPointer)指针送寄存器和DS
LES(LoadESwithPointer)指针送寄存器和ES
.LEA有效地址送寄存器
LEA
REG,SRC
(REG)<
-SRC
指令把源操作数的有效地址送到指定的寄存器中.
.LDS指针送寄存器和DS指令
LDS
(DS)<
-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器.
.LES指针送寄存器和ES指令
LES
(REG)<
(ES)<
把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器.
4.标志寄存器传送指令
LAHF(LoadAHwithflags)标志送AH
SAHF(storeAHintoflags)AH送标志寄存器
PUSHF(pushtheflags)标志进栈
POPF(poptheflags)标志出栈
.LAHF标志送AH
LAHF
(AH)<
-(PWS的低字节)
.SAHFAH送标志寄存器
SAHF
(PWS的低字节)<
-(AH)
.PUSHF标志进栈
PUSHF
-(PSW)
.POPF标志出栈
POPF
(PWS)<
-((SP)+1,(SP))
-(SP+2)
二、算术指令
1.加法指令
ADD(add)加法
ADC(addwithcarry)带进位加法
INC(increment)加1
.ADD
加法指令
格式:
ADD
-(SRC)+(DST)
.ADC
带进位加法指令
ADC
-(SRC)+(DST)+CF
加1指令
INC
(OPR)<
-(OPR)+1
2.减法指令
SUB(subtract)减法
SBB(subtractwithborrow)带借位减法
DEC(Decrement)减1
NEG(Negate)求补
CMP(Compare)比较
.SUB
减法指令
SUB
-(DST)-(SRC)
.SBB
带借位减法指令
SBB
-(DST)-(SRC)-CF
.DEC
减1指令
DEC
-(OPR)-1
.NEG
求补指令
NEG
--(OPR)
.CMP
比较指令
CMP
(OPR1)-(OPR2)
该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半球.
3.乘法指令
MUL(UnsignedMultiple)无符号数乘法
IMUL(SignedMultiple)带符号数乘法
.MUL无符号数乘法指令
MUL
字节操作数:
(AX)<
-(AL)*(SRC)
字操作数:
(DX,AX)<
-(AX)*(SRC)
.IMUL带符号数乘法指令
IMUL
与MUL相同,但必须是带符号数,而MUL是无符号数.
4.除法指令
DIV(Unsigneddivide)无符号数除法
IDIV(Signeddivide)带符号数除法
CBW(Convertbytetoword)字节转换为字
CWD(Contertwordtodoubleword)字转换为双字
.DIV
无符号数除法指令
DIV
字节操作:
-(AX)/(SRC)的商
(AH)<
-(AX)/(SRC)的余数
字操作:
-(DX,AX)/(SRC)的商
-(DX,AX)/(SRC)的余数
.IDIV
带符号数除法指令
与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同.
.CBW字节转换为字指令
CBW
AL的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;
如(AL)的最高有效位为1,则(AH)=0FFH
.CWD字转换为双字指令
CWD
AX的内容符号扩展到DX.即如(AX)的最高有效位为0,则(DX)=0;
否则(DX)=0FFFFH.
这两条指令都不影响条件码.
三、逻辑指令
1.逻辑运算指令
AND(and)
逻辑与
OR(or)
逻辑或
NOT(not)
逻辑非
XOR(exclusiveor)异或
TEST(test)
测试
.AND
逻辑与指令
AND
-(DST)^(SRC)
.OR
逻辑或指令
OR
-(DST)V(SRC)
.NOT
逻辑非指令
NOT
-(OPR)
.XOR
异或指令
XOR
.TEST
测试指令
TEST
(DST)^(SRC)
两个操作数相与的结果不保存,只根据其特征置条件码
2.移位指令
SHL(shiftlogicalleft)
逻辑左移
SAL(shiftarithmeticleft)
算术左移
SHR(shiftlogicalright)
逻辑右移
SAR(shiftarithmeticright)
算术右移
ROL(Rotateleft)
循环左移
ROR(Rotateright)
循环右移
RCL(Rotateleftthroughcarry)
带进位循环左移
RCR(Rotaterightthroughcarry)带进位循环右移
SHL
OPR,CNT(其余的类似)
其中OPR可以是除立即数以外的任何寻址方式.移位次数由CNT决定,CNT可以是1或CL.
循环移位指令可以改变操作数中所有位的位置;
移位指令则常常用来做乘以2除以2操作.其中算术移位指令适用于带符号数运算,SAL用来乘2,SAR用来除以2;
而逻辑移位指令则用来无符号数运算,SHL用来乘2,SHR用来除以2.
四、串处理指令
1.与REP相配合工作的MOVS,STOS和LODS指令
.REP重复串操作直到(CX)=0为上
REP
stringprimitive
其中StringPrimitive可为MOVS,LODS或STOS指令
1)如(CX)=0则退出REP,否则往下执行.
2)(CX)<
-(CX)-1
3)执行其中的串操作
4)重复1)~3)
.MOVS
串传送指令
可有三种
MOVS
MOVSB(字节)
MOVSW(字)
其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:
ES:
BYTEPTR[DI],DS:
[SI]
1)((DI))<
-((SI))
2)字节操作:
(SI)<
-(SI)+(或-)1,(DI)<
-(DI)+(或-)1
当方向标志DF=0时用+,当方向标志DF=1时用-
3)字操作:
-(SI)+(或-)2,(DI)<
-(DI)+(或-)2
该指令不影响条件码.
.CLD(Cleardirectionflag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
.STD(Setdirectionflag)该指令使DF=1,在执行串操作指令时可使地址自动减量.
.STOS
存入串指令
STOS
STOSB(字节)
STOSW(字)
字节操作:
((DI))<
-(AL),(DI)<
-(DI)+-1
((DI))<
-(AX),(DI)<
-(DI)+-2
该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中.
.LODS
从串取指令
LODS
LODSB
LODSW
-((SI)),(SI)<
-(SI)+-1
-(SI)+-2
该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.
一般说来,该指令不和REP联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令.
2.与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令
.REPE/REPZ
当相等/为零时重复串操作
REPE(或REPZ)
StringPrimitive
其中StringPrimitive可为CMPS或SCAS指令.
1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行
3)执行其后的串指令
.REPNE/REPNZ
当不相等/不为零时重复串操作
REPNE(或REPNZ)
其中StringPrimitive可为CMPS或SCAS指令
除退出条件(CX=0)或ZF=1外,其他操作与REPE完全相同.
.CMPS
串比较指令
SRC,DST
CMPSB
CMPSW
1)((SI))-((DI))
(SI)<
-(SI)+-1,(DI)<
-(DI)+-1
-(SI)+-2,(DI)<
-(DI)+-2
指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同.
.SCAS
串扫描指令
SCAS
SCASB
SCASW
(AL)-((DI)),(DI)<
(AL)-((DI)),(DI)<
该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码.指令的其他特性和MOVS的规定相同.
五、控制转移指令
1.无条件转移指令
.JMP(jmp)
跳转指令
1)段内直接短转移
JMP
SHORTOPR
(IP)<
-(IP)+8位位移量
2)段内直接近转移
NEARPTROPR
-(IP)+16位位移量
3)段内间接转移
WORDPTROPR
-(EA)
4)段间直接(远)转移
FARPTROPR
-OPR的段内偏移地址
(CS)<
-OPR所在段的段地址
5)段间间接转移
DWORDPTROPR
-(EA+2)
2.条件转移指令
1)根据单个条件标志的设置情况转移
.JZ(或JE)(Jumpifzero,orequal)
结果为零(或相等)则转移
JE(或JZ)
测试条件:
ZF=1
.JNZ(或JNE)(Jumpifnotzero,ornotequal)结果不为零(或不相等)则转移
JNZ(或JNE)
ZF=0
.JS(Jumpifsign)
结果为负则转移
JS
SF=1
.JNS(Jumpifnotsign)
结果为正则转移
JNS
SF=0
.JO(Jumpifoverflow)
溢出则转移
JO
OF=1
.JNO(Jumpifnotoverflow)
不溢出则转移
JNOOPR
OF=0
.JP(或JPE)(Jumpifparity,orparityeven)奇偶位为1则转移
JP
PF=1
.JNP(或JPO)(Jumpifnotparity,orparityodd)奇偶位为0则转移
JNP(或JPO)
PF=0
.JB(或JNAE,JC)(Jumpifbelow,ornotaboveorequal,orcarry)低于,或者不高于或等于,或进位位为1则转移
JB(或JNAE,JC)
CF=1
.JNB(或JAE,JNC)(Jumpifnotbelow,oraboveorequal,ornotcarry)不低于,或者高于或者等于,或进位位为0则转移
JNB(或JAE,JNC)
CF=0
2)比较两个无符号数,并根据比较的结果转移
.JB(或JNAE,JC)
同上
.JNB(或JAE,JNC)
.JBE(或JNA)(Jumpifbeloworequal,ornotabove)低于或等于,或不高于则转移
JBE(或JNA)
CFVZF=1
.JNBE(或JA)(Jumpifnotbeloworequal,orabove)不低于或等于,或者高于则转移
JNBE(或JA)
CFVZF=0
3)比较两个带符号数,并根据比较的结果转移
.JL(或LNGE)(Jumpifless,ornotgreaterorequal)小于,或者不大于或者等于则转移
JL(或JNGE)
SFVOF=1
.JNL(或JGE)(Jumpifnotless,orgreaterorequal)不小于,或者大于或者等于则转移
JNL(或JGE)
SFVOF=0
.JLE(或JNG)(Jumpiflessorequal,ornotgreater)小于或等于,或者不大于则转移
JLE(或JNG)
(SFVOF)VZF=1
.JNLE(或JG)(Jumpifnotlessorequal,orgreater)不小于或等于,或者大于则转移
JNLE(或JG)
(SFVOF)VZF=0
4)测试CX的值为0则转移指令
.JCXZ(JumpifCXregisteriszero)
CX寄存器的内容为零则转移
JCXZ
(CX)=0
注:
条件转移全为8位短跳!
3.循环指令
.LOOP循环指令
LOOP
(CX)<
>
.LOOPZ/LOOPE当为零或相等时循环指令
LOOPZ(或LOOPE)
0且ZF=1
.LOOPNZ/LOOPNE当不为零或不相等时循环指令
LOOPNZ(或LOOPNE)
0且ZF=0
这三条指令的步骤是:
1)(CX)<
2)检查是否满足测试条件,如满足则(IP)<
-(IP)+D8的符号扩充.
4.子程序
.CALL调用指令
.RET返回指令
5.中断
.INT指令
INT
TYPE
或
INT
-(CS)
-(IP)
(IP)<
-(TYPE*4)
-(TYPE*4+2)
.INTO
若溢出则中断
若OF=1则:
-(10H)
-(12H)
.IRET
从中断返回指令
IRET
(PSW)<
六、处理机控制指令
1.标志处理指令
.CLC进位位置0指令(Clea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 指令