汇编指令大全第二篇{学习笔记}

作者:虫二(二进制逆向星球学员)

## 汇编指令 

### 寄存器类

#### 0x01 通用寄存器

累加器(E)AX = accumulator

基址寄存器(E)BX = base

计数器(E)CX = counter

变址寄存器(E)DX = data

#### 0x02 段寄存器

代码段寄存器 CS = code segment

数据寄存器 DS = data segment

堆栈寄存器 SS = stack segment

附加寄存器 ES = extra segment

#### 0x03 特殊功能寄存器

指令指针寄存器  IP = instruction pointer

堆栈指针 SP = stack pointer

基址指针 BP = base pointer

源变址寄存器 SI = source index

目标变址寄存器 DI = destination index

标志寄存器 FR = flag register

### 指令类

#### 0x01数据传送指令

MOV  = mov 换码

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 换码

#### 0x02 输入输出端口传送指令

IN = input 端口输入

OUT = output 端口输出

#### 0x03 目的地址传送指令

LEA = load effective address 加载有效地址

LDS = load data segment 加载数据段

LES = load extra segment 加载附加段

LFS = load flag segment 加载标志段

LGS = load global segment 加载全局段

LSS = load stack segment 加载堆栈段

#### 0x04 标志传送指令

LANF = load AH from flag 加载标志低八

SANF = save AH to flag 恢复标志低八

PUSHF = push flag 标志压栈

POPF = pop flag  标志出栈

PUSHD = push data flag 

POPD = pop data flag

### 算术指令

ADD = add 加

ADC = add with carry 进位加

INC = increase 1 自增

AAA = ascii add with adjust 调整加

DAA = decimal add with adjust 调整加十

SUB = substract

DEC = decrease 1 自减

NEC = negative 求反

CMP = compare 比较

AAS = ascii adjust on substract 调整减

DAS = decimal adjust on substract调整减十

MUL = 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 = arithmetic shift left 算术左移

SHR = shift right 逻辑右移

SAR = arithmetic shift right 算术右移

ROL = rotate left 循环左移

ROR = rotate right 循环右移

RCL = rotate left with carry 进位循环左移

RCR = rotate right with carry 进位循环右移

### 控制移动指令

#### 0x01无条件转移指令(长转移)

JMP = jump 跳转

CALL = call 过程调用

RET = return 过程返回

RETF = return far 远过程返回

#### 0x02 条件转移指令(短转移,-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 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 byte 比较字符串

CMPSB = 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 not zero flag

REPC = repeat when carry flag

REPNC = repeat when not carry flag

### 伪指令

DW = define word 定义字(2字节)

PROC = procedure 定义过程

ENDP = end of procedure 进程结束

SEGMENT = segment 定义段

ASSUME = assumes 建立段寄存器寻址

ENDS =  end segment 段结束

END = end 程序结束

扫描下方二维码加入星球学习

加入后会邀请你进入内部微信群,内部微信群永久有效!

汇编指令大全第二篇{学习笔记}

                               目前20000+人已关注加入我们

汇编指令大全第二篇{学习笔记}