汇编语言(1)- 计算机基础
一、機器語言
機器語言是機器指令的集合,機器指令就是一臺機器可以正確執行的命令。電子計算機的機器指令就是一列二進制數據,計算機將其轉換為一列高低電平,使計算機的電子器件受到驅動,進行運算。
二、匯編語言
1. 特點
匯編語言的主體使匯編指令,匯編指令和機器指令的差別在于表示的方法上,匯編指令是便于記憶的書寫格式
例如:
機器指令:1000100111011000 表示把BX寄存器的內容發送到 AX寄存器中
匯編指令:mov ax,bx
2. 匯編語言的組成
- 匯編指令:機器碼的助記符,有對應的機器碼
- 偽指令:沒有對應的機器碼,由編譯器執行
- 其他符號:如 +、-、*、/ 等
3. 存儲器
cpu是計算機的核心部件,控制整個計算機的運作并進行運算,想要cpu工作就必須提供指令和數據,指令和數據就存放再存儲器中。
4. 指令和數據
指令和數據只是應用上的概念,在內存或磁盤上,指令和數據沒有任何區別,都是二進制信息,CPU工作時把有的信息看作指令,有的信息看作數據,為同樣的信息賦予了不同的意義。只有在使用時,才會有意義
5. 存儲單元
特點:存儲器被劃分成若干個存儲單元,每個存儲單元從 0 開始編號。每個存儲器可以存儲 128個Byte,而一個存儲單元可以存儲1個Byte
6. CPU對存儲器的讀寫
CPU要從內存中讀取數據時需要與外部器件(芯片)進行下面3類的信息交互
- 存儲單元的地址(地址信息)
- 器件的選擇,讀或者寫(控制信息)
- 讀或寫的數據(數據信息)
電子計算器能處理,傳輸的信息都是電信號,電信號需要使用導線進行傳送,而計算機中有專門連接CPU和其他芯片的導線,通常稱為 總線
- CPU通過地址線發送出存儲單元3信息
- CPU通過控制線發出內存讀的命令,選中存儲器芯片,并且通知它,將要從中讀取數據(或者寫命令)
- 存儲器將3號單元的數據通過數據線送入CPU(或者將數據送入存儲單元3中)
如何操作CPU進行數據的讀取?
機器碼:101000010000001100000000
含義:從3號存儲單元讀取數據送入寄存器AX
匯編指令:MOV AX,[3]
7. 總線
7.1 地址總線
CPU是通過地址總線來指定存儲單元的,也就是說地址總線上能傳送多少個不同的信息,CPU就可以對多少個存儲單元進行尋址。
例如:一個CPU有10根地址總線,而一根導線可以傳送的穩定的狀態為高電平和低電平兩種狀態,也就是1和0,而10位二進制數據可以傳送2的10次方,最小數為0,最大數為1023。一個CPU有N根地址線,則可以說這個CPU最多可以尋找2的N次方個內存單元
7.2 數據總線
CPU與內存或其他器件之間的數據傳輸是通過數據總線來進行傳輸的,數據總線的寬度決定了CPU和外界的數據傳輸速度。8根數據總線一次可以傳送一個8位二進制數據(一個字節),16根數據總線一次可以傳輸2個字節。
8088CPU數據總線的寬度為8位,8086CPU的數據總線寬度位16位。所以8088傳輸一個 89D8 數據到內存中,需要分成兩次傳輸
7.3 控制總線
CPU對外部器件的控制是通過控制總線進行的。控制總線是一些不同控制線的集合,有多少根控制總線,就意味著CPU提供了對外部器件的多少種控制。控制總線的寬度決定了CPU對外部器件的控制能力
前面說到的內存讀或寫命令,是由幾根控制線綜合發出的,其中有一根稱為“讀信號輸出”,還有一根稱為“寫信號輸出”的控制線
檢測點
8. 內存地址空間
例如:一個CPU的地址總線的寬度為10,那么就是1024個存儲單元,而這1024個可尋的存儲單元就構成了內存地址空間。而我們所用的 64位CPU,理論上來說尋址能力可以達到 200多wTB
9. 主板和接口卡
主板:每一臺PC機都有主板,主板上有核心器件和主要器件,這些器件通過總線相連。例如:CPU、存儲器、外圍芯片組、擴展插槽。擴展插槽一般有RAM內存條和各類接口卡
接口卡:所有程序控制其工作的設備,必須受到CPU的控制。如顯示器、音響這類設備都是通過擴展插槽上面的接口卡與CPU想連,而接口卡又是通過總線同CPU想連。CPU可以直接通過控制這些接口卡,實現對外設的簡介控制
10. 各類存儲芯片
從獨寫屬性上看分為兩類:隨機存儲器(RAM)、只讀存儲器(ROM)
RAM:可讀可寫,必須帶電存儲,關機后存儲內容丟失
ROM:只能讀取不能寫入,關機后內容不丟失
- 隨機存儲器:存放供CPU使用的絕大部分程序和數據
- 裝有BIOS的ROM:BIOS是由主板和各類接口卡廠商提供的軟件系統,可以通過它利用該硬件設備進行最基礎的輸入輸出
- 接口卡上的RAM:某些接口卡需要對大批量輸入、輸出數據進行暫時存儲,在其上裝有RAM。最典型的就是顯卡的顯存
11. 內存地址空間
CPU在控制上訴器件的時候,都把它們當作內存來對待,把它們總的看作一個由若干個存儲單元組成的邏輯存儲器,這個邏輯存儲器就是我們所說的內存地址。
假設上圖中的內存地址空間的地址段分配如下:
- 0 - 7FFFH 的 32KB 空間為主RAM的地址空間
- 8000H - 9FFFH 的 8KB空間為顯存地址空間
- A000H - FFFFH的24KB空間為各個ROM的地址空間
cpu向地址為1000H的內存單元中寫入數據,這個數據就會被寫入主隨機存儲器中;
cpu向地址為8000H的內存單元中寫入數據,這個數據就被寫入顯卡中,然后會被顯卡輸出到顯示器上;
內存地址空間的大小受CPU地址總線寬度的限制,總線寬度為20,那么可以傳送 2^20 個不同的地址信息,就是1MB;同理總線寬度為32,內存地址空間的最大為 4GB。所以當我們想在某類存儲器中讀寫數據時,必須要知道第一個單元的地址和最后一個單元的地址;比如我們要將數據顯示在屏幕上,就必須要知道顯存的內存地址空間是多少。
不同的計算器內存地址的分配是不同的,下面是8086CPU的內存地址劃分
00000 - 9FFFF 相當于在獨寫 主存儲器中的數據;A0000 - BFFFF 相當于在操作顯存中的數據;C0000 - FFFFF 操作是無效的,因為ROM是只讀存儲器
最終運行程序的是CPU,我們用匯編語言的時候,必須要從CPU的角度考慮問題,系統中所有的存儲器的存儲單元都處于一個統一的邏輯存儲器中,它的容量受CPU的尋址能力的限制
總結
以上是生活随笔為你收集整理的汇编语言(1)- 计算机基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【软件工程】软件过程各种模型的理解[ 瀑
- 下一篇: 10天背单词(适用于6级、考研、考博、G