汇编语言指令速查表_第1页
汇编语言指令速查表_第2页
汇编语言指令速查表_第3页
汇编语言指令速查表_第4页
汇编语言指令速查表_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附 录附 录附录A 常用80x86指令速查表指令按助记符字母顺序排列,缩写、符号约定如下:(1) 指令中,dst, src表示目的操作数和源操作数。仅一个操作数时,个别处也表示为opr。(2)imm表示立即数,8/16/32位立即数记作:imm8/imm16/imm32。(3)reg表示通用寄存器,8/16/32位通用寄存器记作:reg8/reg16/reg32。(4)mem表示内存操作数,8/16/32等内存操作数记作:mem8/mem16/mem32等。(5)seg表示段寄存器,CS, DS, SS, ES, FS, GS。(6)acc表示累加器,8/16/32累加器对应AL/AX/EAX

2、。(7)OF, SF, ZF, AF, PF, CF分别表示为O, S, Z, A, P, C,相应位置为:字母,根据结果状态设置;?,状态不确定;-,状态不变;1,置1;0,清0;例如:0 S Z ? P -表示:OF清0,AF不确定,CF不变,其它根据结果设置。若该栏空白,则表示无关。(8)寄存器符号诸如(E)CX, (E)SI, (E)DI, (E)SP, (E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。(9)周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:周期数/主频(秒)。(10)诸如(386+)是表

3、示该指令只能用于80386及以后微处理器上。指 令功 能指 令 形 式周期数影响标志位AAA非压缩BCD加法调整,AH+进位AAA3?S Z ? P CAADAH10+ALAL,之后AH清0AAD10O S Z A P CAAMAL10的商AH,余数ALAAM18O S Z A P CAAS非压缩BCD减法调整,AH-借位AAS3? S Z ? P CADC dst, src带进位加法:dst+src+CFdstADC reg, reg1O S Z A P CADC reg, mem2ADC reg, imm1ADC acc, imm1ADC mem, reg3ADC mem, imm3ADD

4、 dst, src加法:dst+srcdstADD reg, reg1O S Z A P CADD reg, mem2ADD reg, imm1ADD acc, imm1ADD mem, reg3ADD mem, imm3续表指 令功 能指 令 形 式周期数影响标志位AND dst, src逻辑与:dstsrcdstAND reg, reg10 S Z ? P 0AND reg, mem2AND reg, imm1AND acc, imm1AND mem, reg3AND mem, imm3ARPL dst, src调整选择器的RPL域ARPL reg/mem16, reg167- - Z -

5、 - -BOUND reg, mem越界检查:(80188+)若reg值超出mem,则产生INT 5BOUND reg16, mem32INT+32BOUND reg32, mem64BSF reg, src从低到高扫描src,16/32位 (386+)若src=0,ZF清0,否则置1,位置regBSF reg, reg635? ? Z ? ? ?BSF reg, mem643BSR reg, src从高到低扫描src, 16/32位 (386+)若src=0,ZF清0,否则置1,位置regBSR reg, reg635? ? Z ? ? ?BSR reg, mem643BSWAP reg32

6、反转reg32字节顺序 (486+)BSWAP reg321BT dst, src位测试 (386+)由dst指定的位CF (16/32位)BT reg, reg4? ? ? ? ? CBT reg, imm4BT mem, reg9BT mem, imm4BTC dst, src位测试并变反 (386+)dst的指定位CF, 然后该位变反,(16/32位)BTC reg, reg7? ? ? ? ? CBTC reg, imm7BTC mem, reg13BTC mem, imm8BTR dst, src位测试并清0 (386+)dst的指定位CF, 然后该位清0,(16/32位)BTR r

7、eg, reg7? ? ? ? ? CBTR reg, imm7BTR mem, reg13BTR mem, imm8BTS dst, src位测试并置1 (386+)dst的指定位CF, 然后该位置1,(16/32位)BTS reg, reg7? ? ? ? ? CBTS reg, imm7BTS mem, reg13BTS mem, imm8CALL dst子程序调用近调用:返回的偏移地址进栈,然后转至dst处执行;远调用:返回的段和偏移地址进栈,然后转至dst处执行CALL label(near)1CALL reg(near)2CALL mem(near)2CALL label(far)

8、4CALL mem(far)5CBWAL符号扩展成AXCBW3CDQEAX符号扩展成EDX:EAXCDQ2CLCCF清0CLC2- - - - - 0CLDDF清0CLD2CLIIF清0,即关中断CLI7CLTS清除CR0中任务切换标志 (386+)CLTS10CMCCF取反,即CFCFCMC2- - - - - CCMOVcc reg, src条件成立srcreg, 16/32位 (586+)cc: 参见Jcc指令。CMOVcc reg, reg49CMOVcc reg, mem续表指 令功 能指 令 形 式周期数影响标志位CMP dst, src比较:dst-src,据此设置标志位CMP

9、reg, reg1O S Z A P CCMP reg, mem2CMP reg, imm1CMP acc, imm1CMP mem, reg2CMP mem, imm2CMPSx串比较:(E)SI-ES:(E)DI,然后(E)SI, (E)DI增或减(1/2/4)x: B, W, D对应字节(1)字(2)双字(4)。DF=0增,否则减CMPSB5O S Z A P CCMPSWCMPSDCMPXCHG dst, regacc-dst, 等regdst,否则dstacc (486+)CMPXCHG reg/mem,reg5,6O S Z A P CCMPXCHG8B dstEDX:EAX-ds

10、t,等ECX:EBXdst,否则EDX:EAXdst (486+)CMPXCHG8B mem6410- - Z - - -CPUIDCPU标识EAX,EBX,ECX,EDXCPUID14CWDAX符号扩展成DX:AXCWD2CWDEAX符号扩展成EAXCWDE3DAA加法后的十进制调整ALDAA3? S Z A P CDAS减法后的十进制调整ALDAS3? S Z A P CDEC opropr自减1,即opr-1oprDEC reg1O S Z A P -DEC mem3DIV src无符号除法8位:AXsrc,商AL, 余数AH16位:DX:AXsrc,商AX, 余数DX32位:EDX:E

11、AXsrc,商EAX,余数EDXDIV reg1741? ? ? ? ? ?DIV memENTER m, n建m字节局部空间,n级的栈帧 (286+)ENTER imm16, imm811+HLT暂停CPU,直到I/O中断发生HLTIDIV src有符号除8位:AXsrc,商AL, 余数AH16位:DX:AXsrc,商AX, 余数DX32位:EDX:EAXsrc,商EAX,余数EDXIDIV reg2246? ? ? ? ? ?IDIV memIMUL src有符号乘法8位:ALsrcAX16位:AXsrcDX:AX32位:EAXsrcEDX:EAXIMUL reg1011O ? ? ? ?

12、 CIMUL memIMUL reg, src有符号乘法 regsrcreg (286+)IMUL reg, reg/mem10O ? ? ? ? CIMUL reg, src,imm有符号乘法 srcimmreg (286+)IMUL reg, reg/mem,imm10O ? ? ? ? CIN acc, src端口数据accIN acc, imm87IN acc, DX7INC opropr自加1,即opr+1oprINC reg1O S Z A P -INC mem3续表指 令功 能指 令 形 式周期数影响标志位INSx端口DX数据ES:(E)DI,然后(E)DI增或减(1/2/4)x

13、: B,W, D对应字节(1)字(2)双字(4);若DF=0增,否则减INSB9INSWINSDINT nFLAGS进栈,IF,TF置0,从4n双字单元取段和偏移地址,并转去执行 (实地址模式)INT 3INT+5INT imm8INT+6INTO若OF=1,则执行INT 4INTO4,INT+5INVD使Cache无效INVD15INVLPG使TLB入口无效INVLPG29IRET中断返回:从堆栈弹出返回的偏移和段地址,再弹出标志寄存器内容IRET7Jcc opr条件满足,则转移至oprJcc label1JA/JNBEopr高于(CF=0ZF=0)JA/JNBElabelJAE/JNB/J

14、NCopr高于等于(CF=0)JAE/JNB/JNClabelJB/JC/JNAEopr低于(CF=1)JB/JC/JNAElabelJBE/JNAopr低于等于(CF=1ZF=1)JBE/JNAlabelJE/JZopr等于(ZF=1)JE/JZlabelJG/JNLEopr大于(ZF=0SF=OF)JG/JNLElabelJGE/JNLopr大于等于(SF=OF)JGE/JNLlabelJL/JNGEopr小于(SFOF)JL/JNGElabelJLE/JNGopr小于等于(ZF=1SFOF)JLE/JNGlabelJNE/JNZ opr不等于(ZF=0)JNE/JNZ labelJNOo

15、pr无溢出(OF=0)JNOlabelJNSopr非负数(SF=0)JNSlabelJOopr溢出(OF=1)JOlabelJP/JPEopr有偶数个1(PF=1)JP/JPElabelJPO/JNPopr有奇数个1(PF=0)JPO/JNPlabelJSopr负数(SF=1)JSlabelJCXZ opr若CX=0,则转移至oprJCXZ label6/5JECXZ opr若ECX=0,则转移至oprJECXZ label6/5JMP opr转移至opr近:转移后仅可改变(E)IP 远:转移后可改变(E)IP和CSJMP label(near)1JMP reg(near)2JMP mem(n

16、ear)2JMP label(far)3JMP mem(far)4LAHF标志寄存器低字节AHLAHF2- - - - - -LAR reg, dst将dst指定的选择器访问权regLAR reg, reg/mem8- - Z - - -LDS reg, mem将mem内容DS : regLDS reg, mem4LEA reg, mem将mem的偏移地址regLEA reg, mem1LEAVE释放栈帧,即:(E)BP(E)SP,POP (E)BPLEAVE3LES reg, mem将mem内容ES : regLES reg, mem4LFS reg, mem将mem内容FS : reg (

17、386+)LFS reg, mem4续表指 令功 能指 令 形 式周期数影响标志位LGDT mem将mem内容GDTR (286+)LGDT mem6LGS reg, mem将mem内容GS : reg (386+)LGS reg, mem4LIDT mem将mem内容IDTR (286+)LIDT mem6LLDT srcsrcLDTR (286+)LLDT reg/mem8LMSW srcsrc机器状态字(CR0低16位) (286+)LMSW reg/mem8LOCK 总线锁 (以便其他处理器处理指令)LOCK1LODSx从串取:(E)SIacc, 然后(E)SI增或减(1/2/4)x:

18、 B, W, D对应字节(1)字(2)双字(4);若DF=0增,否则减LODSB2LODSWLODSDLOOP opr(E)CX自减1, 若(E)CX0则转移LOOP label5/6LOOPE/LOOPZ opr(E)CX自减1, 若ZF=1(E)CX0则转移LOOPE/LOOPZ label7/8LOOPNE/LOOPNZ opr(E)CX自减1, 若ZF=0(E)CX0则转移LOOPNE/LOOPNZ label7/8LSL reg, srcsrc选择器确定的段界reg (286+)LSL reg, reg/mem8- - Z - - -LSS reg, mem将mem内容SS : re

19、g (386+)LSS reg, mem4LTR srcsrc任务寄存器TR (286+)LTR reg16/mem1610MOV dst, src数据传送:srcdstMOV reg, reg1MOV reg, mem1MOV reg, imm1MOV mem, reg1MOV mem, imm1MOV acc, mem1MOV mem, acc1MOV dst, src控制寄存器内容传送 (386+)CRireg32, reg32CRi (i=0,2,3,4)MOV reg32, CRi4MOV CRi, reg321222MOV dst, src调试寄存器内容传送 (386+)DRire

20、g32, reg32DRi (i=07)MOV reg32, DRi212MOV DRi, reg321112MOV dst, src段寄存器内容传送segdst, srcseg(CS除外)MOV reg/mem, seg1MOV seg, reg/mem212MOVSx串传送: (E)SIES:(E)DI, 然后(E)SI(E)DI增或减(1/2/4)x: B, W, D对应字节(1)字(2)双字(4);若DF=0增,否则减MOVSB4MOVSWMOVSDMOVSX reg, srcsrc经符号扩展后reg (386+)MOVSX reg, reg/mem3MOVZX reg, srcsrc

21、经0扩展后reg (386+)MOVZX reg, reg/mem3MUL src无符号乘法8位:ALsrcAX16位:AXsrcDX:AX32位:EAXsrcEDX:EAXMUL reg1011O ? ? ? ? CMUL memNEG opropr求补(负),即-oproprNEG reg1O S Z A P CNEG mem3NOP空操作NOP1续表指 令功 能指 令 形 式周期数影响标志位NOT opropr按位取反,即:oproprNOT reg1O S Z A P CNOT mem3OR dst, src逻辑或,dstsrcdstOR reg, reg10 S Z ? P 0OR

22、reg, mem2OR reg, imm1OR mem, reg3OR mem, imm3OR acc, imm1OUT dst, accacc内容端口dstOUT imm8, acc12OUT DX, acc12OUTSx(E)SI内容DX端口, (386+)然后(E)SI增或减(1/2/4)x: B, W, D对应字节(1)字(2)双字(4);若DF=0增,否则减OUTSB13OUTSWOUTSDPOP dst从堆栈弹出数据dst(E)SP增2或4, seg不能为CS)POP reg1POP mem3POP seg312POPA数据出栈DI, SI, BP, BX, DX, CX, AX(

23、SP增28) (286+)POPA5POPAD堆栈弹出数据EDI,ESI,EBP,EBX,EDX,ECX,EAX (E)SP增48) (386+)POPAD5POPF数据出栈FLAGS (E)SP增2) (286+)POPF4O S Z A P CPOPFD数据出栈EFLAGS (E)SP增4) (386+)POPFD4O S Z A P CPUSH srcsrc数据进栈 (E)SP减2/4)(reg32,mem32,imm, 386+)PUSH reg1PUSH mem2PUSH imm1PUSH seg1PUSHAAX,CX,DX,BX,SP,BP,SI,DI进栈,(SP减28) (286

24、+)PUSHA5PUSHADEAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI进栈, (E)SP减48) (386+)PUSHAD5PUSHFFLAGS进栈 (E)SP减2) (286+)PUSHF3PUSHFDEFLAGS进栈 (E)SP减4) (386+)PUSHFD3RCL dst, ndst带进位循环左移n位 dstCF注: n为imm8是386+支持RCL reg, 11O - - - - CRCL mem, 13RCL reg, CL724RCL mem, CL926RCL reg, imm8825RCL mem, imm81027RCR dst, ndst带进位循环右

