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

admin 2021年5月20日19:12:39评论45 views字数 3815阅读12分43秒阅读模式

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


## 汇编指令 


### 寄存器


#### 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+人已关注加入我们

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


本文始发于微信公众号(Ms08067安全实验室):汇编指令大全第二篇{学习笔记}

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月20日19:12:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   汇编指令大全第二篇{学习笔记}https://cn-sec.com/archives/292991.html

发表评论

匿名网友 填写信息