通用寄存器内存

一、32位通用寄存器

寄存器 主要用途
eax 累加器
ecx 计数器
edx I/O指针
ebx DS段的数据指针
esp 堆栈指针
ebp SS段的数据指针(堆栈栈底)
esi 字符串操作的源指针;SS段的数据指针
edi 字符串操作的目标指针;ES段的数据指针
32位 16位 8位
EAX AX AH/AL
ECX CX CH/CL
EDX DX DH/DL
EBX BX BH/BL
ESP SP
EBP BP
ESI SI
EDI DI

通用寄存器内存

二、内存

寄存器与内存的区别:
1、寄存器位于CPU内部,执行速度快,价格昂贵,毕竟一分钱一分货。
2、内存速度相对较慢,但是成本低,可以扩展。
3、寄存器和内存本质都是存储数据的容器,都是定宽的。
4、1KB = 1024BYTE
5、1MB = 1024KB
6、1GB = 1024MB

我们称计算机CPU是32位或者64位,主要指的就是内存编号的宽度,而不是寄存器的宽度。

地址编号 存储内容(字节)
0x00000000 0x80
0x00000001 0x90
0x00000002 0xAF
0xFFFFFFFF 0x32

三、内存读写

1、寻址公式一:[立即数]
读取内存:mov eax,dword ptr ds:[0x0018ff94]
写入内存:mov dword ptr ds:[0x0018ff80],eax
获取内存地址:lea eax,dword ptr ds:[0x0018ff90]

2、寻址公式二:[寄存器]
读取内存:
mov ecx,0x0015FEFC
mov eax,dword ptr ds:[ecx]
写入内存:
mov edx,0x0018FE0C
mov dword ptr ds:[edx],0x12345678
获取内存地址:
lea eax,dword ptr ds:[edx]
mov eax,dword ptr ds:[edx]

3、寻址公式三:[reg+立即数]
读取内存:
MOV ECX,0x13FFD0
MOV EAX,DWORD PTR DS:[ECX+4]
写入内存:
MOV EDX,0x13FFD8
MOV DWORD PTR DS:[EDX+0xC],0x87654321
获取内存地址:
LEA EAX,DWORD PTR DS:[EDX+4]
MOV EAX,DWORD PTR DS:[EDX+4]

4、寻址公式四:[reg+reg*{1,2,4,8}]
读取内存:
MOV EAX,13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX+ECX4]
写入内存:
MOV EAX,13FFC4
MOV ECX,2
MOV DWORD PTR DS:[EAX+ECX
4],87654321
获取内存地址:
LEA EAX,DWORD PTR DS:[EAX+ECX*4]

5、寻址公式五:[reg+reg*{1,2,4,8}+立即数]
读取内存:
MOV EAX,13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX+ECX4+4]
写入内存:
MOV EAX,13FFC4
MOV ECX,2
MOV DWORD PTR DS:[EAX+ECX
4+4],87654321
获取内存地址:
LEA EAX,DWORD PTR DS:[EAX+ECX*4+2]