寄存器都有名字,内存有名字么?
没有,因为寄存器少,就哪几个。可以起个名字。内存太多了,只能给起一个编号。
这个编号又叫内存地址。(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进制)
MOV DWORD PTR DS:[18FFFC],1
寄存器 —>内存
这个也可以,因为EAX 是4字节大小。
MOV DWORD PTR DS:[18FFFC],EAX
这个不行,因为AX是2个字节。前面声明的是4个字节。对不上号。
MOV DWORD PTR DS:[18FFFC],AX