指令

作者: FX喂你袋盐 | 来源:发表于2017-11-13 21:40 被阅读26次

1、32位通用寄存器

EAX EXC EDX EBX ESP EBP ESI EDI

2、16位通用寄存器

AX XC DX BX SP BP SI DI

3、8位通用寄存器

AH  AL

XH XL

DH DL

BH BL

4、寄存器的结构

EAX-AX-AH-AL

5、内存单元:字节---每个字节都有编号,称为内存地址。

操作指定的内存:8位内存、16、32位内存

内存中的存放方式是倒叙的。与堆栈中的数据反序。

命令:db 0x88ff1c 查看  反序

dd  0x88ff1c 查看 正序

6、基础汇编指令

1)移动 mov

mov eax,0x1234

mov eax,ecx

2)减 sub

mov eax,0x3

sub eax,0x2

3)加 add

mov eax,0x2

add eax,0x3

4)内存存储、读取

存储:mov dword ptr ds:[0x0015FF1C],0x1234

读取:mov eax,dword ptr ds:[0x0015FF1C]

5)ADC带进位的加法

adc al,cl

6)sbb带进位的减法

sbb al,cl

7)XCHG 交换数据

SCHG al,cl

8) movs 移动数据 内存--内存、

movs dword ptr es:[0x1245ff2d],dword ptr ds:[0x1245ff2e]

movsd 加上D 的意思是,调用esi edi寄存器中存放的值

9)STOS将al\ah\ax\eax通用寄存器里的值存储到EDI指定的内存单元中

stos dword ptr es:[edi]

10)REP 按计数寄存器(ecx)中指定的次数重复执行字符串指令

mov ecx,10

rep movsd

rep stosd

--------------------------------------------

修改EIP的一些指令

11)JMP

jmp 0x418356F1

堆栈、寄存器 无影响

12)CALL

为了CALL能成功,跳之前下断点

call 0x418356F1

RETN

执行完,会出堆栈,push 一个跳转之前额度下一跳地址,俗称 返回地址

13)RET

----------------------------------------------------

JCC

14)CMP 比较两个值

与sub的不同,cmp 只是比较,修改标志位,不会修改通用寄存器

cmp  eax,ecx

15)TEST  进行与运算操作。

主要是判断是否为空。为空Z位为1,否则为0

-------------------------------------------------------

相关文章

网友评论

      本文标题:指令

      本文链接:https://www.haomeiwen.com/subject/atetvxtx.html