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/
2、AX/EAX。(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)诸如(3
3、86+)是表示该指令只能用于80386及以后微处理器上。指 令功 能指 令 形 式周期数影响标志位AAA非压缩BCD加法调整,AH+进位AAA3?S Z ? P CAADAH10+AL AL,之后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+CF dstADC reg, reg1O S Z A P CADC reg, mem2ADC reg, imm1ADC acc, imm1ADC mem, reg3ADC me
4、m, imm3ADD dst, src加法:dst+src dstADD reg, reg1O S Z A P CADD reg, mem2ADD reg, imm1ADD acc, imm1ADD mem, reg3ADD mem, imm3续表指 令功 能指 令 形 式周期数影响标志位AND dst, src逻辑与:dst src dstAND reg, reg10 S Z ? P 0AND reg, mem2AND reg, imm1AND acc, imm1AND mem, reg3AND mem, imm3ARPL dst, src调整选择器的RPL域ARPL reg/mem16,
5、reg167- - Z - - -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, me
6、m643BSWAP reg32反转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, 然后
7、该位清0,(16/32位)BTR reg, 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
8、(near)2CALL label (far)4CALL mem (far)5CBWAL符号扩展成AXCBW3CDQEAX符号扩展成EDX:EAXCDQ2CLCCF清0CLC2- - - - - 0CLDDF清0CLD2CLIIF清0,即关中断CLI7CLTS清除CR0中任务切换标志 (386+)CLTS10CMCCF取反,即 CF CFCMC2- - - - - CCMOVcc reg, src条件成立src reg, 16/32位 (586+)cc: 参见Jcc指令。CMOVcc reg, reg49CMOVcc reg, mem续表指 令功 能指 令 形 式周期数影响标志位CMP dst
9、, src比较:dst-src,据此设置标志位CMP 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, 等reg dst,否则dst acc (486+)CMPXCHG reg/mem,reg5,6O S Z
10、 A P CCMPXCHG8B dstEDX:EAX-dst,等ECX:EBX dst,否则EDX:EAX dst (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-1 oprDEC reg1O S Z A P -DEC mem3DIV src无符号除法8位:AXsrc,商 AL, 余
11、数 AH16位:DX:AXsrc,商 AX, 余数 DX32位:EDX:EAXsrc,商 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位:ALsrc AX16位:AX
12、src DX:AX32位:EAXsrc EDX:EAXIMUL reg1011O ? ? ? ? CIMUL memIMUL reg, src有符号乘法 regsrc reg (286+)IMUL reg, reg/mem10O ? ? ? ? CIMUL reg, src,imm有符号乘法 srcimm reg (286+)IMUL reg, reg/mem,imm10O ? ? ? ? CIN acc, src端口数据 accIN acc, imm87IN acc, DX7INC opropr自加1,即opr+1 oprINC reg1O S Z A P -INC mem3续表指 令功 能
13、指 令 形 式周期数影响标志位INSx端口DX数据 ES:(E)DI,然后(E)DI增或减(1/2/4)x: 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条件满足,则转移至opr
14、Jcc label1JA/JNBE opr高于(CF=0 ZF=0)JA/JNBE labelJAE/JNB/JNC opr高于等于(CF=0)JAE/JNB/JNC labelJB/JC/JNAE opr低于(CF=1)JB/JC/JNAE labelJBE/JNA opr低于等于(CF=1 ZF=1)JBE/JNA labelJE/JZ opr等于(ZF=1)JE/JZ labelJG/JNLE opr大于(ZF=0 SF=OF)JG/JNLE labelJGE/JNL opr大于等于(SF=OF)JGE/JNL labelJL/JNGE opr小于(SFOF)JL/JNGE labelJ
15、LE/JNG opr小于等于(ZF=1 SFOF)JLE/JNG labelJNE/JNZ opr不等于(ZF=0)JNE/JNZ labelJNO opr无溢出(OF=0)JNO labelJNS opr非负数(SF=0)JNS labelJO opr溢出(OF=1)JO labelJP/JPE opr有偶数个1(PF=1)JP/JPE labelJPO/JNP opr有奇数个1(PF=0)JPO/JNP labelJS opr负数(SF=1)JS labelJCXZ opr若CX=0,则转移至oprJCXZ label6/5JECXZ opr若ECX=0,则转移至oprJECXZ labe
16、l6/5JMP opr转移至opr近:转移后仅可改变(E)IP 远:转移后可改变(E)IP和CSJMP label (near)1JMP reg (near)2JMP mem (near)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释放栈帧
17、,即:(E)BP (E)SP,POP (E)BPLEAVE3LES reg, mem将mem内容 ES : regLES reg, mem4LFS reg, mem将mem内容 FS : reg (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 srcsrc LDTR (286+)LLDT reg/mem8LMSW sr
18、csrc 机器状态字(CR0低16位) (286+)LMSW reg/mem8LOCK 总线锁 (以便其他处理器处理指令)LOCK1LODSx从串取:(E)SI acc, 然后(E)SI增或减(1/2/4)x: 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则转移L
19、OOPNE/LOOPNZ label7/8LSL reg, srcsrc选择器确定的段界 reg (286+)LSL reg, reg/mem8- - Z - - -LSS reg, mem将mem内容 SS : reg (386+)LSS reg, mem4LTR srcsrc 任务寄存器TR (286+)LTR reg16/mem1610MOV dst, src数据传送:src dstMOV reg, reg1MOV reg, mem1MOV reg, imm1MOV mem, reg1MOV mem, imm1MOV acc, mem1MOV mem, acc1MOV dst, src控
20、制寄存器内容传送 (386+)CRi reg32, reg32 CRi (i=0,2,3,4)MOV reg32, CRi4MOV CRi, reg321222MOV dst, src调试寄存器内容传送 (386+)DRi reg32, reg32 DRi (i=07)MOV reg32, DRi212MOV DRi, reg321112MOV dst, src段寄存器内容传送seg dst, src seg(CS除外)MOV reg/mem, seg1MOV seg, reg/mem212MOVSx串传送: (E)SI ES:(E)DI, 然后(E)SI(E)DI增或减(1/2/4)x: B
21、, W, D对应字节(1)字(2)双字(4);若DF=0增,否则减MOVSB4MOVSWMOVSDMOVSX reg, srcsrc经符号扩展后 reg (386+)MOVSX reg, reg/mem3MOVZX reg, srcsrc经0扩展后 reg (386+)MOVZX reg, reg/mem3MUL src无符号乘法8位:ALsrc AX16位:AXsrc DX:AX32位:EAXsrc EDX:EAXMUL reg1011O ? ? ? ? CMUL memNEG opropr求补(负),即-opr oprNEG reg1O S Z A P CNEG mem3NOP空操作NOP
22、1续表指 令功 能指 令 形 式周期数影响标志位NOT opropr按位取反,即: opr oprNOT reg1O S Z A P CNOT mem3OR dst, src逻辑或,dst src dstOR reg, reg10 S Z ? P 0OR 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)双
23、字(4);若DF=0增,否则减OUTSB13OUTSWOUTSDPOP dst从堆栈弹出数据 dst(E)SP增2或4, seg不能为CS)POP reg1POP mem3POP seg312POPA数据出栈 DI, SI, BP, BX, DX, CX, AX(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
24、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+)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位
25、 注: n为imm8是386+支持RCL reg, 11O - - - - CRCL mem, 13RCL reg, CL724RCL mem, CL926RCL reg, imm8825RCL mem, imm81027RCR dst, ndst带进位循环右移n位 注: n为imm8是386+支持RCR reg, 11O - - - - CRCR mem, 13RCR reg, CL724RCR mem, CL926RCR reg, imm8825RCR mem, imm81027续表指 令功 能指 令 形 式周期数影响标志位RDMSRMSRECX EDX:EAX (586+)RDMSR20
26、24RDTSC自启动以来CPU执行的时钟周期数 EDX:EAX (586+)28REP 串指令当(E)CX0重复(E)CX自减1,再执行其后的串指令REP INSx11+3nREP LODSx7+3nREP MOVSx6,13nREP OUTSx13+4nREP STOSx6,9+3nREPE/REPZ串指令当(E)CX0 ZF=1重复(E)CX自减1,再执行其后的串指令REPE/REPZ CMPSx7,8+4nO S Z A P CREPE/REPZ SCASx7,8+4nREPNE/REPNZ串指令当(E)CX0 ZF=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 imm163RETF imm164ROL dst, ndst循环左移n位 注:n为imm8是386+支持R
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1