一. 總線
- 每一個
CPU
芯片都有許多管腳盟猖,這些管腳和總線相連坦弟,CPU
通過總線跟外部器件進行交互 - 總線: 一根根導線的集合
- 總線的分類:
- 地址總線
- 數(shù)據(jù)總線
- 控制總線
舉個?? :
該圖作用:
-
CPU
通過地址線找到3
號單元的地址 - 同時
CPU
通過控制線發(fā)出內存讀命令 - 內存通過數(shù)據(jù)線將
3
號單元相關數(shù)據(jù)通過數(shù)據(jù)線返回給CPU
二. 總線類別
-
地址總線:
- 它的寬度決定了
CPU
的尋址能力 -
8086
的地址總線寬度是20
,所以尋址能力是1M(2 ^ 20)
势决。
- 它的寬度決定了
數(shù)據(jù)總線
它的寬度決定了
CPU
的單次數(shù)據(jù)傳送量,也就是數(shù)據(jù)傳送速度8086
的數(shù)據(jù)總線寬度是16
,所以單次最大傳遞2
個字節(jié)的數(shù)據(jù)-
控制總線
- 它的寬度決定了
CPU
對其他器件的控制能力筑累,能有多少種控制。
- 它的寬度決定了
三. 數(shù)據(jù)總線
-
8088
的數(shù)據(jù)總線寬度是8
丝蹭,8086
的數(shù)據(jù)總線寬度是16
慢宗,分別向內側中寫入89D8H
如下圖所示:
注意:這里是16
進制,后方的H
是單詞Hexadecimal
的意思半夷。
四.練習
一個
CPU
的尋址能力為8KB
,那么它的地址總線的寬度為____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
至少要讀取____次.
答案:
解答:
因為
2 ^ 10 = 1024
,2 ^ 20 = 1024 * 1024 = 1M
;所以8K = 8 * 1024 = 2 ^ 3 * 2 ^ 10 = 2 ^ 13
婆廊。16
根地址總線就是2 ^ 16 = 64 KB
, 20根地址總線就是2 * 20 = 1M
,24
根地址總線就是2 ^ 24 = 16M
; 32根地址總線就是2^32 = 1024 * 1024 * 1024 * 2^2 = 4GB
1
根數(shù)據(jù)線能傳輸1bit
巫橄,8
根數(shù)據(jù)線能傳輸1
字節(jié)淘邻,所以16
根2
字節(jié),32
根4
字節(jié)湘换。因為
8086
數(shù)據(jù)有16
根數(shù)據(jù)線宾舅,每次可以傳輸2
個字節(jié),80386
有32
根數(shù)據(jù)線彩倚,一次可以傳輸4
個字節(jié)筹我,所以8086
至少要讀512
字節(jié),80386
至少要讀256
字節(jié)帆离。
五. 內存
- 內存地址空間的大小受
CPU
地址總線寬度的限制蔬蕊。8086
的地址總線寬度為20
,可以定位2^20
個不同的內存單元(內存地址范圍0x000000~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
個字有兩個字節(jié)組成润脸,這2
個字節(jié)分為成為字的高字節(jié)和低字節(jié) - 比如數(shù)據(jù)
2000(4E20H, 01001110000100000B)
,高字節(jié)是78
,低字節(jié)是32
.
-
1
個字可以存在1
個16位寄存器中他去,這個字的高字節(jié)毙驯,低字節(jié)分別存儲在這個寄存器的高8
位寄存器,低8
位寄存器中灾测。