滴水逆向筆記系列-1.進位制-2.資料寬度_邏輯運算-3.通用暫存器_記憶體讀寫

小新07發表於2024-03-14

第一課 進位制

這節課講進位制計算的核心就是查表
image.png
例:3+5,就是從上表的3開始往後數五個數,10
image.png
例:46則是看作6+6+6+6,6+6由上表可知為14,14再往後數12個數得出為46=30
image.png
八進位制複雜計算(文字比較難說明,但是大致還是和我們十進位制的計算方式一樣,只是九九乘法表換成上面三張表
image.png

作業

image.png
1.成立。可以以5進位制計算
(老師答案是元素可以自定義,如:0 2 3 1 8 7 6 9 5 4)
2+3等於在2這個符號往後數2個數字,因為按0123456789算,3這個位置在2,所以往後數2個數字
2.C B 5 4 E B 5 7 B 4 A B
-577536813.png
image.png
<1>image.png

進位制2

image.png
還是想告訴我們進位制要用查表的思想去思考也就是計算機的思考方式去思考,但是到這裡我還沒悟透老師怎麼做的含義,覺得很麻煩
image.png(這裡下面的+1理解成往後數一個數
直到看到這張表,順序被打亂了,才知道為什麼需要查表,如果還按照計算的方式去思考,這裡會亂
如果只用查表的方式,把數字當作符號,而不是數字,就能完成後面的題目

作業

4進位制定義:由4個符號組成,分別是:3、8、2、4,逢4進1
答、
image.png
image.png
1、
image.png
2、
image.png

第二課 資料寬度_邏輯運算

1.資料

按照圓圈理解
有符號數與無符號數是人類自由定義的,計算機只認得0和1
而且這裡可以按照平時講的補碼驗證一下,0-7是正數,8-F是負數,8到F的十六進位制都是1開頭(1000,1001,1010....1111)對應著平時說的1開頭即是負數
image.png
image.png
image.png
image.png

2.計量單位

BYTE 位元組 = 8(BIT) 一位元組
WORD 字 = 16(BIT) 兩位元組
DWORD 雙字 = 32(BIT) 四位元組

1KB = 1024BYTE
1MB = 1024KB
1GB = 1024MB

3.邏輯運算

1.或(or |)運算

只要有一個1就是1
image.png

2.與(and &&)運算

兩個都為1才是1
image.png

3.異或(xor ^)運算

不一樣就是1(圖片運算處縮排有問題)
image.png

4.非(not !)

1是0,0是1
image.png

5.左移( << )

image.png

邏輯運算具體運用:

1.cpu加法運算原理
想異或運算再and運算,左移1後結果不全為0,則繼續用異或出來的數與左移出來的結果去異或和and運算,迴圈至左移1後結果全為0

image.png

2.如果想獲取某個值的第N位的值是多少?
image.png
想知道第四位的值是0或1,就在and第四位下為1,其他位為0,之後看結果,若第四位結果為1,則第四位就為1,反之為0。

4.暫存器

image.png

作業

image.png
1、在32位中十進位制的-3十六進位制表示為FFFFFFFD,八進位制則表示為題目結果,可參考上面的圓形圖
3、

第三課 通用暫存器_記憶體讀寫

暫存器

image.png
32位暫存器和16位和8位都存在包含關係
image.png

mov等常用指令語法

mov:(不可mov edx,[ebx-0x4])注意語法
image.png
image.png
image.pngimage.pngimage.pngimage.png

暫存器與記憶體

1.暫存器和記憶體沒有本質區別,都是用於儲存資料的容器
2.暫存器位於CPU內部,執行速度快但是比較貴
3.記憶體速度相對較慢,但成本較低,所以可以做的很大
4.記憶體的數量特別龐大,無法每個記憶體單元都起一個名,,所以用編號來代替◇我們稱計算機 CPU 是32位或者64位◇
有很多書上說之所以叫32位計算機是因為暫存器的寬度是32位,是不準確的,因為還有很多暫存器是大於32位的。
計算機記憶體的每一個位元組會有一個編號(即記憶體編號的單位是位元組),如下圖
image.png
我的個人理解是一塊記憶體就是1位元組,32位(32個0和1)用十六進位制表示則為8bit,然後我們可以給他排編號,最大編號為FFFFFFFF的記憶體,注意這是十六進位制的FFFFFFFF,它是從0開始的,所以一共可以有FFFFFFFF+1=100000000塊記憶體,轉化為十進位制,可以算出有4,294,967,296這麼多塊記憶體,因為一塊記憶體1位元組,4,294,967,296位元組除以1024=4,194,304kb=4,096mb=4G
最後是4G,說明32位的計算機能識別的最大記憶體就是4G,因為他只能有這麼多塊記憶體,記憶體定址最大範圍只有4G,甚至實際使用的記憶體小於4G,因為有些硬體固定佔著那些記憶體了

  • 32位能識別的記憶體最多是4G(×)不一定,可以透過打補丁等形式擴充

記憶體

image.png

相關文章