微處理器設計/組合語言
外觀
< 微處理器設計
現存許多不同的組合語言,但它們都有一些共同點。它們都直接對映到底層硬體 CPU 指令集。
- CPU 指令集
- 是一組 CPU 理解的二進位制程式碼/指令。根據 CPU,指令可以是一個位元組、兩個位元組或更長。指令程式碼通常後跟一個或兩個運算元。
| 指令程式碼 | 運算元 1 | 運算元 2 |
指令數量取決於 CPU。
由於二進位制程式碼難以記憶,每個指令都有一個稱為助記符的名稱。例如,'MOV' 可用於移動指令。
MOV A, 0x0020
上面的指令將暫存器 A 的值移動到指定地址。
一個簡單的彙編器將把 'MOV A' 翻譯成其 CPU 的指令程式碼。
不能假設組合語言可以直接移植到其他 CPU。每個 CPU 都有自己的組合語言,儘管同一系列中的 CPU 可能會支援有限的移植性
這些指令告訴 CPU 將資料從記憶體移動到 CPU 的暫存器,或將資料從 CPU 的暫存器移動到記憶體。
- 暫存器
- 是位於 CPU 內部的專用記憶體,可以在其中執行算術運算。
可以使用 CPU 的暫存器執行算術運算
- 增加 CPU 暫存器之一的值
- 減少 CPU 暫存器之一的值
- 將值新增到暫存器
- 從暫存器中減去值
- 乘以暫存器值
- 除以暫存器值
- 移位暫存器值
- 旋轉暫存器值
在跳轉指令期間,程式計數器載入一個新的地址,該地址不一定是下一個順序指令的地址。跳轉後,程式執行從記憶體中的新位置繼續。
- 相對跳轉
- 指令的運算元告訴程式計數器應該增加或減少多少位元組。
- 絕對跳轉
- 指令的運算元被複制到程式計數器;運算元是執行應該繼續的絕對記憶體地址。
在分支期間,程式計數器載入多個新值之一,具體取決於某些指定的條件。分支是一系列條件跳轉。
一些 CPU 具有跳過指令。如果暫存器為零,則跳過下一條指令,否則執行下一條指令,該指令可以是跳轉指令。因此,可以透過將跳過和跳轉指令一起使用來完成分支。
