計算機器記憶體數量 引入和顯示ARDS成員

2021-07-05 08:21:18 字數 2268 閱讀 4485

conclusion:(乾貨)

每次中斷,都把不同記憶體段的 位址範圍描述符結構體 copy 到 緩衝區_memchkbuf中,顯然,整個記憶體是分為多個記憶體段的,然後記憶體段是由位址範圍描述符結構體(ards)來描述的。

(由圖知:ards的size=20bytes)

2.2)讀取記憶體資料並顯示

; call  dispmemsize; 由保護模式的 顯示記憶體資訊 跳轉到這裡

dispmemsize:

push esi

push edi

push ecx

; _memchkbuf: times 256 db 0

; memchkbuf equ _memchkbuf - $$

; $$ == label_data

mov esi, memchkbuf ; 他就是 存放記憶體描述符結構體 的 緩衝區,共256個位元組,每個結構體=20位元組,所以最多存放12個結構體

; _ardstruct: ; address range descriptor structure 位址範圍描述符結構體

; _dwbaseaddrlow: dd 0 基位址低32位

; _dwbaseaddrhigh: dd 0 基位址高32位

; _dwlengthlow: dd 0 長度的低32位

; _dwlengthhigh: dd 0 長度的高32位

; _dwtype: dd 0 這個位址範圍的位址型別

mov ecx, [dwmcrnumber]; 外迴圈 for(int i=0;i

.loop: ; 就這樣迴圈下去吧,直到為0為止;

call dispreturn ; printf("\n");

cmp dword [dwtype], 1 ; if(type == addressrangememory)(該段記憶體可用的話) , 此刻的 dwtype 是由line_349從緩衝區寫入的,cur_line_357;

jne .2 ; ; type==addressrangereserved (該段記憶體不可用的話)

loop .loop ;}

;call dispreturn ;printf("\n");

push szramsize ; _szramsize db "ram size:", 0 ;字串以 0 結尾

call dispstr ;printf("ram size:");

add esp, 4 ;

;push dword [dwmemsize] ;

call dispint ;dispint(memsize);

add esp, 4 ;

pop ecx

pop edi

pop esi

ret

**步驟:(乾貨)step1)首先要知道,上一段**已經算出了記憶體段(塊)的個數 dwmcrnumber 和 吧 記憶體各個ards copy 到了緩衝區memchkbuf中,我們這裡的**需要用這個個數 dwmcrnumber 和這個 儲存有 各個 ards 資料的緩衝區memchkbuf;

step2)通過雙迴圈,讀取每個ards的各個成員的值並列印,外迴圈個數為記憶體段(塊)個數,內迴圈個數=5(因為ards有5個成員), 並將緩衝區中每個 ards 暫存在 ards結構中,以便下面**取變數值;

step3)繼續說迴圈,內迴圈結束後,比較dwtype(記憶體塊型別),判斷該記憶體段是否可用,不可用,進入下一次外迴圈;若可用,繼續判斷dwbaseaddrlow(基位址的低32位) + dwlengthlow(長度的低32位) 是否大於最大記憶體位址dwmemsize, 總之dwmemsize 取 它們和的最大值;外迴圈ending

step4)最後列印出 最大記憶體位址 dwmemsize;

計算機器記憶體數量 引入和顯示ARDS成員

conclusion 乾貨 每次中斷,都把不同記憶體段的 位址範圍描述符結構體 copy 到 緩衝區 memchkbuf中,顯然,整個記憶體是分為多個記憶體段的,然後記憶體段是由位址範圍描述符結構體 ards 來描述的。由圖知 ards的size 20bytes 2.2 讀取記憶體資料並顯示 cal...

顯示計算機上所有程序和程序的記憶體資訊

顯示程序資訊 include include include include include include void printmemoryinfo dword processid int main bool bmore process32first hprocesssnap,pe32 while...

計算機記憶體和磁碟的關係

上篇文章詳細講了計算機記憶體的物理結構,邏輯結構以及在記憶體的基礎上理解幾種常見的資料結構。但是,計算機系統出了記憶體之外,還有乙個非常重要的硬體,那就是磁碟。他們都是用於計算機儲存,但是記憶體是利用電流來實現儲存,而磁碟是利用磁效應來實現儲存,並且,從儲存容量來看,記憶體是高速 而磁碟則是低速廉價...