25、移n位 dstCF注: n为imm8是386+支持RCR reg, 11O - - - - CRCR mem, 13RCR reg, CL724RCR mem, CL926RCR reg, imm8825RCR mem, imm81027续表指 令功 能指 令 形 式周期数影响标志位RDMSRMSRECXEDX:EAX (586+)RDMSR2024RDTSC自启动以来CPU执行的时钟周期数EDX:EAX (586+)28REP 串指令当(E)CX0重复(E)CX自减1,再执行其后的串指令REP INSx11+3nREP LODSx7+3nREP MOVSx6,13nREP OUTSx13+4

26、nREP STOSx6,9+3nREPE/REPZ串指令当(E)CX0ZF=1重复(E)CX自减1,再执行其后的串指令REPE/REPZ CMPSx7,8+4nO S Z A P CREPE/REPZ SCASx7,8+4nREPNE/REPNZ串指令当(E)CX0ZF=0重复(E)CX自减1,再执行其后的串指令REPNE/REPNZ CMPSx7,8+4nO S Z A P CREPNE/REPNZ SCASx7,8+4nRET n子程序返回:从堆栈弹出返回地址,若有n则返回后(E)SP再增n。近返回RETN:只弹出偏移地址;远返回RETF:弹出偏移和段地址;RETN2RETF4RETN i

