当前位置:首页 >> IT/计算机 >>

汇编指令


80x86汇编指令表 第一页 助记 含义 格式 符 MOV 移动 MOV D,S 带符号扩 MOVSX MOVSX D,S 展的移动 带零扩展 MOVZX MOVZX D,S 的移动 XCHG 交换 XCHG D,S XLAT SourceXLAT 转换 table XLATB 转换 XLATB 存入有效 LEA Reg16,EALEA LEA 地址 Reg32,EA 存入寄存 LDS Reg16,EALDS LDS Reg32,EA 器和DS 存入寄存 LSS Reg16,EALSS LSS Reg32,EA 器和SS 存入寄存 LES Reg16,EALES LES 器和ES Reg32,EA 存入寄存 LFS Reg16,EALFS LFS 器和FS Reg32,EA 存入寄存 LGS Reg16,EALGS LGS 器和GS Reg32,EA ADD 加 ADD D,S ADC 带进位加 INC DAA AAA SUB SBB DEC NEG DAS AAS 增1 加法的十 进制调整 加法的 ASCII码 调整 减 带借位减 减1 取负 减法的十 进制调整 减法的 ASCII码 调整 乘(不带 符号) ADC D,S INC D DAA AAA SUB D,S SBB D,S DEC D NEG D DAS AAS

操作 (S)→(D) (S)→(D) D的MSB被S的符号 位填充 (S)→(D) D的MSB被0填充 (D)←(S) ((AL)+(BX)+(DS)0)→(AL)

影响的标志 无 无 无 无 无

((AL)+(BX)+(DS)0)→(AL) 无 (EA)→(Reg16)(EA)→ 无 (Reg32) (EA)→(Reg16)(EA+2)→(DS) 无 (EA)→(Reg32)(EA+4)→(DS) (EA)→(Reg16)(EA+2)→(SS) 无 (EA)→(Reg32)(EA+4)→(SS) (EA)→(Reg16)(EA+2)→(ES) 无 (EA)→(Reg32)(EA+4)→(ES) (EA)→(Reg16)(EA+2)→(FS) 无 (EA)→(Reg32)(EA+4)→(FS) (EA)→(Reg16)(EA+2)→(GS) 无 (EA)→(Reg32)(EA+4)→(GS) (S)+(D)→(D) 进位→(CF) OF,SF,ZF,AF,PF,CF (S)+(D)+(CF) →(D) 进位→ OF,SF,ZF,AF,PF,CF (CF) (D)+1(D) OF,SF,ZF,AF,PF SF,ZF,AF,PF,CF;OF未 定义 AF,CF; OF,SF,ZF,PF 未定义 (D)-(S)→(D) 借位→(CF) (D)-(S)-(CF)→(D) (D)-1→(D) 0-(D)→(D) 1→(D) OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF OF,SF,ZF,AF,PF,CF SF,ZF,AF,PF,CF; OF 未定义 AF,CF; OF,SF,ZF,PF 未定义 (AL)?(S8)→(AX)(AX)? OF,CF;SF,ZF,AF,PF未 (S16)→(DX)?(AX)(EAX)? 定义 (S32)→(EDX)?(EAX)

MUL

MUL S

