前面我们学了寄存器,它本身就是用来存储数据的。寄存器是位于CPU当中的,无论是16位,32位还是64位,他的寄存器数量都是非常有限的。 如果要存储较多数据,仅靠CPU里面的寄存器是不够的。 我们可以把数据存放在内存当中。
我们编程时提到的内存,指的是每个进程的虚拟的4GB内存。映射到实际的物理内存。物理内存到内存条还有一层映射。
所谓4GB,由内存地址数据宽度决定的(寻址能力,寻址宽度),(2^32 +1)/1024/1024/1024= 4GB 1byte = 8 bit; 1kb= 1024b;1Mb= 1024kb;1Gb=1024Mb。
内存格式写法: mov 内存数据宽度(byte word dword) ptr ds:[内存编号],要移入内存的东西(立即数,寄存器)
注意:内存编号,不可以随便乱写,虽然说是每个进程有4G虚拟内存空间,但是不能随便乱用(可能应用程序禁止你使用这块地址)。使用之前要先申请才可以。
如何知道是否申请了?---使用堆栈区出现的内存地址。
使用move指令移动数据时,要保持两边数据宽度一致。
汇编中绝大部分的指令,是不允许从内存到内存的。
实验--执行前:
执行后: