张德长

导航

8086指令码汇总表(表格)

8086指令码汇总表

 

8086指令有汇编语言指令和指令码两种形式,汇编语言指令形式经过汇编程序处理后生成指令码形式。

通过指令码形式可以帮助理解汇编语言指令格式的含义和用法。

8086指令码格式

0B/1B

1B/2B

0B/1B

0B/1B/2B/4B

0B/1B/2B/4B

指令前缀

操作码段

寻址方式段

偏移量参数

立即数参数

说明:偏移量参数和立即数参数的有无由寻址方式段决定;

 

  • 传送类指令

MOV指令

 

 

 

 

REG/MEM→/←REG

100010DW

mod reg r/m

 

 

IMME→REG/MEM

1000111w

mod 000 r/m

data

data if w=1

IMME→REG

1011wreg

data

data if w=1

 

MEM→AX

1010000w

addr-low

addr-high

 

AX→MEM

1010001w

addr-low

addr-high

 

REG/MEM→段REG

10001110

mod reg r/m

 

 

段REG→REG/MEM

10001100

mod reg r/m

 

 

PUSH指令

 

 

 

 

REG/MEM

11111111

mod 110 r/m

 

 

REG

01010reg

 

 

 

段REG

000reg110

 

 

 

POP指令

 

 

 

 

REG/MEM

10001111

mod 000 r/m

 

 

REG

01011reg

 

 

 

段REG

000reg111

 

 

 

XCHG指令

 

 

 

 

REG/MEM←→REG

1000011w

mod reg r/m

 

 

REG←→AX

10010reg

 

 

 

XLAT指令

11010111

 

 

 

LEA指令

10001101

mod reg r/m

 

 

LDS指令

11000101

mod reg r/m

 

 

LES指令

11000100

mod reg r/m

 

 

LAHF指令

10011111

 

 

 

SAHF指令

10011110

 

 

 

PUSHF指令

10011100

 

 

 

POPF指令

10011101

 

 

 

IN指令

 

 

 

 

直接寻址

1110010w

port

 

 

间接寻址

1110110w

 

 

 

OUT指令

 

 

 

 

直接寻址

1110011w

port

 

 

间接寻址

1110111w

 

 

 

CBW指令

10011000

 

 

 

CWD指令

10011001

 

 

 

说明:d--0/1表示REG为源/目的操作数;

w--0/1表示操作数类型为BYTE/WORD;

mod、r/m--寻址方式;

IMME--立即操作数,字段中用data表示;

reg--通用REG用3位编码,段REG用2位编码;

 

  • 算数运算类指令

ADD指令

 

 

 

 

REG/MEM+REG→任一

000000dw

mod reg r/m

 

 

REG/MEM+=IMME

100000sw

mod 000 r/m

data

data if sw=01

AX+=IMME

0000010w

data

data if w=1

 

ADC指令

 

 

 

 

REG/MEM+REG→任一

000100dw

mod reg r/m

 

 

REG/MEM+=IMME

100000sw

mod 010 r/m

data

data if sw=01

AX+=IMME

0001010w

data

data if w=1

 

INC指令

 

 

 

 

REG/MEM

1111111w

mod 000 r/m

 

 

REG

01000reg

 

 

 

SUB指令

 

 

 

 

REG/MEM-REG→任一

001010dw

mod reg r/m

 

 

REG/MEM-=IMME

100000sw

mod reg r/m

data

data if sw=01

AX-=IMME

0010110w

data

data if w=1

 

SBB指令

 

 

 

 

REG/MEM-REG→任一

000110dw

mod reg r/m

 

 

REG/MEM-=IMME

100000sw

mod 011 r/m

data

data if sw=01

AX-=IMME

0001110w

data

data if w=1

 

DEC指令

 

 

 

 

REG/MEM

11111111w

mod 001 r/m

 

 

REG

01001reg

 

 

 

NEG

1111011w

mod 011 r/m

 

 

CMP指令

 

 

 

 

REG/MEM-REG

001110dw

mod reg r/m

 

 

REG/MEM-IMME

100000sw

mod 111 r/m

data

data if sw=01

AX-IMME

0011110w

data

data if w=1

 

MUL指令

1111011w

mod 100 r/m

 

 

IMUL指令

1111011w

mod 101 r/m

 

 

DIV指令

1111011w

mod 110 r/m

 

 

IDIV指令

1111011w

mod 111 r/m

 

 

AAA指令

00110111

 

 

 

DAA指令

00100111

 

 

 

AAS指令

00111111

 

 

 

DAS指令

00101111

 

 

 

AAM指令

11010100

00001010

 

 

AAD指令

11010101

00001010

 

 

说明:sw--01表示16位立即数,11表示8位立即数,操作时扩展成16位;

REG/MEM-REG--MEM可以为减数或被减数;

 

  • 逻辑运算类指令