第二页 (1)Q((AX)/(S8))→(AL) R((AX)/(S8))→(AH) 除 (2)Q((DX,AX)/(S16))→(AX) R((DX,AX)/ (不 DIV DIV S (S16))→(DX)(3) Q((EDX,EAX)/(S32))→(EAX) 带符 R((EDX,EAX)/(S32))→(EDX) 若(1)Q是FF16 号) (2)Q是FFFF16 (3)Q是FFFFFFFF16 则发生0中断 整数 乘 IMUL (AL)?(S8)→(AX)(AX)?(S16)→(DX)?(AX) IMUL (带 S (EAX)?(S32)→(EDX)?(EAX) 符 号) (R16)?(Imm8)→(R16)(R32)?(Imm8)→(R32) IMUL (R16)?(Imm16)→(R16)(R32)?(Imm32)→ R,I (R32) (R16)?(Imm8)→(R16)(R32)?(Imm8)→(R32) IMUL (R16)?(Imm16)→(R16)(R32)?(Imm32)→ R,S,I (R32) IMUL (R16)?(S16)→(R16)(R32)?(S32)→(R32) R,S 整数 (1)Q((AX)/(S8))→(AL) R((AX)/(S8))→(AH) 除 (2)Q((DX,AX)/(S16))→(AX) R((DX,AX)/ IDIV IDIV (带 (S16))→(DX)(3) Q((EDX,EAX)/(S32))→(EAX) S 符 R((EDX,EAX)/(S32)) (EDX) 若Q是正且超过 号) 7FFFF16或Q是负且小于800116则发生0中断 乘后 AAM 调整 AAM Q((AL)/10)→(AH)R((AL)/10)→(AL) AL 除前 AAD 调整 AAD (AH)?10+(AL)→(AL)00→(AH) AX 字节 CBW 变换 CBW (AL的最高位)→(AH所有位) 成字 字变 CWDE 换成 CWDE (AX的最高位)→(EAX高16位) 双字 字变 CWD 换成 CWD (AX的最高位)→(DX所有位) 双字 双字 变换 CDQ CDQ (EAX的最高位)→(EDX所有位) 成四 字 逻辑 AND AND (S)?(D)→(D) 与 D,S 逻辑 OR OR (S)+(D)→(D) 或 D,S 逻辑 XOR XOR (S)㈩(D)→(D) 异或 D,S 逻辑 NOT NOT D (D)→(D) 非 第三页 算术 左移/ SAL/SHL SAL/SHL 逻辑 D,Count 左移 SHR 逻辑 右移 算术 右移 双精 度左 移 SHR D,Count 将(D)中数左移,其移位次数由计 数(Count)指定,右边的空位用零 SF,ZF,PF,CF;AF未定义 填充,每次移出的最高位(MSB)进 若Count≠1,则OF未定义 入CF 将(D)中数右移,其移位次数由计 SF,ZF,PF,CF;AF未定义 数指定,左边的空位用零填充,每 若Count≠1,则OF未定义 次移出的最低位(LSB)进入CF 将(D)中数右移,其移位次数由计 SF,ZF,PF,CF;AF未定义 数指定,左边的空位用最高位填 若Count≠1,则OF未定义 充,每次移出的最低位进入CF (D1)中数左移,移位次数等于 Count值,(D2)中数提供给D1,每 SF,ZF,PF,CF;OF,AF未定 次从D2的最高位移入D1的最低 义 位。D2的数最终不变,D1的移出 位进入CF (D1)中数右移,移位次数等于 Count值,(D2)中数提供给D1,每 SF,ZF,PF,CF;OF,AF未定 次从D2的最低位移入D1的最高 义 位。D2的数最终不变,D1的移出 位进入CF 将(D)循环左移,其循环移位, 位 CF若Count≠1,则OF未定 数等于计数值,每次从最左位移 义 出的返回到最右位 将(D)循环右移,其循环移位, 位 CF若Count≠1,则OF未定 数等于计数值,每次从最右位移 义 出的返回到最右位 进位进入(D)的循环移位,其余同 CF若Count≠1,则OF未定 ROL 义

所有标志位未定义

OF,CF;SF,ZF,AF,PF 未定义

OF,CF;SF,ZF,AF,PF 未定义 OF,CF;SF,ZF,AF,PF 未定义 OF,CF;SF,ZF,AF,PF 未定义

所有标志未定义

SF,ZF,PF;OF,AF,CF 未定义 SF,ZF,PF;OF,AF,CF 未定义 无





无 OF,SF,ZF,CF; AF未 定义 OF,SF,ZF,PF,CF; AF 未定义 OF,SF,ZF,PF,CF; AF 未定义 无

SAR

SAR D,Count

SHLD

SHLD D1,D2,Count

SHRD

双精 度右 移 循环 左移 循环 右移 经过 进位 循环 左移 经过 进位 循环 右移 位测 试 位测 试及 复位 位测 试及 置位 位测 试及 求反 向前 位扫 描

SHRD D1,D2,Count

ROL

ROL D,Count

ROR

ROR D,Count

RCL

RCL D,Count

RCR

RCR D,Count

进位进入(D)的循环移位,其余同 CF若Count≠1,则OF未定 ROR 义 用S内数值指定D内一位,该位数 CF;OF,SF,ZF,AF,PF未定 值保存于CF中 义 用S内数值指定D内一位,该位数 CF;OF,SF,ZF,AF,PF未定 值保存于CF中,并将D内该位复位 义 用S内数值指定D内一位,该位数 CF;OF,SF,ZF,AF,PF未定 值保存于CF中,并将D内该位置位 义 用S内数值指定D内一位,该位数 CF;OF,SF,ZF,AF,PF未定 值保存于CF中,并将D内该位求反 义 从位0开始扫描源操作数,若所有 位都是0,则ZF=0,否则ZF=1,第一 ZF;OF,SF,AF,PF,CF未定 个出现1的那位的指示值存入目 义 标操作数

BT BTR*

BT D,S BTR D,S

BTS

BTS D,S

BTC

BTC D,S

BSF

BSF D,S

第四页 BSR 向后 BSR 位扫 D,S 描 从标 志装 入AH 把AH 存入 标志 清除 进位 标志 设置 进位 标志 实现 进位 标志 清除 中断 标志 设置 中断 标志 比较 LAHF 从高位开始扫描源操作数,若 所有位都是0,则ZF=0,否则 ZF;OF,SF,AF,PF,CF未定义 ZF=1,第一个出现1的那位的指 示值存入目标操作数 (AH)←(标志) 无注:(LAHF/SAHF的AH寄存器格式) AH 7|SF|ZF|--|AF|--|PF|--|CF|0 SF,ZF,AF,PF,CF

LAHF

SAHF

SAHF

(标志)←(AH)

CLC

CLC

(CF)←0

CF

STC

STC

(CF)←1

CF

CMC

CMC

(CF)←(CF)

CF

CLI

CLI

(IF)←0

IF

STI CMP

STI CMP D,S

(IF)←1

IF

根据(D)-(S)来置1或置0标志 CF,AF,OF,PF,SF,ZF 位 如果cc为真,11111111→D如果 无 cc为假,00000000→D

按条 SETcc 件设 SETcc (另 置字 D 表) 节值 无条 JMP操 JMP 件转 作数 移 Jcc 条件 Jcc 操 (另 转移 作数 表) 子程 CALL CALL 序调 操作数 用 RET 或 RET 返回 RET 操 作数 字压 PUSH 入堆 PUSH S 栈 字弹 出堆 POP D POP 栈 标志 PUSHF 压入 PUSHF 堆栈 从堆 栈弹 POPF POPF 出标 志 全部 16位 通用 PHSHA 寄存 PHSHA 器压 入堆 栈 全部 32位 通用 PHSHD 寄存 PHSHD 器压 入堆 栈 第五页

转移到操作数规定的地址



如果规定条件cc为真,转移到 操作数确定的地址;否则执行 无 下一条指令 从操作数规定的子程序处开始 执行,返回主程序的信息,IP和 ? CS则保存在堆栈中 恢复IP和CS以返回主程序,如 无 果带操作数则把它加到SP上 ((SP))←(S) (SP)←(SP)-2 无

(D)←((SP)) (SP)←(SP)+2 ((SP))←(Flags) (SP)← (SP)-2





