8086/8088指令集

作者在 2008-04-18 08:49:53 发布以下内容
为了便于查询,这里分类列出8086/8088汇编指令: 

数据传送指令 
MOV 
功能: 把源操作数送给目的操作数 
语法: MOV 目的操作数,源操作数 
格式: MOV r1,r2 或 MOV r,m 或 MOV m,r 或 MOV r,data 

XCHG 
功能: 交换两个操作数的数据 
语法: XCHG 
格式: XCHG r1,r2 或 XCHG m,r 或 XCHG r,m 

PUSH,POP 
功能: 把操作数压入或取出堆栈 
语法: PUSH 操作数 POP 操作数 
格式: PUSH r 或 PUSH M 或 PUSH data POP r 或 POP m 

PUSHF,POPF,PUSHA,POPA 
功能: 堆栈指令群 
格式: PUSHF POPF PUSHA POPA 

LEA,LDS,LES 
功能: 取地址至寄存器 
语法: LEA r,m LDS r,m LES r,m 

XLAT(XLATB) 
功能: 查表指令 
语法: XLAT XLAT m 
算术运算指令 

ADD,ADC 
功能: 加法指令 
语法: ADD OP1,OP2 ADC OP1,OP2 
格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 
影响标志: C,P,A,Z,S,O 

SUB,SBB 
功能:减法指令 
语法: SUB OP1,OP2 SBB OP1,OP2 
格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 
影响标志: C,P,A,Z,S,O 

INC,DEC 
功能: 把OP的值加一或减一 
语法: INC OP DEC OP 
格式: INC r/m DEC r/m 
影响标志: P,A,Z,S,O 

NEG 
功能: 将OP的符号反相(取二进制补码) 
语法: NEG OP 
格式: NEG r/m 
影响标志: C,P,A,Z,S,O 

MUL,IMUL 
功能: 乘法指令 
语法: MUL OP IMUL OP 
格式: MUL r/m IMUL r/m 
影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) 

DIV,IDIV 
功能:除法指令 
语法: DIV OP IDIV OP 
格式: DIV r/m IDIV r/m 

CBW,CWD 
功能: 有符号数扩展指令 
格式: CBW CWD 

AAA,AAS,AAM,AAD 
功能: 非压BCD码运算调整指令 
格式: AAA AAS AAM AAD 
影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) 

DAA,DAS 
功能: 压缩BCD码调整指令 
格式: DAA DAS 
影响标志: C,P,A,Z,S 
字符串操作指令 

MOVSB,MOVSW,MOVSD 
功能: 字符串传送指令 
格式: MOVSB MOVSW MOVSD 
标志位: 无 

CMPSB,CMPSW,CMPSD 
功能: 字符串比较指令 
格式: CMPSB CMPSW CMPSD 
标志位: C,P,Z,S,O 

SCASB,SCASW 
功能: 字符串搜索指令 
格式: SCASB SCASW 
标志位: C,P,Z,S,O 

LODSB,LODSW,STOSB,STOSW 
功能: 字符串载入或存贮指令 
格式: LODSB LODSW STOSB STOSW 
标志位: 无 

REP,REPE,REPNE 
功能: 重复前缀指令集 
格式: REP 指令S REPE 指令S REPNE 指令S 
标志位: 依指令S而定 

位运算指令集 
AND,OR,XOR,NOT,TEST 
功能: 执行BIT与BIT之间的逻辑运算 
格式: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 

SHR,SHL,SAR,SAL 
功能: 移位指令 
格式: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 
影响标志: C,P,Z,S,O 

ROR,ROL,RCR,RCL 
功能: 循环移位指令 
格式: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 
影响标志: C,P,Z,S,O 
程序流程控制指令 

CLC,STC,CMC 
功能: 设定进位标志 
格式: CLC STC CMC 
标志位: C 

CLD,STD 
功能: 设定方向标志 
格式: CLD STD 
标志位: D 

CLI,STI 
功能: 设定中断标志 
格式: CLI STI 
标志位: I 

CMP 
功能: 比较OP1与OP2的值 
格式: CMP r/m,r/m/data 
标志位: C,P,A,Z,O 

JMP 
功能: 跳往指定地址执行 
格式: JMP 地址 

JXX 
功能: 当特定条件成立则跳往指定地址执行 
格式: JXX 地址 
XX为下列值: 
   A: ABOVE,当C=0,Z=0时成立 
   B: BELOW,当C=1时成立 
   C: CARRY,当CF=1时成立 
   CXZ: CX寄存器的值为0(ZERO)时成立 
   E: EQUAL,当Z=1时成立 
   G: GREATER(大于),当Z=0且S=0时成立 
   L: LESS(小于),当S不为零时成立 
   N: NOT(相反条件),需和其它符号配合使用 
   O: OVERFLOW,O=1时成立 
   P: PARITY,P=1时成立 
   PE: PARITY EVEN,P=1时成立 
   PO: PARITY ODD,P=0时成立 
   S: SIGN,S=1时成立 
   Z: ZERO,Z=1时成立 

LOOP 
功能: 循环指令集 
语法: LOOP 地址 

LOOPE(Z) 
格式:LOOPNE(Z) 地址 
标志位: 无 

CALL,RET 
功能: 子程序调用,返回指令 
语法: CALL 地址 RET RET n 
标志位: 无 

INT,IRET 
功能: 中断调用及返回指令 
语法: INT n IRET 
标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器 

处理器状态控制指令 
NOP 
功能: 空操作指令。不执行任何操作,但要花费CPU一个机器周期 
格式: NOP 

HLT 
功能: 暂停指令。CPU不执行任何操作,一直处于暂停状态,但IP指向HLT的下一条指令。 
格式: HLT 
脱离HLT状态的方式:1、CPU复位;2、CPU响应中断 

ESC,WAIT,LOCK 
功能: 用于多处理器系统。其中ESC是交权指令;WAIT是等待指令;LOCK是总线封锁指令
默认分类 | 阅读 618 次
文章评论,共0条
游客请输入验证码
浏览17896次
最新评论