暫存器與記憶體的區別
1.暫存器位於cpu內部,執行速度快
2.記憶體速度相對慢,但是成本低,所以可以做得很大
3.暫存器和記憶體沒有本質區別,都是儲存資料的容器,都是定寬的
4.暫存器常用的八個:eax,ecx,edx,ebx,esp,ebp,esi,edi
5.計算機中的幾個常用計量單位:byte,word,dword
6.記憶體數量特別龐大,無法每乙個記憶體單元都起乙個名字,所以用編號代替,我們稱計算機cpu是32位或者64位的,有很多書說32位計算機是因為暫存器的寬度是32位,是不準確的,因為還有很多暫存器是大於32位
byte 位元組 8bit
word 字 16bit 2位元組
dword 雙字 32bit 4位元組
1kb =
1024byte
1mb =
1024kb
1gb =
1024mb
每乙個位元組都會有乙個編號,有32根線,每一根線0和1,這根線有不同組合代表他能尋找的範圍
如0x0000000
0x0000001
0x0000002
…0xfffffffff
所以每一塊記憶體都有乙個編號,記憶體中的編號以位元組為單位,所以乙個32位計算機,能尋找的位址編號有1+ffffffff個,總共有4294967296(十進位制)種,除以1024(k),再除1024(m),再除1024(g),得到4gb,所以三十二位計算機能識別最大記憶體就是4g
所以32位計算機跟暫存器沒有關係,是最大能查詢的定址寬度(記憶體範圍)的關係(注意是正常定址,不是最大定址,32位計算機也可以安裝8g的ram)
如圖為記憶體格式
每個單元寬度為8,一位元組
【編號】,加中括號和立即數分開,如【0x00000000】即為編號,就是位址
寫16位的數
mov [
0x12345678],
0xffff
//不推薦這樣寫,要指定記憶體寬度
mov word ptr ds:
[0x12345678],
0xffff
word表示記憶體的寬度,ptr表示後面是位址,ds:是固定寫法
注意:記憶體位址不要亂寫,因為記憶體是有保護的,並不是所有記憶體都能讀寫
一定要指定記憶體寬度,因為他比暫存器大,暫存器可以直接捨棄,他是一大塊的,不能捨棄
寫入如圖**,按下f8執行,沒有報錯,但是這個有很多空間不能訪問,應該是異常
小技巧:esp裡面的位址,一定是允許的
成功修改esp裡面的值
右下角位址可以隨便用
注意:這裡可以看到右下角的數字是每四個編一次號,因此可以存32位,上面的結構圖也可以得到解釋
輸入mov eax,dword ptr ds:[0x11f74]
得到上圖
第四章 繼承
一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...
第四章 物件
三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...
第四章 其他
sizeof和strlen 區別sizeof以位元組為單位給出資料的大小,strlen 函式以字元為單位給出字串的長度。使用strlen 函式要加 include標頭檔案。sizeof計算字元時會將標誌字串結束的不可見的空字元計算在內。定義符號常量 方法一 define name value 優點 ...