(Flags)←((SP)) (SP)←(SP) OF,DF,IF,TF,SF,ZF,AF,PF,CF +2 ((SP))←(AX) ((SP-2))← (CX)((SP-4))←(DX) ((SP6))←(BX)((SP-8))←(OLD 无 SP) ((SP-2))←(CX)((SP-A)) ←(BP) ((SP-C))←(SI)((SPE))←(DI) ((SP))←(EAX) ((SP-4))← (ECX)((SP-8))←(EDX) ((SPC))←(EBX)((SP-10))←(OLD 无 ESP) ((SP-14))←(EBP)((SP18))←(ESI) ((SP-1C))← (EDI)

(DI) ←((SP+2))((SI)) ←((SP+4))(BP)← ((SP+6))(OLD SP) ← ((SP+8))(BX)← POPA 无 ((SP+A))(DX)← ((SP+C))(CX) ← ((SP+E))(AX)← ((SP+10)) (EDI)←((SP+4))(ESI) 全部 ←((SP+8))(EBP) ← 32位 ((SP+C))(OLD SP)← 通用 ((SP+10))(EBX)← POPAD 无 寄存 POPAD ((SP+14))(EDX) ← 器弹 ((SP+18))(ECX)← 出堆 ((SP+1C))(EAX)← 栈 ((SP+20)) Push BPTEMP← (SP)If Imm8>0 then Repeat (Imm8-1) times(BP)← 分配 ENTER 无 堆栈 ENTER Imm16,Imm8 (BP)-2 Push ((BP)) End repeat PUSH 帧 TEMPEnd if(BP)←TEMP (SP)←(SP)-Imm16 释放 堆栈 LEAVE LEAVE (SP)←(BP) Pop to BP 无 帧 (CX)←(CX)-1如果(CX) ≠0,则转移到由 ShortLOOP 循环 LOOP Short-label ? label所确定的位置;否 则,顺序执行下一条指令 (CX)←(CX)-1如果(CX) 相等 LOOPE Short≠0且(ZF)=1,则转移到 循环 由 Short-label所确定 ? LOOPELOOPZ labelLOOPZ 为零 Short-label 的位置;否则,顺序执行 循环 下一条指令 不相 (CX)←(CX)-1如果(CX) 等循 LOOPNE Short≠0且(ZF)=0,则转移到 LOOPNELOOPNZ 环不 labelLOOPNZ 由 Short-label所确定 ? 为零 Short-label 的位置;否则,顺序执行 循环 下一条指令 ((ES)0+(DI))←((DS)0+ 移动 MOVSBMOVSWMOVSD MOVSBMOVSWMOVSD (SI))(SI)←(SI)±1,2 无 串 或4(DI)←(DI)±1,2或4 每次设置标志位((DS)0+ (SI))←((ES)0+(DI)) 比较 CMPSBCMPSWCMPSD CMPSBCMPSWCMPSD CF,PF,AF,ZF,SF,OF (SI)←(SI)±1,2或4 串 (DI)←(DI)±1,2或4 每次设置标志位 扫描 (AL,AX,EAX)←((ES)0+ SCASBSCASWSCASD SCASBSCASWSCASD CF,PF,AF,ZF,SF,OF 串 (DI))(DI)←(DI)±1,2 或4 (AL,AX,EAX)←((DS)0+ 装入 LODSBLODSWLODSD LODSBLODSWLODSD (SI))(SI)←(SI)±1,2 无 串 或4 ((DS)0+(SI))) ← 保存 STOSBSTOSWSTOSD STOSBSTOSWSTOSD (AL,AX,EAX) ±1,2或4 无 串 (DI)←(DI)±1,2或4 DF清 CLD CLD (DF)←0 DF 0 DF置 STD STD (DF)←1 DF 1 全部 16位 通用 寄存 POPA 器弹 出堆 栈 第六页 指令 (SETcc) SETA r/m8 SETAE r/m8 SETB r/m8 SETBE r/m8 SETC r/m8 SETE r/m8 SETG r/m8 SETGE r/m8 SETL r/m8 SETLE r/m8 SETNA r/m8 SETNAE r/m8 SETNB r/m8 SETNBE r/m8 SETNC r/m8 SETNE r/m8 SETNG r/m8 SETNGE r/m8 SETNL r/m8 SETNLE r/m8 SETNO r/m8 SETNP r/m8 SETNS r/m8 SETNZ r/m8 SETO r/m8 SETP r/m8 SETPE r/m8 SETPO r/m8 SETS r/m8 SETZ r/m8 ? ? ? 前缀 REP REPE/REPZ

