什麼是內存?內存在計算機中起什麼作用呢?

愛達人編程達人


在計算機的組成結構中,用來存儲程序和數據的部件叫做存儲器。對於計算機來說,有了存儲器,才有了記憶功能,才能保證計算機的正常運轉。存儲器分為主存儲器和輔助存儲器,主存儲器又稱為內存儲器【簡稱內存】。那麼內存在計算機中起什麼作用哪?答案是內存是用來存儲計算機正在運行的程序和程序運行過程中的數據。

那麼一個正在運行的程序能佔多少內存空間哪?講解這個問題之前先介紹內存的數據位寬。

【正在運行的程序所佔的內存空間】

內存的數據位寬是指內存在運行時,一個時鐘週期內傳遞數據的位數。有8位、16位、32位、64位。【本節是在32位基礎上講解】。根據一個正在運行的程序為例講解,如圖2-5-1所示。

看圖2-5-1中用黑色矩形框選出來的部分,就是一個正在運行的程序某段程序所佔用的內存。那麼我們怎麼管理、區分這些內存哪?可以用內存編號來管理、區分。我們知道最小的數據寬度是字節。每一個字節對應一個單位,形成相應的編號,這些編號我們把它稱作“內存地址”。圖2-5-1中內存編號是32位的,由4個字節組成,32位的尋址範圍是00000000~FFFFFFFF,那麼最大的尋址範圍是FFFFFFFF+1。

1Byte = 8Bit

1KB = 1024Byte

1MB =1024KB

1GB=1024MB

將FFFFFFFF+1轉化成十進制為4294967296字節,4294967296 Byte/1024/1024/1024=4GB這裡就回答了,一個正在運行的程序能佔4GB內存空間。那麼這4GB內存空間是不是都可以訪問哪?答案是否定的。這4GB內存空間是一個程序能訪問的最大範圍,真正能訪問的是該程序已經向操作系統申請的內存,有對應物理內存映射的。如圖2-5-2所示。

圖2-5-2

內存與物理內存、內存條的映射關係

舉例說明:如圖2-5-3當前計算機只有3G內存,一共有29個進程,那29*4GB=116GB,這明顯不科學。一個正在運行的程序,它的最大尋址範圍是4GB,而它是虛擬內存,只有向操作系統申請了內存,有相對應的物理映射,我們才能使用。物理上的內存和我們使用的內存條中間還有一層映射。

介紹了內存知識,那我們該如何使用內存?

【使用內存】

2.4節中介紹了MOV指令,MOV指令可以把立即數移動到寄存器,也可以把寄存器的數據移動到寄存器。

在本節中的MOV指令,可以讀取內存:

1、將立即數存入內存中;

2、將寄存器中的數據存入到內存中。

【注意:寬度要統一。】

例1、將立即數存入到內存中:

1、MOV BYTE PTR DS:[0x12FFC4],0x1

2、MOV WORD PTR DS:[0x12FFC8],0x1

3、MOV DWORD PTR DS:[0x12FFCC],0x1

【語法:MOV寬度(BYTE\\WORD\\ DWORD)PTR DS:[地址編號],立即數。BYTE表示寬度為一個字節,WORD表示寬度為兩個字節,DWORD表示寬度為四個字節,PTR指的是指針point,DS:段寄存器,[]裡面寫內存編號,表示已經申請過的內存。】

打開DTDebug.exe將例1輸入到彙編窗口中。如圖2-5-4所示。

按F8單步運行,觀察堆棧窗口的變化,如圖2-5-5所示。

例2、將寄存器中的數據存入到內存中:

1、MOV BYTE PTR DS:[0x12FFC4],AL

2、MOV WORD PTR DS:[0x12FFC8],CX

3、MOV DWORD PTR DS:[0x12FFCC],EDX

【語法:MOV寬度(BYTE\\WORD\\ DWORD)PTR DS:[地址編號],寄存器。】

將例2輸入到彙編窗口中。如圖2-5-6所示。

按F8單步運行,觀察堆棧窗口的變化,如圖2-5-7所示。

【內存和寄存器的區別】

寄存器是處理器(CPU)用來存儲數據的。無論是8位、16位和32位的寄存器所有的加起來,它們的數量也是有限的,如果我們存儲的數據非常多的話,僅靠這些寄存器存儲數據是不夠的。

寄存器:數量少,在CPU的內部,速度極快,但是價格昂貴;

內存:數量龐大,相對寄存器來說,速度慢很多,價格便宜。

---摘自本人所著編程達人內部教材《彙編、C語言基礎教程》,謝謝!


愛達人編程達人


內存就像人體靈魂系統,有信息儲備。神是靈,我們人類是按神的形象造的,所以有靈魂系統,就是自由意識。神造萬物各按其實成為美好,又將永生安置在人心裡,然而神至此至終的作為,人不能知道。相信耶穌!罪得赦免!靈魂永生!耶穌降世,為要拯救罪人,除他以外別無拯救,因為沒有賜下別的名,我們可以靠他得救。


分享到:


相關文章: