我们称计算机CPU是32位或者64位,有很多书上说之所以叫32位计算机是因为寄存器的宽度是32位,这样说是不准确的,因为还有很多寄存器是大于32位的。多少位的机器和寄存器的宽度没有关系,和计算机的寻址宽度有关系,所能查找的内存编号的范围。
内存格式
- 每一个内存单元的宽度为8位。
-
[编号]
称为地址。 - 内存单元:字节 每个字节有个编号,称为内存地址
从指定的内存中写入/读取数据
mov dword ptr ds:[0x0012FF34], 0x12345678
mov eax, dword ptr ds:[0x0012FF34]
dword
: 要读/写多少字节(byte
== 1字节,word
== 2字节,dword
== 4字节)
ptr
: Point 代表后面是一个指针
ds
: 段寄存器
0x0012FF34
: 内存编号,必须是32位的(对于32位汇编),前面的0可以省略
注意:地址编号不要随便写,因为内存是有保护的,并不是所有的内存都是可以直接读写(需要特别处理)。做练习时,建议地址编号写成esp的值。
寻址公式
- 寻址公式一:[