含义 高于,则设置字 节 高于或等于,则 设置字节 低于,则设置字 节 低于或等于,则 设置字节 如果进位,则设 置字节 等于,则设置字 节 大于,则设置字 节 大于或等于,则 设置字节 小于,则设置字 节 小于或等于,则 设置字节 不高于,则设置 字节 不高于等于,则 设置字节 不低于,则设置 字节 不低于等于,则 设置字节 如果无进位,则 设置字节 不等于,则设置 字节 不大于,则设置 字节 不大于等于,则 设置字节 不小于,则设置 字节 不小于等于,则 设置字节 无溢出,则设置 字节 无奇偶,则设置 字节 无符号,则设置 字节 非零,则设置字 节 溢出,则设置字 节 奇偶,则设置字 节 奇偶位为偶,则 设置字节 奇偶位为奇,则 设置字节 有符号,则设置 字节 零标志,则设置 字节 ? ? ? 用于 MOVS,STOS CMPS,SCAS

条件码关系 CF=0*ZF=0 CF=0 CF=1 CF=1+ZF=1 CF=1 ZF=1 ZF=0+SF=OF SF=OF SF<>OF ZF=1*SF<>OF CF=1 CF=1 CF=0 CF=0*ZF=0 CF=0 ZF=0 ZF=1+SF<>OF SF<>OF SF=OF ZF=1*SF<>OF OF=0 PF=0 SF=0 ZF=0 OF=1 PF=1 PF=1 PF=0 SF=1 ZF=1 ? ? ? 含义 当不是串尾时重复CX≠ 0 当不是串尾且串相等时 重复CX≠0且ZF=1 当不是串尾且串不等时 重复CX≠0且ZF=0

?

指令 (Jcc)

含义 高于

条件 CF=0 AND AF=0

? JA ? JAE ? JB ? JBE ? JC ? JCXZ ? JECXZ ? JE ? JG ? JGE ? JL ? JLE ? JNA ? JNAE ? JNB ? JNBE ? JNC ? JNE ? JNG ? JNGE ? JNL ? JNLE ? JNO ? JNP ? JNS ? JNZ ? JO ? JP ? JPE ? JPO ? JS ? JZ ?? ?? ?? ?? ??

高于或 CF=0 等于 低于 CF=1

低于或 CF=1 OR ZF=1 等于 进位 CF=1

CX寄存 CX=0H 器为0 ECX寄存 ECX=0H 器为0 等于 大于 ZF=1 ZF=0 AND SF=OF

大于或 SF=OF 等于 (SF XOR OF) 小于 =1 小于或 ((SF XOR OF) 等于 ORZF)=1 不高于 CF=1 OR ZF=1 不高于 CF=1 等于 不低于 CF=0 不低于 CF=0 AND 等于 ZF=0 不进位 CF=0 不等于 ZF=0 ((SF XOR OR) OR ZF)=1 不大于 (SF XOR OF) 等于 =1 不大于 不小于 SF=OF 不小于 ZF=0 AND 等于 SF=OF 无溢出 OF=0 无奇偶 PF=0 无符号 SF=0 非零 溢出 奇偶 奇偶位 为偶 奇偶位 为\奇 有符号 零标志 ? ? ? ? ? ZF=0 OF=1 PF=1 PF=1 PF=0 SF=1 ZF=1 ? ? ? ? ?