27、mm163RETF imm164ROL dst, ndst循环左移n位 dstCF 注:n为imm8是386+支持ROL reg, 11O - - - - CROL mem, 13ROL reg, CL4ROL mem, CL4ROL reg, imm81ROL mem, imm83ROR dst, ndst循环右移n位 dstCF 注:n为imm8是386+支持ROR reg, 11O - - - - CROR mem, 13ROR reg, CL4ROR mem, CL4ROR reg, imm81ROR mem, imm83RSM从系统管理方式恢复RSMO S Z A P CSAHFAH

28、标志寄存器的低8位SAHF1- S Z A P CSAL dst, ndst算术左移n位,即dst2ndst dstCF0注:n为imm8时,386+支持SAL reg, 11O - - - - CSAL mem, 13SAL reg, CL4SAL mem, CL4SAL reg, imm81SAL mem, imm83SAR dst, ndst算术右移n位,即dst2ndst dstCF注:n为imm8是386+支持SAR reg, 11O - - - - CSAR mem, 13SAR reg, CL4SAR mem, CL4SAR reg, imm81SAR mem, imm83续表指

29、 令功 能指 令 形 式周期数影响标志位SBB dst, src带借位减法:dst-src-CFdstSBB reg, reg1O S Z A P CSBB reg, mem2SBB reg, imm1SBB acc, imm1SBB mem, reg3SBB mem, imm3SCASx串扫描:acc-ES:(E)DI,然后(E)DI增或减(1/2/4)x: B, W, D对应字节(1)字(2)双字(4);若DF=0增,否则减SCASB4O S Z A P CSCASWSCASDSETcc dst条件真,1dst,否则0dst, cc见Jcc (386+)SETcc reg8/mem838S

30、GDT memGDTRmem (286+)SGDT mem4SHL dst, ndst逻辑左移n位,与SAL相同SHL/SAL是一条指令SHLD dst, reg, n双精度左移 (操作数:16/32位)(386+) dstCFregSHLD reg/mem, reg, imm84? S Z ? P CSHLD reg/mem, reg, CLSHR dst, ndst逻辑右移n位 dstCF0注:n为imm8时,386+支持SAR reg, 11O - - - - CSAR mem, 13SAR reg, CL4SAR mem, CL4SAR reg, imm81SAR mem, imm83

31、SHRD dst, reg, n双精度右移 (操作数:16/32位)(386+)SHLD reg/mem, reg, imm84? S Z ? P C dstCFregSHLD reg/mem, reg, CLSIDT memIDTRmemSIDT mem4SLDT dstLDTRdstSLDT reg/mem2SMSW dst机器状态字(CR0低16位)dst (286+)SMSW reg/mem4STCCF置1STC2- - - - - 1STDDF置1STD2STIIF置1,即开中断STI7STOSx串存入:accES:(E)DI,然后(E)DI增或减(1/2/4)x: B, W, D对

32、应字节(1)字(2)双字(4);若DF=0增,否则减STOSB3STOSWSTOSDSTR dst任务寄存器TRdstSTR reg/mem162SUB dst, src减法:dst-srcdstSUB reg, reg1O S Z A P CSUB reg, mem2SUB reg, imm1SUB acc, imm1SUB mem, reg3SUB mem, imm3续表指 令功 能指 令 形 式周期数影响标志位TEST dst, src与测试,dstsrc据此设置标志位TEST reg, reg20 S Z ? P 0TEST reg, mem1TEST reg, imm1TEST ac

