指令集说明
1、数据传送指令
oprd1
:目的操作数,oprd2
源操作数,操作数可以是寄存器,存储器,累加器
mov oprd1,oprd2
传送指令将oprd2
的值传送给oprd1
movsx oprd1,oprd2
符号填充指令,用oprd2
的符号位填充oprd1
的高位movzx oprd1,oprd2
恒用0来填充目的操作数的高位push oprd
将操作数进行压栈与ss:sp
相关pop oprd
将栈顶所指的两个字节数据弹出到oprd
中xchg oprd1,oprd2
交换两个操作数的内容lds oprd1,oprd2
从oprd2
存储器地址取出32
位数据给16
位oprd1
lea oprd1,oprd2
将oprd2
给出的有效地址传送给指定的16
位寄存器中les oprd1,oprd2
从存储器取出32
位地址给oprd1
lahf
取flag寄存器的低8
位给AH
寄存器sahf
将AH
存到flag
寄存器的低8
位popf
将flag
寄存器的还原pushf
保存flag
寄存器的值xlat table
将bx的值作为内存字节数组的首地址下标为al
的元素传送给al
2、算术指令
aad
除法的ascii
码调整add
加法aas
减法的ascii
码调整aam
乘法的ascii
码调整adc
带进位加法inc
自增1sub
减法sbb
带借位减法mul
无符号乘法imul
整数乘法cbw
字节转换为字cmp
比较两操作数减法,仅修改标志位cwd
字转换为双字div
无符号除法idiv
整数除法aaa
加法的ascii码调整daa
加法的十进制调整dec
自减1neg
求补码
3、逻辑指令:
AND
逻辑与OR
逻辑或XOR
异或NOT
非TEST
逻辑与,仅影响标记位SHL
逻辑左移SAL
算术左移SHR
逻辑右移SAR
算术右移RCL
进位循环左移RCR
进位循环右移ROL
循环左移ROR
循环右移
4、控制转移指令
-
JMP
无条件跳转 -
JC
进位跳转 -
JNC
不进位跳转 -
JE
相等跳转 -
JNE
不相等跳转 -
JZ
为0跳转 -
JNZ
不为0跳转 -
JS
为负跳转 -
JNS
不为负跳转 -
JO
溢出跳转 -
JNO
不溢出跳转 -
JP
1的个数为偶数跳转 -
JPE
1的个数为奇数跳转 -
JNP
同JP -
JPO
同JNP -
JA
无符号大于跳转 -
JNA
无符号不大于跳转 -
JAE
无符号大于等于跳转 -
JNAE
无符号不大于等于跳转 -
JB
无符号小于跳转 -
JNB
无符号不小于跳转 -
JBE
无符号小于等于跳转 -
JNBE
无符号不小于等于跳转 -
JG
有符号大于则跳转 -
JNG
有符号不大于则跳转 -
JGE
有符号大于等于则跳转 -
JNGE
有符号不大于等于则跳转 -
JL
有符号小于跳转 -
JNL
有符号不小于跳转 -
JLE
有符号小于等于跳转 -
JNLE
有符号不小于等于跳转 -
JCXZ
cx为0跳转 -
LOOP
cx不为0跳转 -
LOOPZ
cx不为0且z=1跳转 -
LOOPE
cx不为0且z=1跳转 -
LOOPNZ
cx不为0且z=0跳转 -
LOOPNE
cx不为0且z=0跳转 -
CALL
无条件跳转 -
RET
返回 -
IRET
中断反回 -
IN
io端口输入 -
OUT
io端口输出 -
INT
中断跳转 -
INTO
溢出中断 -
CLC
清进位标志位 -
CLD
清方向标志位 -
CLI
清中断允许位 -
CMC
进位标志取反 -
ESC
转换到外处理器 -
HLT
处理器暂停, 直到出现中断或复位信号才继续 -
LOCK
封锁总线 -
NOP
啥都不做 -
STC
置进位标志位 -
STD
置方向标志位 -
STI
置中断允许位 -
WAIT
当芯片引线TEST为高电平时使CPU进入等待状态
5、串操作指令:
MOVS
串传送MOVSB
字节传送MOVSW
字传送LODS
串加载STOS
串存储CMPS
串比较CMPSB
字节比较CMPSW
字比较SCAS
串扫描SCASB
字节扫描SCASW
字扫描REP
重复REPW
字重复REPZ
标志位0重复REPE
相等重复REPNZ
不为0重复REPNE
不相等重复
6、伪指令:
DB
定义字节DW
定义字(2字节)DD
定义双字PROC
定义过程.ENDP
过程结束SEGMENT
定义段ASSUME
建立段寄存器寻址ENDS
段结束END
程序结束