172.处理机控制与杂项指令

1.处理机控制与杂项操作指令

 标志处理指令
CLC、 STC、 CMC、
CLD、STD、
CLI、STI
 其他处理机控制与杂项操作指令
NOP、HLT、WAIT、ESC、LOCK

2.标志处理指令

CLC CF ← 0
CMC CF ← ¬CF
STC CF ← 1

CLD DF ← 0
STD DF ← 1

CLI IF ← 0
STI IF ← 1

注意: * 只影响本指令指定的标志

3.其他处理机控制与杂项操作指令


NOP     无操作 (机器码占一个字节)
HLT      暂停机 (等待一次外中断,之后继续执行程序)
WAIT    等待 (等待外中断,之后仍继续等待)
ESC      换码
LOCK    封锁 (维持总线的锁存信号,直到其后的指令执行完)

注意: * 不影响条件标志

4.80x86 的指令系统

(1) 指令集的32位扩展
* 所有 16 位指令都可扩展到 32 位
    MOV EAX, 1
* 可使用 32 位的存储器寻址方式
    MOV EAX, [EDX]

(2) 使用方式的扩展
* IMUL:单操作数指令 → 双操作数指令 / 三操作数指令
    IMUL REG, SRC
* PUSH:允许使用立即数寻址方式
    PUSH 36H
* 移位指令:移位次数可用 8 位立即数 (1~31)

(3) 新增指令
MOVSX 带符号扩展传送
MOVZX 带零扩展传送
PUSHA / PUSHAD 所有寄存器进栈
POPA / POPAD 所有寄存器出栈
LFS / LGS / LSS 指针送寄存器和 FS / GS / SS
PUSHFD 标志进栈
POPFD 标志出栈
CWDE 字转换为双字 EAX
CDQ 双字转换为 4 字 EDX EAX
BSWAP 32 位寄存器的字节次序变反
XADD 交换加
CMPXCHG 比较并交换 (486)
CMPXCHG8B 比较并交换 8 字节(Pentium)A

BT 位测试
BTS 位测试并置1
BTR 位测试并置0
BTC 位测试并变反

BSF 正向位扫描
BSR 反向位扫描

SHLD 双精度左移
SHRD 双精度右移

INSB / INSW / INSD 串输入
OUTSB / OUTSW / OUTSD 串输出

条件设置指令
(1) 根据单个条件标志的值把目的字节置 1
SETZ / SETE SETNZ / SETNE
SETS / SETNS SETO / SETNO
SETP / SETPE SETNP / SETPO
SETC / SETB / SETNAE SETNC / SETNB / SETAE
(2) 比较两个无符号数,根据比较结果把目的字节置 1
SETB / SETNAE / SETC SETNB / SETAE / SETNC
SETBE / SETNA SETNBE / SETA
(3) 比较两个带符号数,根据比较结果把目的字节置 1
SETL / SETNGE SETNL / SETGE
SETLE / SETNG SETNLE / SETG

其他处理机控制指令
BOUND 界限指令 ENTER 建立堆栈帧
LEAVE 释放堆栈帧 
特权指令

原文地址:https://www.cnblogs.com/ZanderZhao/p/11054809.html