匯編一

(一)匯編語言特點

機器語言

學(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)存

8086的CPU

此處:

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

FFFFF 個數(shù)16^5 ? 最大值16^5-1

(六)寄存器

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


尋址到紅色,控制告訴讀,寄存器中加1,尋址到藍(lán)色,控制告訴寫,傳遞數(shù)據(jù)4到藍(lán)色


寄存器的空間一般和數(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


以上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容