32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间
1、每個應用進程都會有自己獨立的4GB內存空間
?
這句話很多人聽起來可能會很矛盾很不解。
例如,我的電腦只有2GB的內存,打開個軟件機會占用4GB內存,而我的電腦內存只有2GB,顯然不夠用,但是為什么程序還能在我的電腦上流暢運行呢?因為程序占用的這4GB內存是一個空頭支票,知識口頭上說給你4GB內存,其實沒有全部給你,而是你用到多少就會從物理內存中給你多少。
2、內存地址
內存地址不像寄存器那樣只有幾個,內存地址有非常多所以起名字的時候都是用編號,每塊內存地址都有其唯一的編號,就像寄信的地址一樣,我們滅此用到這塊內存時都會根據它的地址去尋找這塊內存。
每個編號(內存地址)對應的內存塊的容量最少是8位,一個字節。
一個內存地址有32位。像0x00000000,是由8個16進制的數組成,1個16進制的數對應著4個2進制的位,所以4x8=32,一個內存地址有32位。
我們來算一下32位的內存空間有多大:
內存地址一共有多少個(包括0x00000000) FFFFFFFF+1=100000000
16進制內存空間: 800000000
換算成十進制 Bit: ?? 34359738368
Byte: ? 4294967296
KB: 4194304
MB: 4096
GB: 4
現在你可以知道,32位的程序最大就是尋址空間就是4GB,所以每個程序占用4GB的內存空間。
向內存中存放數據
MOV? 指令
mov指令移動數據時要保證左右兩邊的數據寬度是一樣的。
絕大部分指令是不能把數據從內存移動到內存的。
(1)、立即數到內存
?? mov byte ptr ds:[0146FCF4],1
? ? 將立即數1,寫入內存地址為0146FCF4 的地方
mov :指令
byte:寫入數字的大小(1個字節)?? word:2個字節 dword:4個字節
ptr ds:[] :寫入內存的哪個地址
1??? :要寫入的數據
?
(2)、寄存器到內存
mov dword ptr ds:[0146FCFC],esp
? 將esp寄存器里面的值寫入內存地址為014FCFC的內存空間
?
?
(3)內存到寄存器
? mov esp,dword ptr ds:[0x0146FCF8]
? 將內存中的值存入寄存器。
?
轉載于:https://www.cnblogs.com/chuijingjing/p/9266959.html
總結
以上是生活随笔為你收集整理的32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提升命令行效率的Bash快捷键
- 下一篇: 一些意想不到的小bug。