33、c, imm1TEST mem, imm2VERR src若src确定的段可读,1ZF,否则0ZFVERR reg/mem167- - Z - - -VERW src若src确定的段可写,1ZF,否则0ZFVERW reg/mem167- - Z - - -WAIT等待,检查挂起未屏蔽的浮点异常WAIT1WBINVD写回Cache,并使之无效 (486+)WBINVD2000+WRMSREDX:EAXMSRECX (586+)WRMSR3035XADD dst, srcdstsrc,再dst+srcdst (486+)XADD reg/mem, reg3,4O S Z A P CXCHG ds

34、t, srcdst, src内容交换,即dstsrcXCHG reg/mem, reg3XCHG acc, reg2XLAT/XLATB查表换码:(E)BX+AL确定的单元值ALXLAT4XOR dst, src逻辑异或,dstsrcdstXOR reg, reg10 S Z ? P 0XOR reg, mem2XOR reg, imm1XOR acc, imm1XOR mem, reg3XOR mem, imm3附录B 编程练习环境说明1. 编程练习软件包附带软件包x86ASM是在Microsoft的MASM6.15软件包的基础上,加入CodeView、Win32的开发工具及Turbo C

35、2.0等,进行简单整理而成的,以便初学者编程练习使用。软件包中的基本文件有:MASM.EXE汇编程序LINK.EXE连接程序ML.EXE汇编连接程序(自动调用LINK.EXE)ML.ERR汇编错误信息文件LIB.EXE子程序库管理程序LIB16.EXE16位子程序管理程序LINK16.EXE生成DOS程序的连接程序LIB32.EXEWin32的库管理程序LINK32.EXE生成Win32程序的连接程序CV目录CodeView调试程序CV.EXE及相应的环境INC32目录Win32的API的函数库声明文件LIB32目录Win32的API的函数库TC目录Turbo C 2.0命令行环境和集成环境S

