計算機硬體組成部分:
- 控制器
- 運算器
- 儲存器
- 輸入裝置
- 輸出裝置
CPU(中央處理器)= 運算器(資訊處理)+控制器(控制各種器件)+暫存器(資訊儲存)+內部匯流排(連線,資料傳送)
暫存器 百度詞條
暫存器是中央處理器內的組成部分。暫存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、資料和地址。包括通用暫存器、專用暫存器和控制暫存器。暫存器擁有非常高的讀寫速度,所以在暫存器之間的資料傳送非常快。
暫存器是程式設計師在CPU中可以用指令讀寫的部件,可以通過改變各種暫存器中的內容來實現對CPU的控制
8086CPU中的14個暫存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW (預設為8086CPU)
通用暫存器
AX,BX,CX,DX 常用來存放一般性資料 (16位存放16位資料)‘’
其中每一個暫存器都可以分為可兩個獨立使用的8位暫存器使用(AX->AH(高)+AL(低); BX->BH+BL ...)
例:
暫存器 暫存器中的資料 值
AX 0100111000100000 20000(4E20H)
AH 01001110 78(4EH)
AL 00100000 32(20H)
位元組(byte) 8 bit
字(word) 16 bit 高位位元組+地位位元組
例:
彙編指令(不區分大小寫) 高階語言描述
mov ax,18 AX=18
mov ah,78 AH=78
add ax,8 AX=AX+8
mov ax,bx AX=BX
add ax,bx AX=AX+BX
注:16位暫存器只能存放4位十六位制(若超出則需捨去)
8位暫存器只能存放2位十六進位制
錯誤示例:
mov ax,bl 錯誤原因:在8位暫存器和16位暫存器之間傳遞資料
mov bh,ax 錯誤原因:在16位暫存器和8位暫存器之間傳遞資料
mov al,20000 錯誤原因:8位暫存器的最大存放值為255
add al,100H 錯誤原因: 將一個高於8位的資料存放到一個8位暫存器之中
16位(字長)結構:
1. 運算器一次最多處理16位的資料
2. 暫存器的最大寬度為16位
3. 暫存器和運算器之間的通路是16位
4.外部資料匯流排與記憶體一次能夠傳送16位資料
每一個記憶體單元在儲存空間中都有唯一的地址稱為實體地址
8086CPU 16位結構有20位地址匯流排,可以傳送20位資料,定址能力為1MB
8086在內部用兩個16位地址(一個段地址,一個偏移地址) 通過計算(地址加法器)合成得到一個20位的實體地址。
實體地址 = 段地址 × 16 + 偏移地址(其中段地址 ×16 可以看做 基礎地址)
段:邏輯上的概念
可以根據需要,將地址連續、起始實體地址為16倍數的一組記憶體單元(不超過64KB)當作一個「段」使用。
注:CPU可以通過不同的段地址和偏移地址形成同一個實體地址
段暫存器
CS和IP:
CS為程式碼段暫存器,IP為指令指標暫存器,它們指示了CPU當前要讀取指令的地址(在任何時候,CPU將CS和IP中的內容當做指令的段地址和偏移地址)
設CS中的內容為M,IP中的內容為N,8086CPU將從M×16+N(CS : IP)單元開始,讀取一條指令並執行
工作流程:
1) 從CS : IP指向的記憶體單元讀取資料指令, 讀取的資料進入指令緩衝器
2) IP=IP+所讀取指令的長度, 從而指向下一個指令
3) 執行命令, 轉到步驟1), 並重複流程
8086剛啟動時 CS : IP -> FFFF : 0000
jmp 段地址 : 偏移地址
例:
jmp 2AE3:3 CS=2AE3H, IP=0003H, CPU從2AE33出讀取指令
jmp 某一合法暫存器
功能:用暫存器中的內容修改IP(含義好似 mov IP,ax)