滴水逆向 07 (通用寄存器

滴水逆向 07 (通用寄存器,第1张

滴水逆向 07 (通用寄存器

1.通用寄存器

例:AX寄存器本身就在EAX里面,为了便于记忆,可以理解为EAX的后一半或者前一半就为AX。同理可得,AL本身就在AX里,,,,,,,,,,,,,,

   

1.MOV指令

(1)代码演示(占位):

MOV EAX,OxAAAAAAAA

MOV AX,OxBBBB

MOV AH,OxCC

MOV AL,OxDD

MOV( *** 作码)后面的第一个为目标 *** 作数,第二个为源 *** 作数。

作用:拷贝源 *** 作数到目标 *** 作数。

①源 *** 作数可以是立即数,通用寄存器,段寄存器,或者内存单元,

②目标 *** 作数可以是通用寄存器,段寄存器,或者内存单元。

③ *** 作数的宽度,必须一样。

④源 *** 作数和目标 *** 作数不能同时为内存单元。

MOV ECX,EAX: 是把先前EAX的值复制一份放到ECX中。

(2)MOV的语法

MOV r/m8,r8MOV r/m16,r16MOV r/m32,r32MOV r8,r/m8MOV r16,r/m16MOV r32,r/m32MOV r8,imm8MOV r16,imm16MOV r32,r/m32

r为通用内存器   m代表内存   imm代表立即数

即:r8为8位通用内存器,m8代表8位内存,imm8代表8位立即数。(最大8位,可输入小于8位的,其余位自动补0)

2.ADD指令(加法指令)

ADD AL,imm8ADD AX,imm16ADD EAX,imm32ADD r/m8,r8ADD  r/m16,r16ADD r/m32,r32ADD r8,r/m8ADD r16,r/m16ADD r32,r/m32ADD r/m8,imm8ADD  r/m16,imm16ADD r/m32,imm32ADD r/m16,imm8ADD  r/m32,imm8

3.SUB指令(减法指令)

SUB AL,imm8SUB AX,imm16SUB EAX,imm32SUB r/m8,r8SUB  r/m16,r16SUB r/m32,r32SUB r8,r/m8SUB r16,r/m16

SUB r32,r/m32

SUB r/m8,r8SUB  r/m16,r16SUB r/m32,r32SUB r/m16,imm8SUB  r/m32,imm8

4.逻辑指令

(1)AND指令

(2)OR指令

(3)XOR指令

  前三个指令书写格式与ADD,SUB指令相同,仅仅变前三个大写字母,在这里不多进行表示。

(4)NOT指令

NOT r/m8NOT r/m16NOT r/m32

5.寄存器与内存的区别

(1)寄存器位于CPU内部,执行速度快,但比较贵。

(2)内存速度相对较慢,但成本低,所以可以做得很大。

(3)寄存器和内存没有本质区别,都适用于存储数据的容器,都是定宽的。

(4)寄存器通常有八个,EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI.

(5)计算机中有几个常用计量单位:BYTE,WORD,DWORD

BYTE    字节=8(BIT)

WORD    字 =16(BIT)

DWORD    双字 =32(BIT)

1 KB=1024 BYTE

1 MB=1024 KB

1 GB=1024 MB

6.内存的数量特别庞大,无法每个内存单元都起一个名字,所以要用编号来代替,我们称计算机CPU是32位或者64位,有很多书上之所以叫32位计算机,是因为寄存器的宽度是32位,是不准确的,因为还有很多寄存器都是大于32位的。

32位计算机:是因为计算机的寻址编号是32位的。

32位计算机的编号最大是32位,也就是32个1,换成16进制为FFFFFFFF,也就是说,32位计算机内存寻址的最大范围是0~4G,内存的单位是字节,那内存中能存储的信息最多为FFFFFFFF+1,即4G.。

但 32位的计算机,能识别的内存最多不一定为4G ,有的 *** 作系统可以改变寻址范围。 

7.内存的格式

 

(1)每个内存的单元宽度为8。

(2)[编号]称为地址。

(3)地址的作用,当我们想从内存中读取数据或者想向内存写入/读取数据。

例:mov word ptr DS:[Ox12345678],OxFFFF    其中word为(要读/写多少)宽度

又或者 mov eax,dword prt ds:[Ox1234556]

prt:Point代表后面是一个指针(指针的意思就是里面存的不是普通的值,而是个地址)

ds:段寄存器

[]内的是:内存编码,必须是32位,前面的0可以省略

注意:地址编码不要随便写,因为内存是有保护的,并不是所有的内存都可以直接读写(需要特别处理),建议地址编码写成esp的值。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5702304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存