寄存器都有名字,内存有名字么?

没有,因为寄存器少,就哪几个。可以起个名字。内存太多了,只能给起一个编号。

这个编号又叫内存地址。(32位的)
就是说:内存地址的范围是 0~ffffffff 。每一个内存块大小是 1字节。就是8位。

为什么说每个程序都会有自己独立的4GB内存空间?

当然不是真正的4GB空间。比如我电脑一共才4G大小,开了一个软件就分配4G,可能么?这个只是一个空头支票。就是说,当你程序运行的时候,需要内存,可以在内存中(内存条,假设这4GB大小空间)中存数据。

为什么是4GB呢???

因为,数量是 ffffffff +1 = 4294967295+1 = 4294967296 (十进制)

内存块大小是 1字节

4294967296 *1 /1024 /1024 /1024 = 4G

向内存中写数据

比如我想向内存写一个4个字节的值。但是我们知道,一个内存地址是有1个字节大小,那我们需要声明四个内存地址么???

不用,它会自动往后写,连续的内存地址写。这个不用我们管!!!

写值的时候宽度一定要一样

立即数 —>内存

比如这个。DWORD 我们已经声明要放4个字节大小。然后1的话,会默认前面加7个0. (16进制)

  1. MOV DWORD PTR DS:[18FFFC],1

寄存器 —>内存

这个也可以,因为EAX 是4字节大小。

  1. MOV DWORD PTR DS:[18FFFC],EAX

这个不行,因为AX是2个字节。前面声明的是4个字节。对不上号。

  1. MOV DWORD PTR DS:[18FFFC],AX