NOT指令

1111011w

mod 010 r/m

 

 

AND指令

 

 

 

 

REG/MEM&REG→任一

001000dw

mod reg r/m

 

 

REG/MEM&=IMME

1000000w

mod 100 r/m

data

data if w=1

AX&=IMME

0010010w

data

data if w=1

 

OR

 

 

 

 

REG/MEM|REG→任一

000010dw

mod reg r/m

 

 

REG/MEM|=IMME

1000000w

mod 001 r/m

data

data if w=1

AX|=IMME

0000110w

data

data if w=1

 

TEST指令

 

 

 

 

RET/MEM&REG

100010dw

mod reg r/m

 

 

REG/MEM&IMME

1111011w

mod 000 r/m

data

data if w=1

AX&IMME

1010110w

data

data if w=1

 

SHL/SA/指令

110100vw

mod 100 r/m

 

 

SHR指令

110100vw

mod 101 r/m

 

 

SAR指令

110100vw

mod 111 r/m

 

 

POL指令

110100vw

mod 000 r/m

 

 

ROR指令

110100vw

mod 001 r/m

 

 

RCL指令

110100vw

mod 010 r/m

 

 

RCR指令

110100vw

mod 011 r/m

 

 

说明:v--0/1表示位移次数1/(CL)。

 

  • 控制转移类指令

JMP指令

 

 

 

 

段内-直接短转移

11101011

disp

 

 

段内-直接转移

11101001

disp-low

disp-high

 

段内-间接转移

11111111

mod 100 r/m

 

 

段间-直接转移

11101010

offset-low

offset-high

seg-low seg-high

段间-间接转移

11111111

mod 101 r/m

 

 

JO指令

01110000

disp

 

 

JNO指令

01110001

disp

 

 

JC指令

01110010

disp

 

 

JNC指令

01110011

disp

 

 

JE/JZ指令

01110100

disp

 

 

JNE/JNZ指令

01110101

disp

 

 

JS指令

01111000

disp

 

 

JNS指令

01111001

disp

 

 

JP/JPE指令

01111010

disp

 

 

JNP/JPO指令

01111011

disp

 

 

JA/JNBE指令

01110111

disp

 

 

JAE/JNB指令

01110011

disp

 

 

JB/JNAE指令

01110010

disp

 

 

JBE/JNA指令

01110110

disp

 

 

JG/JNE指令

01111111

disp

 

 

JGE/JNL指令

01111101

disp

 

 

JL/JNGE指令

01111100

disp

 

 

JLE/JNG指令

01111110

disp

 

 

JCXZ指令

11100011

disp

 

 

LOOP指令

11100010

disp

 

 

LOOPZ/LOOPE指令

11100001

disp

 

 

LOOPNZ/LOOPN指令

11100000

disp

 

 

CALL指令

 

 

 

 

段内-直接

11101000

disp-low

disp-high

 

段内-间接

11111111

mod 010 r/m

 

 

段间-直接

10011010

offset-low

offset-high

seg-low set-high

段间-间接

11111111

mod 011 r/m

 

 

RET指令

 

 

 

 

段内-返回

11000011

 

 

 

段内-加参数返回

11000010

data-low

data-high

 

段间-返回

11001011

 

 

 

段间-加参数返回

11001010

data-low

data-high

 

INT指令

 

 

 

 

常规中断

11001101

type

 

 

3号中断

11001100

 

 

 

INTO指令

11001110

 

 

 

IRET指令

11001111

 

 

 

说明:JB/JNE--与JC指令相同;

JAE/JNB--与JNC指令相同;

type--中断类型号;

 

 

  • 串操作类指令

REP指令

1111011z

 

 

 

MOVS指令

1010010w

 

 

 

CMPS指令

1010011w

 

 

 

SCAS指令

1010111w

 

 

 

LODS指令

1010110w

 

 

 

STOS指令

1010101w

 

 

 

说明:REP--z=0时为REPNE,z=1时为REP和REPZ,8086默认REP对应MOVS、STOS,REPZ对应CMPS、SCAS(比较两者与5条指令配合时的有效性);

  • 处理器控制类指令

CLC指令

11111000

 

 

 

STC指令

11111001

 

 

 

CMC指令

11110101

 

 

 

CLI指令

11111010

 

 

 

STI指令

11111011

 

 

 

CLD指令

11111100

 

 

 

STD指令

11111101

 

 

 

NOP指令

10010000

 

 

 

HLT指令

11110100

 

 

 

WAIT指令

10011011

 

 

 

ESC指令

11011xxx

mod xxx r/m

 

 

LOCK指令

11110000

 

 

 

说明:x--可为任意值(0/1);

posted on 2022-07-06 11:51  张德长  阅读(851)  评论(0编辑  收藏  举报