当前位置:   article > 正文

汇编指令大全第二篇_返回0的汇编指令

返回0的汇编指令

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

 

## 汇编指令 

 

### 寄存器

 

#### 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 程序结束

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号