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/mIMME→REG/MEM 1000111w mod 000 r/m data data if w=1 IMME→REG 1011wreg data data if w=1MEM→AX 1010000w addr-low addr-highAX→MEM 1010001w addr-low addr-highREG/MEM→段REG 10001110 mod reg r/m 8E段REG→REG/MEM 10001100 mod reg r/m 8CPUSH指令REG/MEM 11111111 mod 110 r/m FFREG 01010reg段REG 000reg110POP指令REG/MEM 10001111 mod 000 r/m 8FREG 01011reg段REG 000reg111XCHG指令REG/MEM←→REG 1000011w mod reg r/mREG←→AX 10010regXLAT指令11010111 D7LEA指令10001101 mod reg r/m 8DLDS指令11000101 mod reg r/m C5LES指令11000100 mod reg r/m C4LAHF指令10011111 9FSAHF指令10011110 9EPUSHF指令10011100 9CPOPF指令10011101 9DIN指令直接寻址1110010w port间接寻址1110110wOUT指令直接寻址1110011w port间接寻址1110111wCBW指令10011000 98CWD指令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/mREG/MEM += IMME 100000sw mod 000 r/m data data if sw=01 AX += IMME 0000010w data data if w=1ADC指令REG/MEM+REG→任一000100dw mod reg r/mREG/MEM += IMME 100000sw mod 010 r/m data data if sw=01 AX += IMME 0001010w data data if w=1INC指令REG/MEM 1111111w mod 000 r/mREG 01000regSUB指令REG/MEM-REG→任一001010dw mod reg r/mREG/MEM -= IMME 100000sw mod 101 r/m data data if sw=01 AX -= IMME 0010110w data data if w=1SBB指令REG/MEM-REG→任一000110dw mod reg r/mREG/MEM -= IMME 100000sw mod 011 r/m data data if sw=01 AX -= IMME 0001110w data data if w=1DEC指令REG/MEM 1111111w mod 001 r/mREG 01001regNEG指令1111011w mod 011 r/mCMP指令REG/MEM-REG 001110dw mod reg r/mREG/MEM-IMME 100000sw mod 111 r/m data data if sw=01 AX-IMME 0011110w data data if w=1MUL指令1111011w mod 100 r/mIMUL指令1111011w mod 101 r/mDIV指令1111011w mod 110 r/mIDIV指令1111011w mod 111 r/mAAA指令00110111 37DAA指令00100111 27AAS指令00111111 3FDAS指令00101111 2FAAM指令11010100 00001010 0A D4AAD指令11010101 00001010 0A D5 说明:sw--01表示16位立即数,11表示8位立即数操作时扩展成16位;REG/MEM-REG—MEM可为减数或被减数。
三、逻辑运算类指令NOT指令1111011w mod 010 r/mAND指令REG/MEM®→任一001000dw mod reg r/mREG/MEM &= IMME 1000000w mod 100 r/m data data if w=1 AX &= IMME 0010010w data data if w=1OR指令REG/MEM|REG→任一000010dw mod reg r/mREG/MEM |= IMME 1000000w mod 001 r/m data data if w=1 AX |= IMME 0000110w data data if w=1XOR指令REG/MEM^REG→任一001100dw mod reg r/mREG/MEM ^= IMME 1000000w mod 110 r/m data data if w=1 AX ^= IMME 0011010w data data if w=1TEST指令REG/MEM® 100010dw mod reg r/mREG/MEM&IMME 1111011w mod 000 r/m data data if w=1 AX&IMME 1010110w data data if w=1SHL/SAL指令110100vw mod 100 r/mSHR指令110100vw mod 101 r/mSAR指令110100vw mod 111 r/mROL指令110100vw mod 000 r/mROR指令110100vw mod 001 r/mRCL指令110100vw mod 010 r/mRCR指令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 FFJO指令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 FFRET指令段内返回11000011 C3 加参数返回11000010 data-low data-high C2段间返回11001011 CB 加参数返回11001010 data-low data-high CAINT指令常规中断11001101 type BC 3号中断11001100 CCINTO指令11001110 CEIRET指令11001111 CF说明:JB/JNE—与JC指令相同;JAE/JNB—与JNC指令相同;type—中断类型号。
五、串操作类指令REP指令1111001zMOVS指令1010010wCMPS指令1010011wSCAS指令1010111wLODS指令1010110wSTOS指令1010101w说明:REP—z=0时为REPNE,Z=1时为REP和REPZ,8086默认REP对应MOVS、STOS,REPZ对应CMPS、SCAS(比较两者与5条指令配合时的有效性)。
六、处理器控制类指令CLC指令11111000 F8STC指令11111001 F9CMC指令11110101 F5CLI指令11111010 FASTI指令11111011 FBCLD指令11111100 FCSTD指令11111101 FDNOP指令10010000 90HLT指令11110100 F4WAIT指令10011011 9BESC指令11011xxx mod xxx r/mLOCK指令11110000 F0 说明:x—可为任意值(0/1)。