36、ET2ML16.BATML默认使用LINK16.EXE连接程序SET2ML32.BATML默认使用LINK32.EXE连接程序使用这个软件包既可以用来练习编写DOS环境下的应用程序,也可以用来练习编写Win32环境下的应用程序。提供TC的目的是用它来练习16位环境下汇编语言程序模块和C程序模块的连接。2.DOS系统下的编程练习环境真正的DOS是运行在实模式下的一个操作系统,所以DOS程序是运行在16位地址模式下的。这种模式下的程序具有这样的特点:(1) 偏移地址是16位,所表示的偏移地址只能是064K-1。在默认情况下,指令处理的数据类型是16位的,但也可以处理32位数据。(2) 应用程序可以

37、访问所有的计算机系统资源,可以使用I/O指令直接与外设交换数据,也可以用INT指令调用DOS环境下的系统功能(DOS和BIOS)。在DOS系统下有很多系统功能调用可用,但是这里仅将DOS环境作为编程练习的平台,所以只须如下所述的很少几个系统功能就足够了,主要解决字符的输入、输出,以及应用程序退出返回。如果读者需要开发DOS系统下的应用程序,则必须另外参阅相关的系统资料手册。1) 编程练习所用的DOS系统调用(1) 功能01h。从标准输入设备输入一个字符,并回显。入口:AH01h出口:AL输入字符的ASCII码(2) 功能02h。向标准输出设备输出一个字符。入口:AH02hDL待输出字符的ASCII码出口:无(3) 功能08h。从标准输入设备输入一个字符,无回显。入口:AH08h出口:AL输入字符的ASCII码(4) 功能09h。输出一个字符串到标准输出设备上。入口:AH09hDS:DX待输出字符串的地址(字符串须以$作为其结束标志)出口:无 (5) 功能0Ah。从标准输入设备上读入字符串(以回车结束,有回显)。入口:AH0AhDS:DX输入缓冲区地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论