二进制安全
常见汇编语言指令表
00 分钟
2022-6-30
2024-11-11
type
status
date
slug
summary
tags
category
icon
password
指令
示例
含义
说明
MOV
MOV EAX,ECX
EAX = ECX
将ECX的值存入EAX
ADD
ADD EAX,ECX
EAX += ECX
将EAX的值加上ECX的值
SUB
SUB EAX,ECX
EAX -= ECX
将EAX的值减去ECX的值
INC
INC EAX
EAX++
将EAX的值加一(+1)
DEC
DEC EAX
EAX- -
将EAX的值减一(-1)
LEA
LEA EAX,[ECX+4]
EAX = ECX + 4
将ECX+4的值存入EAX
CMP
CMP EAX,ECX
if(EAX == ECX){ZF = 1}else{ZF = 0}
将两个值进行比较并根据结果设置标志,若EAX与ECX不同,则ZF = 1,若EAX与ECX相同,则ZF = 0
TEST
TEST EAX,EAX
if(EAX==0){ZF=1}else{ZF=0}
将值与0进行比较,并根据结果设置标志,若EAX为0,则ZF=1,若EAX不为0,则ZF=0
JE(JZ)
JE 04001000
if(ZF==1){GOTO 0x04001000}
若ZF为1,则跳转到0x04001000
JNE(JNZ)
JNE 04001000
if(ZF==0){GOTO 0x04001000}
若ZF为0,则跳转0x04001000
JMP
JMP 04001000
GOTO 0x04001000
无条件跳转到0x04001000
CALL
CALL main
main()
调用main函数
PUSH
PUSH 00000001
压栈(将值送入栈中)
将00000001入栈
POP
POP EAX
弹栈(将值送出栈外)
出栈并出栈的值存入EAX
AND
AND EAX,EBX
按位与运算
1011与0010做与运算(相同1才为1)所以为0010
OR
OR EAX,EBX
按位或运算
1011与0010做或运算(有一为一)所以为1011
NOT
NOT EAX
按位非运算
1010做非运算(0与1反过来)所以为0101
XOR
XOR EAX,EBX
按位异或运算
1011与0010做异或运算(相同为0,不同为1)所以为1001

说明

上一次运算结果为0,则ZF寄存器为1(如果运算结果为1,则ZF寄存器为0)
上一篇
2022CISCN初赛WriteUp
下一篇
2024 鹏城杯初赛WriteUp(RE)