80x86指令集
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将标志寄存器低 8 位内容送 AH 将 AH 寄存器内容送 标志寄存器低 8 位 将 16 位标志寄存器 内容压入堆栈 将当前栈顶内容弹出至 标志寄存器
标志位 方向控制位 中断允许控制位 陷井控制位 溢出标志位 符号标志位 零标志位 辅助标志位 校验标志位 进位标志位 I/O 特权值 嵌套任务标志 恢复标志 虚拟 86 模式标志 对准检查标志 虚拟中断标志 虚拟中断挂起标志 识别标志 算术运算指令 ADD 加法运算指令 加 ADC 带进位加法运算指令 法 INC 增 1 指令 指 AAA 未组合 BCD 码加法调整指令 令 DAA 十进制加法调整指令 SUB 减法运算指令 SBB 带借位减法运算指令 减 DEC 减 1 指令 法 NEG 求补指令 指 CMP 比较指令 令 AAS 未组合十进制减法调整指令 DAS 组合十进制减法调整指令 乘 MUL 乘法运算指令 法 IMUL 带符号乘法运算指令 指 AAM 未组合十进制乘法调整指令 令 DIV 除法运算指令 除 IDIV 带符号除法运算指令 法 AAD 未组合十进制除法调整指令 指 CBW 字节转换为字指令 令 CWD 字转换为双字指令 串操作指令 MOVS 串传送指令 MOVSB / MOVSW 字节串/字串传送指令,不带操作数 CMPS 串比较指令 CMPSB / CMPSW 字节串/字串比较,无操作数 LODS 取串指令 LODSB / LODSW 字节/字操作,无操作数 SCAS 扫描串元素指令 SCASB / SCASW 扫描串中字节/字元素,无操作数 STOS 存储字节或字串指令 STOSB / STOSW 存储字节串/字串,无操作数 REP 串传送/比较/存储/扫描指令的前缀 重 复 串传送/扫描指令的前缀 REPE / REPZ 使紧随其后的指令重复执行 前 缀 REPNE / REPNZ 串比较/串扫描指令前缀使重复执行 处理器控制指令 CLC 清进位,CF=0 CMC 进位取反 操 STC 置 CF=1 作 CLD 置 DF=0 标 STD 置 DF=1 志 CLI 置 IF=0 STI 置 IF=1 HLT 处理器暂停 WAIT 处理器等待 SEC 处理器脱离 LOCK 总线封锁 NOP 空操作指令 Pentium 扩展的指令 Pentium 扩展指令 CMPXCHG8B 算术类指令,8 字节比较后交换 RDMSR 读模型专用寄存器 WRMSR 写模型专用寄存器 RDTSC 读时间标记计数器 RSM 由系统管理方式返回 Pentium Ⅱ扩展指令 PADD[B,W,D] 环绕加法[字节,字,双字] PADDS[B,W] 饱和带符号加法[字节,字] PADDUS[B,W] 饱和无符号加法[字节,字] PSUB[B,W,D] 环绕减法[字节,字,双字] PSUBS[B,W] 饱和带符号减法[字节,字] PSUBUS[B,W] 饱和无符号减法[字节,字] PMULHW 字高位紧缩乘法 PMULLW 字低位紧缩乘法 PMADDWD 字紧缩乘法并累加结果 PCMPEQ[B,W,D] 相等紧缩比较[字节,字,双字] PCMPGT[B,W,D] 大小紧缩比较[字节,字,双字] DF IF TF OF SF ZP AF PF CF IOPL NT RF VM AC VIF VIP ID
逻辑运算指令 非运算 与运算 或运算 异或运算 测试指令 移位运算指令 SAL/SHL 算术左移/逻辑左移 SAR/SHR 算术右移/逻辑右移 ROL/ROR 左循环移位/右循环移位 RCL/RCR 带进位的 左/右 循环移位 程序控制指令 JMP 无条件转移指令 CALL 无条件调用指令 RET 无条件返回指令 JC CF=1 (有进位 / 借位)时转移 JNC CF=0 (无进位 / 借位)时转移 JE / JZ ZF=1 (等于零/ 相等)时转移 JNE / JNZ ZF=0 (不等于零 /不相等)时转移 JS SF=1 符号位为1(负数)时转移 JNS SF=0 符号位为0(正数)时转移 JO OF=1 有溢出时转移 JNO OF=0 无溢出时转移 JP / JPE PF=1 奇偶位为1 / 偶时转移 JNP / JPO PF=0 奇偶位为0 / 奇时转移 以下四种用于无符号数的条件转移 JA / JNBE 高于 / 不等于且 CF=0且ZF=0 不低于时转移 JAE / JNB 高于等于 / 不低于 CF=0或ZF=1 时转移 JB / JNAE 低于 / 不高于且不等于 CF=1且ZF=0 时转移 JBE / JNA 低于等于 / 不高于 CF=1或ZF=1 时转移 以下四种用于有符号数的条件转移 (SF)XOR(OF)=0且 JG / JNLE ZF=0 (SF)XOR(OF)=0或 JGE / JNL ZF=1 (SF)XOR(OF)=1且 JL / JNGE ZF=0 (SF)XOR(OF)=1或 JLE / JNG ZF=0 LOOP 循环指令 LOOPZ(或LOOPE)ZF=1循环至目标操作数 LOOPZ(或LOOPE)ZF=0循环至目标操作数 JCXZ 若CX=0则此指令控制转移列目标操作数 启动由类型码n所规定的中断 INT n 服务程序 INTO 溢出中断 IRET 中断返回
AX AL AH BX CX CL DX SP BP SI DI CS SS DS、ES FS、GS MOV PUSH POP XCHG XLAT IN OUT LEA LDS、LES LAHF SAHF PUSHF POPF NOT AND OR XOR TEST
Leabharlann Baidu
通用寄存器 16 位累加器 AX 的低 8 位 AX 的高 8 位 基址寄存器 16 位计数器 8 位计数器 16 位数据寄存器 堆栈指针 基址指针 源变址寄存器 目的变址寄存器 段寄存器 指定代码段 指定堆栈段 均可指定当前数据段 数据传送指令 数据传送指令 入栈指令 出栈指令 交换指令 换码指令 输入指令 输出指令 有效地址传送指令 地址指针传送指令
标志位 方向控制位 中断允许控制位 陷井控制位 溢出标志位 符号标志位 零标志位 辅助标志位 校验标志位 进位标志位 I/O 特权值 嵌套任务标志 恢复标志 虚拟 86 模式标志 对准检查标志 虚拟中断标志 虚拟中断挂起标志 识别标志 算术运算指令 ADD 加法运算指令 加 ADC 带进位加法运算指令 法 INC 增 1 指令 指 AAA 未组合 BCD 码加法调整指令 令 DAA 十进制加法调整指令 SUB 减法运算指令 SBB 带借位减法运算指令 减 DEC 减 1 指令 法 NEG 求补指令 指 CMP 比较指令 令 AAS 未组合十进制减法调整指令 DAS 组合十进制减法调整指令 乘 MUL 乘法运算指令 法 IMUL 带符号乘法运算指令 指 AAM 未组合十进制乘法调整指令 令 DIV 除法运算指令 除 IDIV 带符号除法运算指令 法 AAD 未组合十进制除法调整指令 指 CBW 字节转换为字指令 令 CWD 字转换为双字指令 串操作指令 MOVS 串传送指令 MOVSB / MOVSW 字节串/字串传送指令,不带操作数 CMPS 串比较指令 CMPSB / CMPSW 字节串/字串比较,无操作数 LODS 取串指令 LODSB / LODSW 字节/字操作,无操作数 SCAS 扫描串元素指令 SCASB / SCASW 扫描串中字节/字元素,无操作数 STOS 存储字节或字串指令 STOSB / STOSW 存储字节串/字串,无操作数 REP 串传送/比较/存储/扫描指令的前缀 重 复 串传送/扫描指令的前缀 REPE / REPZ 使紧随其后的指令重复执行 前 缀 REPNE / REPNZ 串比较/串扫描指令前缀使重复执行 处理器控制指令 CLC 清进位,CF=0 CMC 进位取反 操 STC 置 CF=1 作 CLD 置 DF=0 标 STD 置 DF=1 志 CLI 置 IF=0 STI 置 IF=1 HLT 处理器暂停 WAIT 处理器等待 SEC 处理器脱离 LOCK 总线封锁 NOP 空操作指令 Pentium 扩展的指令 Pentium 扩展指令 CMPXCHG8B 算术类指令,8 字节比较后交换 RDMSR 读模型专用寄存器 WRMSR 写模型专用寄存器 RDTSC 读时间标记计数器 RSM 由系统管理方式返回 Pentium Ⅱ扩展指令 PADD[B,W,D] 环绕加法[字节,字,双字] PADDS[B,W] 饱和带符号加法[字节,字] PADDUS[B,W] 饱和无符号加法[字节,字] PSUB[B,W,D] 环绕减法[字节,字,双字] PSUBS[B,W] 饱和带符号减法[字节,字] PSUBUS[B,W] 饱和无符号减法[字节,字] PMULHW 字高位紧缩乘法 PMULLW 字低位紧缩乘法 PMADDWD 字紧缩乘法并累加结果 PCMPEQ[B,W,D] 相等紧缩比较[字节,字,双字] PCMPGT[B,W,D] 大小紧缩比较[字节,字,双字] DF IF TF OF SF ZP AF PF CF IOPL NT RF VM AC VIF VIP ID
逻辑运算指令 非运算 与运算 或运算 异或运算 测试指令 移位运算指令 SAL/SHL 算术左移/逻辑左移 SAR/SHR 算术右移/逻辑右移 ROL/ROR 左循环移位/右循环移位 RCL/RCR 带进位的 左/右 循环移位 程序控制指令 JMP 无条件转移指令 CALL 无条件调用指令 RET 无条件返回指令 JC CF=1 (有进位 / 借位)时转移 JNC CF=0 (无进位 / 借位)时转移 JE / JZ ZF=1 (等于零/ 相等)时转移 JNE / JNZ ZF=0 (不等于零 /不相等)时转移 JS SF=1 符号位为1(负数)时转移 JNS SF=0 符号位为0(正数)时转移 JO OF=1 有溢出时转移 JNO OF=0 无溢出时转移 JP / JPE PF=1 奇偶位为1 / 偶时转移 JNP / JPO PF=0 奇偶位为0 / 奇时转移 以下四种用于无符号数的条件转移 JA / JNBE 高于 / 不等于且 CF=0且ZF=0 不低于时转移 JAE / JNB 高于等于 / 不低于 CF=0或ZF=1 时转移 JB / JNAE 低于 / 不高于且不等于 CF=1且ZF=0 时转移 JBE / JNA 低于等于 / 不高于 CF=1或ZF=1 时转移 以下四种用于有符号数的条件转移 (SF)XOR(OF)=0且 JG / JNLE ZF=0 (SF)XOR(OF)=0或 JGE / JNL ZF=1 (SF)XOR(OF)=1且 JL / JNGE ZF=0 (SF)XOR(OF)=1或 JLE / JNG ZF=0 LOOP 循环指令 LOOPZ(或LOOPE)ZF=1循环至目标操作数 LOOPZ(或LOOPE)ZF=0循环至目标操作数 JCXZ 若CX=0则此指令控制转移列目标操作数 启动由类型码n所规定的中断 INT n 服务程序 INTO 溢出中断 IRET 中断返回
AX AL AH BX CX CL DX SP BP SI DI CS SS DS、ES FS、GS MOV PUSH POP XCHG XLAT IN OUT LEA LDS、LES LAHF SAHF PUSHF POPF NOT AND OR XOR TEST
Leabharlann Baidu
通用寄存器 16 位累加器 AX 的低 8 位 AX 的高 8 位 基址寄存器 16 位计数器 8 位计数器 16 位数据寄存器 堆栈指针 基址指针 源变址寄存器 目的变址寄存器 段寄存器 指定代码段 指定堆栈段 均可指定当前数据段 数据传送指令 数据传送指令 入栈指令 出栈指令 交换指令 换码指令 输入指令 输出指令 有效地址传送指令 地址指针传送指令