本汇总主要供个人学习使用,如果大家觉得方便自己学习尽可以拿去用,为了查阅方便,本表格按照字母顺序排序,若有错误之处希望大家予以指出!谢谢!
说明:SRC和DST分别表示源操作数和目的操作数,ACC表示AL/AX/EAX寄存器,PORT表示I/O端口,TEMP表示临时存储单元。REG、MEM和IMM分别表示寄存器、存储器和立即数
指令格式 | 作用说明 | 对应处理器 |
LAHF | (AH)←(FLAGS低字节) | 8086/8088 |
LDS REG,SRC | (REG)←(SRC),(DS)←(SRC+2或4) | 8086/8088 |
LEA REG,SRC | (REG)←SRC | 8086/8088 |
LES REG,SRC | (REG)←(SRC),(ES)←(SRC+2或4) | 8086/8088 |
LFS REG,SRC | (REG)←(SRC),(FS)←(SRC+2或4) | Pentium |
LGS REG,SRC | (REG)←(SRC),(GS)←(SRC+2或4) | Pentium |
LOCK | 封锁指令,可作为其他指令的前缀联合使用,以保持总线的封锁信号 | 8086/8088 |
LODS | 将DS:SI/ESI指向的数据串元素取到ACC中(允许带位标识后缀) | 8086/8088 |
LOOP DST | (CX/ECX)-1≠0,则循环 | 8086/8088 |
LOOPNZ/LOOPNE DST | (CX/ECX)-1≠0且ZF=0,则循环 | 8086/8088 |
LOOPZ/LOOPE DST | (CX/ECX)-1≠0且ZF=1,则循环 | 8086/8088 |
LSS REG,SRC | (REG)←(SRC),(SS)←(SRC+2或4) | Pentium |
MOV DST,SRC | (DST)←(SRC) | 8086/8088 |
MOVS | DS:SI/ESI指向的数据串传送到ES:DI/EDI指向的内存区(允许带位标识后缀) | 8086/8088 |
MOVSX DST,SRC | (DST)←符号扩展(SRC) | 80386 |
MOVZX DST,SRC | (DST)←零扩展(SRC) | 80386 |
MUL SRC | (AX)或(DX,AX)或(EDX,EAX)←(ACC)*(SRC),无符号 | 8086/8088 |
NEG DST | (DST)←0-(DST),取操作的补码 | 8086/8088 |
NOP | 空操作,使指令指针加1 | 8086/8088 |
NOT DST | (DST)←(DST)取反 | 8086/8088 |
OR DST,SRC | (DST)←(DST)∪(SRC) | 8086/8088 |
OUT PORT,ACC | (PORT)←(ACC) | 8086/8088 |
OUTS | 将DS:SI/ESI指向的数据串传送到DX指示的端口中去(允许带位标识后缀) | 80286 |
POP DST | (DST)←(SP或ESP),(SP或ESP)←(SP或ESP)+2或4 | 8086/8088 |
POPA/POPAD | 8个16/32位通用寄存器数据依次出栈 | 80286 |
POPF | FLAGS出栈 | 8086/8088 |
POPFD | FLAGS出栈 | 80386 |
PUSH SRC | (SP或ESP)←(SP或ESP)-2或4,(SP或ESP)←(SRC) | 8086/8088 |
PUSHA/PUSHAD | 8个16/32位通用寄存器数据依次进栈 | 80286 |
PUSHF | FLAGS进栈 | 8086/8088 |
PUSHFD | FLAGS进栈 | 80386 |
RCL DST,SRC | 带进位循环左移,CF作为操作数的扩展,一起参加循环移位 | 8086/8088 |
RCR DST,SRC | 带进位循环右移,CF作为操作数的扩展,一起参加循环移位 | 8086/8088 |
REP | (CX/ECX)≠0,重复执行后续串指令,CX/ECX的数据减1 | 8086/8088 |
REPE/REPZ | (CX/ECX)≠0且ZF=1,重复执行后续串指令,CX/ECX的数据减1 | 8086/8088 |
REPNE/REPNZ | (CX/ECX)≠0且ZF=0,重复执行后续串指令,CX/ECX的数据减1 | 8086/8088 |
RET n | 子程序返回主程序,(SP/ESP)←(SP/ESP)+n | 8086/8088 |
ROL DST,SRC | 循环左移,移出的位送到操作数的另一端,CF不参加循环移位 | 8086/8088 |
ROR DST,SRC | 循环右移,移出的位送到操作数的另一端,CF不参加循环移位 | 8086/8088 |
SAHF | (FLAGS低字节)←(AH) | 8086/8088 |
SAL DST,SRC | 算术左移,操作与SHL相同,但符号为发生变化时,OF置1 | 8086/8088 |
SAR DST,SRC | 算术右移,操作与SHR类似,但每次移位通过复制保持符号位不变 | 8086/8088 |
SBB DST,SRC | (DST)←(DST)-(SRC)-CF | 8086/8088 |
SCAS | 用ACC中的关键字扫描ES:DI/EDI指向的目标串,若相同,则ZF=1(允许带位标识后缀) | 8086/8088 |
SETcc DST | 测试指定的标志位所处的状态,根据测试结果将指定的一个8位寄存器或存储单元置0或置1 | 8086/8088 |
SHL DST,SRC | 逻辑左移,SRC决定移位的次数,最高位进入标志位CF,最低位补0 | 8086/8088 |
SHLD DST,REG,SRC | 双精度左移 | 80286 |
SHR DST,SRC | 逻辑右移,操作与SHL类似,不同的只是移位方向相反 | 8086/8088 |
SHRD DST,REG,SRC | 双精度右移 | 80286 |
STC | 进位标志置1 | 8086/8088 |
STD | 方向标志置1 | 8086/8088 |
STI | 中断允许标志置1 | 8086/8088 |
STOS | 将ACC中的内容存入ES:DI/EDI指向的内存单元中(允许带位标识后缀) | 8086/8088 |
SUB DST,SRC | (DST)←(DST)-(SRC) | 8086/8088 |
TEST | (DST)∩(SRC) | 8086/8088 |
WAIT | 是处理器处于空转状态,定期检查TEST信号是否为高电平 | 8086/8088 |
XADD DST,SRC | TEMP←(DST)+(SRC),(SRC)←(DST),(DST)←TEMP | 80486 |
XCHG DST,SRC | (DST)←→(SRC) | 8086/8088 |
XLAT tran_tab | (AL)←((BX或EBX)+(AL)) | 8086/8088 |
XOR | (DST)←(DST)?(SRC) |