(一)匯編語言特點
機器語言
學(xué)習(xí)匯編語言,首先要了解機器語言。
1.直接訪問各種硬件設(shè)備,例如存儲器、CPU等,最大限度發(fā)揮硬件的功能。
2.不受編譯器限制。
3.代碼簡短,占用內(nèi)存少,執(zhí)行速度快。
4.不易編寫、調(diào)試、維護(hù)。
5.每種CPU對應(yīng)匯編指令集
(二)匯編用途
1.編寫驅(qū)動、操作系統(tǒng)。
2.可與高級語言混合使用。
(三)匯編種類
1.8086匯編
2.Win32匯編
3.Win64匯編
4.ARM匯編(嵌入式、Mac、iOS)
。。。。
iOS系統(tǒng)

(四)總線
地址總線、數(shù)據(jù)總線、控制總線。

1.地址總線
CPU告訴內(nèi)存,我要定位你的哪一個地址:尋址。
寬度決定了CPU的尋址能力。
內(nèi)存中一字節(jié)為單位。
1字節(jié)=1Byte=8bit位

例如:10根總線的尋址能力是2^10 = 1024 = 1B
? ? ? ? ? ? 20根總線的尋址能力是2^20 = 2^10 * 2^10 = 1024*1024 = 1M 對應(yīng)的內(nèi)存地址有1Mb
尋址能力為1KB == 1024 = 2^10 ? 10跟
尋址能力為8KB = 8*2^10 = 2^(10+3)
2.控制總線
CPU告訴內(nèi)存,我要讀還是寫
3.數(shù)據(jù)總線
內(nèi)存把計算結(jié)果傳給CPU
寬度決定了CPU單次數(shù)據(jù)的傳送量,傳送速度:吞吐量
16根的數(shù)據(jù)總線,單次傳遞最大的是2個字節(jié)
64位CPU單次可以傳遞最大8個字節(jié)
(五)內(nèi)存

此處:
111: ? ?表達(dá)的個數(shù)是2^3 ?表示的最大的值是2^3-1
FFFFF 個數(shù)16^5 ? 最大值16^5-1

(六)寄存器
1.對于程序員,CPU最關(guān)鍵的部件就是寄存器,通過改變寄存器去控制CPU

寄存器的空間一般和數(shù)據(jù)總線的大小一致。
字節(jié)與字
字節(jié):1byte 1字節(jié)有8bit
字:2byte 2字節(jié) 16bit ?所以16位的CPU可以直接存一個字
(七)8086的尋址方式
1.CPU訪問內(nèi)存單元時,要給出內(nèi)存單元的地址,所有的內(nèi)存單元都有唯一的地址,叫做物理地址
2.8086有20位地址總線,可以傳送20位的地址,1M(2^10)的尋址能力
:0x56FFF
3.但它又是16位結(jié)構(gòu)的CPU,它內(nèi)部能夠一次性處理、傳輸、暫時存儲的地址為16位。如果將地址從內(nèi)部簡單地發(fā)出,那么它只能送出16位的地址,表現(xiàn)出來的尋址能力只有64KB(2^16)
:0xFFFF
8086采用一種在內(nèi)部用2個16位地址合成的方法來生成1個20位的物理地址

0xFFFA5 = 0xFFFA0 + 0x0005 = 0xFFFA * 0x10 + 0x0005
物理地址 = 段地址 * 0x10 +偏移地址
0xFFFA:0x0005 --> 0xFFF0:0x00A5 -->0xFF00:0x0FA5