REPNE/REPNZ CMPS,SCAS

磁动力工作窒 http://www.cdle.net

明浩 Email: pnzwzw@163.com


相关文章:
8086 汇编指令集.doc
8086 汇编指令集 - 8086 汇编指令集 一、数据传输指令 它们在存贮器和
汇编指令大全+很全的汇编指令.pdf
汇编指令大全+很全的汇编指令_法律资料_人文社科_专业资料。很全的汇编指令 星尘-易尘 汇编指令大全 汇编指令大全 零,状态寄存器 1 MOVE 数据传送指令 MOV 格式:...
汇编语言常用指令大全.doc
汇编语言常用指令大全 - MOV 指令为双操作数指令,两个操作数中必须有一个是寄
汇编指令大全.xls
汇编指令大全 - 754群指令系统 754群指令系统 1 装入 数据转移指令 指
一些常用的汇编语言指令.doc
一些常用的汇编语言指令 - 汇编语言常用指令 大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助! 数据传送指令 MOV: 寄存器...
汇编常用指令.txt
汇编常用指令 - dword ptr就是强制将后面的内容转化为一个dword 一、数据传输指令 ─────────────────────────────────...
初学汇编指令详解.pdf
初学汇编指令详解 - 80X86 汇编过程中经常用到的一些汇编指令。 从功能分类
汇编语言常用指令集.txt
汇编语言常用指令集 - 数据传送指令集 MOV 功能: 把源操作数送给目的操作数
DSP汇编指令总结.doc
DSP汇编指令总结 - DSP 汇编指令总结 一、寻址方式: 1、立即寻址: 短
汇编语言各种指令的解释与用法.doc
指令的特殊要求:指令中 REG 不能是段寄存器; 四、标志寄存器传送指令 8、标志寄存器的低字节送 AH LAHF (load AH with FLAGS) 指令汇编格式:LAHF 指令的基本...
汇编语言常用指令大全解释.doc
汇编语言常用指令大全解释_其它考试_资格考试/认证_教育专区。江苏三级 汇编语言常用指令 常用汇编指令: 常用汇编指令 MOV 指令为双操作数指令,两个操作数中必须有...
windows汇编指令详解.doc
windows汇编指令详解 - 数据传送指令集 MOV 功能: 把源操作数送给目
汇编语言指令大全.txt
汇编语言指令大全 - 汇编语言命令大全 MOV(MOVE)传送指令P28 PUSH 入栈指令P32 POP 出栈指令P33 XCHG(exchange) 交换指令P34 XLAT(T...
汇编语言各种指令的解释与用法.doc
汇编语言各种指令的解释与用法_计算机软件及应用_IT/计算机_专业资料。...【数据传输指令】一、通用数据传送指令 1、传送指令 MOV (move) 指令汇编格式:MOV DST...
51单片机汇编指令详解.doc
51单片机汇编指令详解 - 1、XCH A,Rn 指令名称:寄存器寻址字节交换指
汇编指令分类介绍.doc
汇编指令分类介绍 - 汇编指令全集 ZZ 以下是 80X86 汇编过程中经常用到的一些汇编指令。 从功能分类上来说,一共可分为 一、 数据传送指令:MOV、XCHG、LEA、...
汇编指令.doc
汇编指令 - EM78xxxxx 指令系统 1. EM78xxxxxx 指令概述
汇编语言指令.doc
汇编语言指令 - ORG 0000H NOP ;空操作指令 AJMP L0003 ;绝对转移指令 L0003: LJMP L0006 ;长调用指令 L0006: RR A ;累加器 A 内容右移...
汇编语言常用指令大全.pdf
汇编语言常用指令大全 - MOV 指令为双操作数指令,两个操作数中必须有一个是寄
win32常用的汇编指令.doc
win32常用的汇编指令_计算机硬件及网络_IT/计算机_专业资料。汇编 32
更多相关标签: