Intel8086ASMCode汇编指令的机器码
8086指令码汇总表
8086指令有汇编语⾔指令和指令码两种形式,汇编语⾔指令形式经过汇编程序处理后⽣成指令码形式。
通过指令码形式可帮助理解汇编语⾔指令格式的含义和⽤法。
O、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 8E
段REG→REG/MEM 10001100 mod reg r/m 8C
PUSH指令
REG/MEM 11111111 mod 110 r/m FF
REG 01010reg
段REG 000reg110
POP指令
REG/MEM 10001111 mod 000 r/m 8F
REG 01011reg
汇编指令汇总段REG 000reg111
XCHG指令
REG/MEM←→REG 1000011w mod reg r/m
REG←→AX 10010reg
XLAT指令11010111 D7
LEA指令10001101 mod reg r/m 8D
LDS指令11000101 mod reg r/m C5
LES指令11000100 mod reg r/m C4
LAHF指令10011111 9F
SAHF指令10011110 9E
PUSHF指令10011100 9C
POPF指令10011101 9D
IN指令
直接寻址1110010w port
间接寻址1110110w
OUT指令
直接寻址1110011w port
间接寻址1110111w
CBW指令10011000 98
CWD指令10011001 99 说明:d—0/1表⽰REG为源/⽬的操作数;
w—0/1表⽰操作数类型为BYTE/WORD;
mod、r/m—寻址⽅式,参见教材P56~57;
IMME—⽴即数操作数,字段中⽤data表⽰;
reg—通⽤REG⽤3位编码,段REG只⽤2位编码(即为0xx)。
⼆、算术运算类指令
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 101 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 1111111w 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 M
UL指令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 37
DAA指令00100111 27
AAS指令00111111 3F
DAS指令00101111 2F
AAM指令11010100 00001010 0A D4
AAD指令11010101 00001010 0A D5 说明:sw--01表⽰16位⽴即数,11表⽰8位⽴即数操作时扩展成16位;REG/MEM-REG—MEM可为减数或被减数。
三、逻辑运算类指令
NOT指令1111011w mod 010 r/m
AND指令
REG/MEM®→任⼀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
XOR指令
REG/MEM^REG→任⼀001100dw mod reg r/m
REG/MEM ^= IMME 1000000w mod 110 r/m data data if w=1 AX ^= IMME 0011010w data data if w=
1
TEST指令
REG/MEM® 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/SAL指令110100vw mod 100 r/m
SHR指令110100vw mod 101 r/m
SAR指令110100vw mod 111 r/m
ROL指令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 EB 直接转移11101001 disp-low disp-high E1 间接转移11111111 mod 100 r/m FF 段间直接转移11101010 offset-low offset-high seg-low seg-high 间接转移11111111 mod 101 r/m FF
JO指令01110000 disp 70 JNO指令01110001 disp 71 JC指令01110010 disp 72 JNC指令01110011 disp 73 JE/JZ指令01110100 disp 74 JNE/JNZ指令01110101 disp 75 JS指令01111000 disp 78 JNS指令01111001 disp 79 JP/JPE指令01111010 disp 7A JNP/JPO指令01111011 disp 7B JA/JNBE指令01110111 disp 77 JAE/JNB指令01110011 disp 73
JB/JNAE指令01110010 disp 72 JBE/JNA指令01110110 disp 76 JG/JNE指令01111111 disp 7F JGE/JNL指令01111101 disp 7D JL/JNGE指令01111100 disp 7C JLE/JNG指令01111110 disp 7E JCXZ指令11100011 disp E3 LOOP指令11100010 disp E2 LOOPZ/LOOPE指令11100001 disp E1 LOOPNZ/LOOPN指令11100000 disp E0 CALL指令
段内直接11101000 disp-low disp-high E8 间接11111111 mod 010 r/m FF
段间直接10011010 9A offset-low offset-high seg-low seg-high 间接11111111 mod 011 r/m FF
RET指令
段内返回11000011 C3 加参数返回11000010 data-low data-high C2
段间返回11001011 CB 加参数返回11001010 data-low data-high CA
INT指令
常规中断11001101 type BC 3号中断11001100 CC
INTO指令11001110 CE
IRET指令11001111 CF
说明:JB/JNE—与JC指令相同;
JAE/JNB—与JNC指令相同;
type—中断类型号。
五、串操作类指令
REP指令1111001z
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 F8
STC指令11111001 F9
CMC指令11110101 F5
CLI指令11111010 FA
STI指令11111011 FB
CLD指令11111100 FC
STD指令11111101 FD
NOP指令10010000 90
HLT指令11110100 F4
WAIT指令10011011 9B
ESC指令11011xxx mod xxx r/m
LOCK指令11110000 F0 说明:x—可为任意值(0/1)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论