寄存器类
通用寄存器
累加器(E)AX = accumulator
基址寄存器(E)BX = base
计数器(E)CX = counter
变址寄存器(E)DX = data段寄存器
代码段寄存器CS = code segment
数据段寄存器DS = data segment
堆栈段寄存器SS = stack segment
附加段寄存器ES = extra segment特殊功能寄存器
指令指针寄存器IP = instruction pointer
堆栈指针SP = stack pointer
基址指针BP = base pointer
源变址寄存器SI = source index
目标变址寄存器DI = destination index
标志寄存器FR = flag register(或者叫程序状态字PSW–program status word)。
PSW标志
标志 | 值为1时的标记 | 值为0时的标记 |
---|---|---|
OF(overflow flag) | OV(overflow) | NV(not overflow) |
ZF(zero flag) | ZR(zero) | NZ(not zero) |
PF(parity flag) | PE(parity even) | PO(parity odd) |
CF(carry flag) | CY(carried) | NC(not carried) |
DF(direction flag) | DN(down) | UP(up) |
SF(sign flag) | NG(negtive) | PL(plus) |
TF(trap flag) | ||
IF(interrupt flag) | ||
AF(auxiliary flag) |
指令类
数据传送指令
通用数据传送指令
MOV = move 换码
MOVSX = extended move with sign data 符号传送
MOVZX = extended move with zero data 零传送
PUSH = push 压栈
POP = pop 出栈
PUSHA = push all 全部压栈
POPA = pop all 全部出栈
PUSHAD = push all data
POPAD = pop all data
BSWAP = byte swap 交换字节
XCHG = exchange 交换
CMPXCHG = compare and change 比较交换
XADD = exchange and add 交换加
XLAT = translate 换码输入输出端口传送指令
IN = input 端口输入
OUT = output 端口输出目的地址传送指令
LEA = load effective address 加载有效地址
LDS = load DS 加载数据段
LES = load ES 加载附加段
LFS = load FS 加载标志段
LGS = load GS 加载全局段
LSS = load SS 加载堆栈段标志传送指令
LAHF = load AH from flag 加载标志低八
SAHF = save AH to flag 恢复标志低八
PUSHF = push flag 标志压栈
POPF = pop flag 标志出栈
PUSHD = push dflag
POPD = pop dflag
算术指令
ADD = add 加
ADC = add with carry 进位加
INC = increase 1 加一
AAA = ascii add with adjust 调整加
DAA = decimal add with adjust 调整加十
SUB = substract 减
SBB = substract with borrow 借位减
DEC = decrease 1 减一
NEC = negative
CMP = compare 比较
AAS = ascii adjust on substract 调整减
DAS = decimal adjust on substract 调整减十
MUL = multiplication 乘
IMUL = integer multiplication 符号乘法
AAM = ascii adjust on multiplication 调整乘
DIV = divide 除
IDIV = integer divide 符号整除
AAD = ascii adjust on divide 调整除
CBW = change byte to word 转换字节
CWD = change word to double word 转换字
CWDE = change word to double word with sign to EAX 扩展字
CDQ = change double word to quadrate word 转换双字
逻辑指令
AND = and 与
OR = or 或
XOR = xor 异或
NOT = not 非
TEST = test 数测试
SHL = shift left 逻辑左移
SAL = arithmatic shift left 算术左移
SHR = shift right 逻辑右移
SAR = arithmatic shift right 算术右移
ROL = rotate left 循环左移
ROR = rotate right 循环右移
RCL = rotate left with carry 进位循环左移
RCR = rotate right with carry 进位循环右移
控制转移指令
无条件转移指令(长转移)
JMP = jump 跳转
CALL = call 过程调用
RET = return 过程返回
RETF = return far 远过程返回条件转移指令(短转移,-128到+127的距离内)
JA = jump when above 高于跳转
JAE = jump when above or equal 高于或等于跳转
JNB = jump when not below 不低于跳转
JB = jump when below 低于跳转
JNAE = jump when not above or equal 不高于或等于跳转
JBE = jump when below or equal 不高于跳转
JNA = jump when not above 不高于跳转
JG = jump when greater 大于跳转
JNLE = jump when not less or equal 不低于或等于跳转
JGE = jump when greater or equal 大于或等于调整
JNL = jump when not less 不小于跳转
JL = jump when less 小于跳转
JNGE = jump when not greater or equal 不大于或等于跳转
JLE = jump when less or equal 不等跳转
JNG = jump when not greater 不大于跳转
JE = jump when equal 相等跳转
JNE = jump when not equal 不等于跳转
JZ = jump when has zero flag
JNZ = jump when not has zero flag
JC = jump when has carry flag
JNC = jump when not has carry flag
JNO = jump when not has overflow flag 不溢出跳转
JNP = jump when not has parity flag 非奇偶跳转
JPO = jump when parity flag is odd
JNS = jump when not has sign flag 非负跳转
JO = jump when has overflow flag 溢出跳转
JP = jump when has parity flag 奇偶跳转
JPE = jump when parity flag is even
JS = jump when has sign flag 负号跳转循环控制指令(短转移)
LOOP = loop 计数循环
LOOPE = loop equal 相等循环
LOOPZ = loop zero 为零循环
LOOPNE = loop not equal 不等循环
LOOPNZ = loop not zero 非零循环
JCXZ = jump when CX is zero 计数一六零跳转
JECXZ = jump when ECX is zero 计数三二零跳转中断指令
INT = interrupt
INTO = overflow interrupt
IRET = interrupt return处理器控制指令
HLT = halt 停
WAIT = wait 等
ESC = escape
LOCK = lock 锁
NOP = no operation 空
STC = set carry 进位设置
CLC = clear carry 进位清零
CMC = carry make change 进位求反
STD = set direction 方向设置
CLD = clear direction 方向清零
STI = set interrupt 中断设置
CLI = clear interrupt 中断清零
串操作指令
MOVS = move string 传送字符串
MOVSB = move string byte 传送字节串
MOVSD = move string double 传送双字串
CMPS = compare string 比较字符串
CMPSB = compare string byte 比较字节串
CMPSD = compare string double 比较双字串
SCAS = scan string 扫描字符串
SCASB = scan string byte 扫描字节串
SCASD = scan string double 扫描双字串
LODS = load string 加载源变址字符串
LODSB = load string byte 加载源变址字节串
LODSD = load string double 加载源变址双字串
STOS = store string 保存字符串
STOSB = store string byte 保存字节串
STOSD = store string double 保存双字串
REP = repeat 重复
REPE = repeat when equal 相等重复
REPNE = repeat when not equal 不等重复
REPZ = repeat when zero flag
REPNZ = repeat when zero flag
REPC = repeat when carry flag
REPNC = repeat when not carry flag
伪指令
DW = definw word
PROC = procedure
ENDP = end of procedure
SEGMENT = segment
ASSUME = assume
ENDS = end segment
END = end