基础知识---汇编学习笔记
第一章
1.1 機器語言
電子計算機的機器指令是一列二進制數字。計算機將之轉變成一列高低電平,以使計算機的電子器件受到驅動,進行運算。
1.2 匯編語言的產生
在這里我們發現一個問題:用0和1來描述程序,很難辨別和記憶。于是匯編語言產生了。
我們用匯編指令代替機器指令,匯編指令由編譯器翻譯成機器指令。
編譯過程:
1.3 匯編語言的組成
第一點,比如我們之前所看到的的匯編指令mov ax,bx等同于機器指令1000100111011000
第二點,后面的課程會得到體現。比如:loop h,由編譯器來執行,將h翻譯成h所在的地址
第三點,有與你們相同的疑問。
1.4 存儲器
硬盤、內存、CPU之間的關系。
內存中存放著指令和數據。CPU通過總線讀寫內存,內存可以讀寫硬盤。
1.5 指令和數據
指令和數據是應用上的概念。CPU該如何區分一列機器碼是指令還是數據呢?
1.6 存儲單元
一個存儲器有多個存儲單元,存儲單元從0開始編號。
一個存儲單元可以存儲一個字節(Byte)。
1Byte = 8bit (一個字節等于8個比特)
1.7 CPU對存儲器的讀寫
CPU想要進行數據的讀寫,必須和外部部件(標準說法是芯片,PS:因為RAM是芯片)進行下面3類的信息的交互。
- 存儲單元的地址(地址信息)
- 器件的選擇,讀或寫命令(控制信息)
- 讀或寫的數據(數據信息)
例如一個讀取過程:
上圖將讀取到 “08” 這個數據到CPU中
對于8086CPU,下面的機器碼,能過完成上圖過程。
機器碼: 101000000000001100000000
含義: 從3號單元讀取數據送入寄存器AX
機器碼難于記憶,用匯編指令代替。
機器碼: 101000000000001100000000
匯編指令: MOV AX,[3]
含義: 傳送3號單元的內容到AX
1.8 地址總線
很容易知道,地址總線的根數決定了CPU能夠讀取存儲單元的個數(這是由于二進制可表示的數據范圍)。
比如:10根地址,則可以讀取1024個存儲單元。它的數據范圍在0~1023。
公式顯而易見:可讀取存儲單元個數 = 2的地址總線根數次方
上圖指向內存中為(1101000000)2的地址,對應十進制832。
1.9 數據總線
數據總線若為8根,則一次可傳送8位二進制數據,也就是1個字節數據。
數據總線若為16根,則一次可傳送16位二進制數據,也就是2個字節數據。
8根地址總線如下:
16根地址總線如下:
上圖所做的都是傳送D8和89。兩者的區別在于,前者用了2次傳送,后者只用了1次傳送。
1.10 控制總線
CPU對外部部件的控制是由控制總線來進行的。它是一些不同控制線的集合。比如讀寫控制線屬于控制總線中的一條。而讀寫控制線只進行讀寫操作。0代表讀,1代表寫。
小結
檢測點 1.1
(1) 1個CPU的尋址能力為8KB,那么它的地址總線的寬度為 13 。
(2) 1KB的存儲器有 1024 個存儲單元。存儲單元的編號從 0 到 1023 。
(3) 1KB的存儲器可以存儲 8096 個bit,1024 個Byte。
(4) 1GB、1MB、1KB分別是 1073741824 Byte、 1048576 Byte、1024 Byte。
(5) 8080、8088、80286、80386的地址總線寬度分別為16根、20根、24根、32根,則它們的尋址能力分別為:64(KB)、1(MB)、16(MB)、4(GB)。
(6) 8080、8088、8086、80286、80386的數據總線寬度分別為8根、8根、16根、16根、32根。則它們一次可以傳送的數據為:1(B)、1(B)、2(B)、2(B)、4(B)。
(7) 從內存中讀取1024字節的數據,8086至少要讀512次,80386至少要讀256次。
(8) 在存儲器中,數據和程序以二進制形式存放。
1.11 內存地址空間(概述)
什么是內存空間呢?
比如,一個CPU的地址總線寬度為10,那么可以尋址1024個內存單元(或者說存儲單元),這1024個可尋的內存單元就構成這個CPU的內存地址空間。
1.12 主板
每臺PC都有一個主板。
主板上有核心器件和一些主要器件。這些器件通過總線相連。(總線包括三種:地址總線、數據總線、控制總線)
這些器件有CPU、存儲器、外圍芯片組、擴展插槽等。(PS:擴展插槽一般插有RAM內存條和各類接口卡)
1.13 接口卡
CPU對外設不能直接控制。直接控制這些設備進行工作的是插在擴展插槽上的接口卡。
擴展插槽通過總線和CPU相連,所以接口卡也通過總線同CPU相連。CPU直接控制這些接口卡,從而實現CPU對外設的間接控制。
也就是CPU通過總線想接口卡發送命令,接口卡根據CPU的命令控制著外設
1.14 各類存儲器芯片
從讀寫屬性上可以分為兩類:隨機存儲器(RAM)和只讀存儲器(ROM)。
隨機存儲器(RAM):可讀可寫,必須帶電存儲,關機后存儲內容丟失。
只讀存儲器(ROM):只讀無法寫,關機后內容不丟失。
隨機存儲器
用于存放供CPU使用的絕大部分程序和數據,主隨機存儲器一般由兩個位置上的RAM組成,裝在主板上RAM和插在擴展插槽上的RAM。
裝有BIOS(Basic Input/Output System,基本輸入輸出系統)的ROM
BIOS是由主板和各類接口卡(顯卡、網卡等)廠商提供的軟件系統,可以通過BIOS進行硬件設備最基本的輸入輸出。主板和某些接口卡上存儲相應的BIOS的ROM。(PS:也就是主板的ROM上有屬于主板的BIOS、顯卡的ROM上有屬于顯卡BIOS。有BIOS我們就可以驅動主板和顯卡等其他設備)
接口卡上的RAM
某些接口卡需要對大批量輸入、輸出數據進行暫時存儲,在其上裝有RAM。最典型的的是顯卡上的RAM,一般稱為顯存。顯示卡隨時將顯存中的數據向顯示器上輸出。換句話說,我們將需要顯示的內容寫入顯存,就會出現在顯示器上。(PS:這也是為什么游戲那么吃顯卡的原因,所以要學游戲的小伙伴,該好好學怎么驅動顯卡跟數字圖形學哦~)
用一張圖描述上面所講(圖中可以知道網卡也有BIOS):
1.15 內存地址空間
前面的那些存儲器,在物理上是獨立的器件,但是在以下兩點上相同。
- 都和CPU的總線相連
- CPU對他們進行讀或寫的時候都是通過控制線發出內存讀寫命令。
也就是說,CPU控制它們的時候,把它們都當作內存來對待,把它們總的看作一個“由若干個存儲單元”組成的“邏輯存儲器”,這個邏輯存儲器就是我們所說的內存地址空間。
邏輯存儲器概念圖:
我們在基于一個計算機硬件系統編程的時候,必須知道這個系統中的內存地址空間分配情況。(PS:比如我們要在顯示器上面顯示一些東西,可以改顯存地址空間的內容實現,而不是用高級語言封裝起來的圖形庫編程來實現。)
8086PC機內存地址空間分配的基本情況:
最終運行程序的是CPU,我們用匯編語言編程的時候,必須要從CPU的角度考慮問題。對CPU來講,系統中的所有存儲單元都處于一個統一的邏輯存儲器中,它的容量受CPU尋址能力的限制。這個邏輯存儲器即是我們所說的內存地址空間。
總結
以上是生活随笔為你收集整理的基础知识---汇编学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《编码的奥秘》---学习编程一年半的体会
- 下一篇: 中国游戏公司研运一体发展专题分析2020