总汇编语言指令速查表

发布时间 : 星期一 文章总汇编语言指令速查表更新完毕开始阅读

实用文档

附 录

附录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。

(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+)是表示该指令只能用于80386及以后微处理器上。 指 令 AAA AAD AAM AAS 功 能 非压缩BCD加法调整,AH+进位 AH×10+AL?AL,之后AH清0 AL÷10的商?AH,余数?AL 非压缩BCD减法调整,AH-借位 AAA AAD AAM AAS ADC reg, reg ADC reg, mem ADC dst, src 带进位加法:dst+src+CF?dst ADC reg, imm ADC acc, imm ADC mem, reg ADC mem, imm ADD reg, reg ADD reg, mem ADD dst, src 加法:dst+src?dst ADD reg, imm ADD acc, imm ADD mem, reg ADD mem, imm 文案大全

指 令 形 式 周期数 影响标志位 3 10 18 3 1 2 1 1 3 3 1 2 1 1 3 3 O S Z A P C O S Z A P C ?S Z ? P C O S Z A P C O S Z A P C ? S Z ? P C 汇编语言程序设计 续表 指 令 功 能 指 令 形 式 AND reg, reg AND reg, mem AND reg, imm AND acc, imm AND mem, reg AND mem, imm ARPL reg/mem16, reg16 BOUND reg16, mem32 BOUND reg32, mem64 周期数 影响标志位 1 2 1 0 S Z ? P 0 1 3 3 7 - - Z - - - INT+32 6~35 6~43 6~35 6~43 1 4 4 9 4 7 7 13 8 7 7 13 8 7 7 13 8 1 2 2 4 5 3 2 2 2 7 10 2 4~9 ? ? Z ? ? ? ? ? Z ? ? ? AND dst, src 逻辑与:dst?src?dst ARPL dst, src BOUND reg, mem BSF reg, src BSR reg, src BSWAP reg32 调整选择器的RPL域 越界检查:(80188+) 若reg值超出mem,则产生INT 5 BSF reg, reg 从低到高扫描src,16/32位 (386+) 若src=0,ZF清0,否则置1,位置?reg BSF reg, mem BSR reg, reg 从高到低扫描src, 16/32位 (386+) 若src=0,ZF清0,否则置1,位置?reg BSR reg, mem 反转reg32字节顺序 (486+) BSWAP reg32 BT reg, reg BT reg, imm 位测试 (386+) BT mem, reg 由dst指定的位?CF (16/32位) BT mem, imm BTC reg, reg 位测试并变反 (386+) BTC reg, imm dst的指定位?CF, 然后该位变反, BTC mem, reg (16/32位) BTC mem, imm BTR reg, reg 位测试并清0 (386+) BTR reg, imm dst的指定位?CF, 然后该位清0, BTR mem, reg (16/32位) BTR mem, imm BTS reg, reg 位测试并置1 (386+) BTS reg, imm dst的指定位?CF, 然后该位置1, BTS mem, reg (16/32位) BTS mem, imm CALL label 子程序调用 CALL reg 近调用:返回的偏移地址进栈, CALL mem 然后转至dst处执行; 远调用:返回的段和偏移地址进栈, CALL label 然后转至dst处执行 CALL mem AL符号扩展成AX EAX符号扩展成EDX:EAX CF清0 DF清0 IF清0,即关中断 清除CR0中任务切换标志 (386+) CF取反,即?CF?CF 条件成立src?reg, 16/32位 (586+) cc: 参见Jcc指令。 CBW CDQ CLC CLD CLI CLTS CMC CMOVcc reg, reg CMOVcc reg, mem BT dst, src ? ? ? ? ? C BTC dst, src ? ? ? ? ? C BTR dst, src ? ? ? ? ? C BTS dst, src ? ? ? ? ? C CALL dst (near) (near) (near) (far) (far) CBW CDQ CLC CLD CLI CLTS CMC CMOVcc reg, src - - - - - 0 - - - - - C ·252·

附 录

续表 指 令 功 能 指 令 形 式 CMP reg, reg CMP reg, mem CMP reg, imm CMP acc, imm CMP mem, reg CMP mem, imm 周期数 影响标志位 1 2 1 O S Z A P C 1 2 2 5 O S Z A P C CMP dst, src 比较:dst-src,据此设置标志位 CMPSx 串比较:[(E)SI]-ES:[(E)DI], CMPSB 然后(E)SI, (E)DI增或减Δ(1/2/4) CMPSW x: B, W, D对应字节(1)?字(2)?双字(4)。CMPSD DF=0增,否则减 acc-dst, 等reg?dst,否则 dst?acc (486+) CMPXCHG reg/mem,reg CMPXCHG dst, reg CMPXCHG8B dst CPUID CWD CWDE DAA DAS DEC opr 5,6 10 14 2 3 3 3 1 3 O S Z A P C - - Z - - - ? S Z A P C ? S Z A P C O S Z A P - EDX:EAX-dst,等ECX:EBX?dst,否则CMPXCHG8B mem64 EDX:EAX?dst (486+) CPUID CPU标识?EAX,EBX,ECX,EDX AX符号扩展成DX:AX AX符号扩展成EAX 加法后的十进制调整AL 减法后的十进制调整AL opr自减1,即opr-1?opr CWD CWDE DAA DAS DEC reg DEC mem DIV src 无符号除法 DIV reg 8位:AX÷src,商?AL, 余数?AH 16位:DX:AX÷src,商?AX, 余数?DX DIV mem 32位:EDX:EAX÷src,商?EAX,余数?EDX 建m字节局部空间,n级的栈帧 (286+) 暂停CPU,直到I/O中断发生 ENTER imm16, imm8 HLT 17~41 ? ? ? ? ? ? ENTER m, n HLT 11+ IDIV src 有符号除 IDIV reg 8位:AX÷src,商?AL, 余数?AH 16位:DX:AX÷src,商?AX, 余数?DX IDIV mem 32位:EDX:EAX÷src,商?EAX,余数?EDX 有符号乘法 8位:AL×src?AX 16位:AX×src?DX:AX 32位:EAX×src?EDX:EAX 有符号乘法 reg×src?reg (286+) IMUL reg 22~46 ? ? ? ? ? ? IMUL src 10~11 O ? ? ? ? C IMUL mem IMUL reg, reg/mem IMUL reg, reg/mem,imm IN acc, imm8 IN acc, DX INC reg INC mem 10 10 7 7 1 3 O ? ? ? ? C O ? ? ? ? C O S Z A P - IMUL reg, src IMUL reg, src,imm 有符号乘法 src×imm?reg (286+) IN acc, src INC opr 端口数据?acc opr自加1,即opr+1?opr

·253·

汇编语言程序设计 续表 指 令 功 能 指 令 形 式 周期数 影响标志位 端口DX数据?ES:[(E)DI], INSB 然后(E)DI增或减Δ(1/2/4) INSW x: B,W, D对应字节(1)?字(2)?双字(4);若INSD DF=0增,否则减 FLAGS进栈,IF,TF置0,从[4n]双字单元取 INT 3 段和偏移地址,并转去执行 (实地址模式) INT imm8 若OF=1,则执行INT 4 使Cache无效 使TLB入口无效 中断返回:从堆栈弹出返回的偏移 和段地址,再弹出标志寄存器内容 条件满足,则转移至opr opr 高于(CF=0?ZF=0) 低于(CF=1) 低于等于(CF=1?ZF=1) 等于(ZF=1) 大于(ZF=0?SF=OF) 大于等于(SF=OF) 小于(SF≠OF) 小于等于(ZF=1?SF≠OF) 不等于(ZF=0) 无溢出(OF=0) 非负数(SF=0) 溢出(OF=1) 有偶数个1(PF=1) 有奇数个1(PF=0) 负数(SF=1) 若CX=0,则转移至opr 若ECX=0,则转移至opr 转移至opr 近:转移后仅可改变(E)IP 远:转移后可改变(E)IP和CS 标志寄存器低字节?AH 将dst指定的选择器访问权?reg 将mem内容?DS : reg 将mem的偏移地址?reg 将mem内容?ES : reg 将mem内容?FS : reg (386+) INTO INVD INVLPG IRET Jcc label JA/JNBE JB/JC/JNAE JBE/JNA JE/JZ JG/JNLE JGE/JNL JL/JNGE JLE/JNG JNE/JNZ JNO JNS JO JP/JPE JPO/JNP JS JCXZ label JECXZ label JMP label JMP reg JMP mem JMP label JMP mem LAHF LAR reg, reg/mem LDS reg, mem LEA reg, mem LES reg, mem LFS reg, mem (near) (near) (near) (far) (far) label label label label label label label label label label label label label label label 6/5 6/5 1 2 2 3 4 2 8 4 1 3 4 4 1 JAE/JNB/JNC label INSx 9 INT+5 INT+6 4,INT+5 15 29 7 INT n INTO INVD INVLPG IRET Jcc opr JA/JNBE JAE/JNB/JNC opr 高于等于(CF=0) JB/JC/JNAE opr JBE/JNA JE/JZ JG/JNLE JGE/JNL JL/JNGE JLE/JNG JNE/JNZ JNO JNS JO JP/JPE JPO/JNP JS JCXZ opr JECXZ opr opr opr opr opr opr opr opr opr opr opr opr opr opr JMP opr LAHF LAR reg, dst LDS reg, mem LEA reg, mem LEAVE LES reg, mem LFS reg, mem - - - - - - - - Z - - - 释放栈帧,即:(E)BP?(E)SP,POP (E)BP LEAVE ·254·

联系合同范文客服:xxxxx#qq.com(#替换为@)