總線
每一個CPU芯片都有許多管腳,這些管腳和總線相連,CPU通過總線跟外部器件進行交互
總線:一根根導線的集合
總線的分類:地址總線、數(shù)據(jù)總線、控制總線
地址總線
它的寬度決定了CPU的尋址能力
8086的地址總線寬度是20,所以尋址能力是1M( 2^20 )
數(shù)據(jù)總線
它的寬度決定了CPU的單次數(shù)據(jù)傳送量,也就是數(shù)據(jù)傳送速度
8086的數(shù)據(jù)總線寬度是16,所以單次最大傳遞2個字節(jié)的數(shù)據(jù)
控制總線
它的寬度決定了CPU對其他器件的控制能力、能有多少種控制
必須記住
1K( 2^10 )1M( 2^20 )1G( 2^30 )
1字節(jié)(Byte/B)=8位(Bit)
小練習
一個CPU 的尋址能力為8KB,那么它的地址總線的寬度為____
思路:從KB可知從10條線開始(1K=2^10 ),8K=1K*2^3.
8080,8088,80286,80386 的地址總線寬度分別為16根,20根,24根,32根.那么他們的尋址能力分別為多少____KB, ____MB,____MB,____GB?
8080,8088,8086,80286,80386 的數(shù)據(jù)總線寬度分別為8根,8根,16根,16根,32根.那么它們一次可以傳輸?shù)臄?shù)據(jù)為:____B,____B,____B,____B,____B,
從內存中讀取1024字節(jié)的數(shù)據(jù),8086至少要讀____次,80386至少要讀取____次.
內存
內存地址空間的大小受CPU地址總線寬度的限制。8086的地址總線寬度為20,可以定位2^20個不同的內存單元(內存地址范圍0x00000~0xFFFFF),所以8086的內存空間大小為1MB
0x00000~0x9FFFF:主存儲器。可讀可寫
0xA0000~0xBFFFF:向顯存中寫入數(shù)據(jù),這些數(shù)據(jù)會被顯卡輸出到顯示器。可讀可寫
0xC0000~0xFFFFF:存儲各種硬件\系統(tǒng)信息。只讀
寄存器
內部部件之間由總線連接
對程序員來說,CPU中最主要部件是寄存器,可以通過改變寄存器的內容來實現(xiàn)對CPU的控制
不同的CPU,寄存器的個數(shù)、結構是不相同的(8086是16位結構的CPU)
8086有14個寄存器,都是16位的寄存器,可以存放2個字節(jié)
通用寄存器
AX、BX、CX、DX這4個寄存器通常用來存放一般性的數(shù)據(jù),稱為通用寄存器(有時也有特定用途)
通常,CPU會先將內存中的數(shù)據(jù)存儲到通用寄存器中,然后再對通用寄存器中的數(shù)據(jù)進行運算
假設內存中有塊紅色內存空間的值是3,現(xiàn)在想把它的值加1,并將結果存儲到藍色內存空間
CPU首先會將紅色內存空間的值放到AX寄存器中:mov ax,紅色內存空間
然后讓AX寄存器與1相加:add ax,1
最后將值賦值給內存空間:mov 藍色內存空間,ax
AX、BX、CX、DX這4個通用寄存器都是16位的,如下圖所示
上一代8086的寄存器都是8位的,為了保證兼容, AX、BX、CX、DX都可分為2個獨立的8位寄存器來使用
H代表高位寄存器
L代表低位寄存器
字和字節(jié)
匯編的數(shù)據(jù)存儲中,有2個比較常用的單位
字節(jié):byte,1個字節(jié)由8bit組成,可以存儲在8位寄存器中
字:word,1個字由2個字節(jié)組成,這2個字節(jié)分別稱為字的高字節(jié)和低字節(jié)
比如數(shù)據(jù)20000(4E20H,0100111000100000B),高字節(jié)的值是78,低字節(jié)的值是32
1個字可以存在1個16位寄存器中,這個字的高字節(jié)、低字節(jié)分別存儲在這個寄存器的高8位寄存器、低8位寄存器中。