当前位置:首页 >> 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


相关文章:
汇编指令大全
汇编指令大全 (DST:destination 目的操作数/地址;SRC:source 源操作数/地址;port:端口;ac: Accumulator 累加器; reg:register 寄存器;cnt:counter 计数器;opr: ...
汇编语言指令系统
汇编语言指令系统_计算机软件及应用_IT/计算机_专业资料。第3章 指令系统 TMS320C54x 指令系统共有指令 130 条,由于操作数的寻址方式不同,派生至 205 条。按 ...
汇编指令大全
汇编指令大全_计算机软件及应用_IT/计算机_专业资料。数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 ...
汇编语言最全指令表
汇编语言最全指令汇编语言最全指令汇编语言最全指令表 阅读已结束,下载文档到电脑 1下载券 下载 想免费下载本文? 立即加入VIP 免下载券下载文档 10万篇...
汇编语言指令汇总_图文
汇编语言指令汇总_计算机软件及应用_IT/计算机_专业资料。汇编语言指令汇总 汇编语言程序设计资料简汇通用寄存器 8 位通用寄存器 8 个:AL、AH、BL、BH、CL、CH、...
汇编指令
汇编指令_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 汇编指令_计算机软件及应用_IT/计算机_专业资料。12.4 汇编指令 本章详细...
汇编简单指令
汇编简单指令_工学_高等教育_教育专区。自己整理的汇编指令,希望对你有帮助1.数据传送指令 不可同时操作数两个都是内存地址 (不过可以同时操作数都是寄存器) 两个...
汇编指令
指令 .8086,只支持对 8086 指令汇编 .186,只支持对 80186 指令汇编 .286,支持对非特权的 80286 指令汇编 .286C,支持对非特权的 80286 指令汇编 ...
汇编语言指令详解大全
汇编语言指令详解大全_计算机软件及应用_IT/计算机_专业资料。助记符 指令说明 字节数 周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,...
汇编命令
A 汇编命令功能: 将指令直接汇编成机器码输入到内存中。 说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用 户装入内存的汇编语句是连续...
更多相关标签: