Intel 8086 —— CPU硬體類
陶土跟糞土沒有什麼兩樣
文章目錄
- 第三章
8086內部結構
BIU(匯流排介面單元):完成CPU與儲存器或I/O裝置之間資料傳送
EU(執行單元):與BIU並行工作,執行BIU傳送的指令
8086暫存器
通用暫存器:AX 1 (累加器):存放運算結果,存低16位
BX(基址暫存器):存放運算元在資料段的基址
CX(計數器):多用於記錄程式迴圈次數
DX(資料暫存器):計算32位資料時,DX存高16位;存放I/O埠地址
SP(堆疊指標暫存器):對PUSH和POP的堆疊指令加減2,SP始終指向棧頂
BP(基址暫存器):存放運算元在堆疊段的基址
SI(源變址暫存器):源串在資料段的偏移地址
DI(目的變址暫存器):目的串在資料段的偏移地址
段暫存器: CS(程式碼段暫存器):儲存 程式段 段地址,多不被ASM程式訪問
DS(資料段暫存器):儲存 資料段 段地址,多用於資料定址
SS(堆疊段暫存器):儲存 堆疊段 段地址,多用於保護現場
ES(附加段暫存器):儲存 程式段 段地址,存放 字串操作時的目的操作串
控制暫存器:IP(指令指標暫存器):儲存下一條指令在程式碼段的偏移地址,不能被ASM程式訪問
FLAGS(狀態標誌暫存器):16位用了9位,包括控制標誌位
FLAGS
狀態標誌位:CF(進位):運算時 最高位發生進位或借位時,CF = 12
PF(奇偶):運算結果 低8位中含有偶數個1時,PF = 1
AF(輔助進位):運算結果 低8位中低4位向高4位發生進位或借位時,AF = 1
ZF(零):運算結果 為0時,ZF = 1
SF(符號):運算結果 最高位為1時,SF = 1
OF(溢位):運算結果 溢位時,OF = 1
控制標誌位:TF(陷阱):用於設定斷點,除錯程式
IF(中斷):用於觸發中斷
DF(方向):用於控制增減方向。STD可將DF置1,從高地址向下減;CLD可將DF置0,從低地址向上增
8086匯流排週期
一個匯流排週期 = 4個時鐘週期;T3和T4之間可插入1個或更多的TW等待週期
- 第四章
定址方式
資料定址 立即數定址:MOV AX , 1090H
暫存器定址:MOV AX , BX
儲存器定址:①直接:MOV AL , [4148H](不可段超越)
②暫存器間接:MOV AX , [SI] (或DI、BX)
③暫存器相對:MOV AL , [BP + TABLE]
MOV AL , [BP] + TABLE
MOV AL , TABLE[BP] (或BX、SI、DI)
④基址變址: MOV AX , [BP + SI]
MOV AX , [BX] [DI] (前基址(BX,BP) , 後變址(SI,DI) )
⑤基址變址相對:MOV AX , [BX + SI + COUNT]
MOV AX , [BX] [SI + COUNT]
MOV AX , [BX] [SI] + COUNT
MOV AX , [BX + SI] COUNT
MOV AX , [BX] [SI] COUNT
MOV AX , COUNT [BX] [SI]
I/O埠定址:①直接:IN AL , 21H (適用於8位埠定址,小於0FFH)
②間接:MOV DX , 120H
OUT DX , AX (適用全部埠定址,先送地址進DX)
|
|
|
|
|
|
BP 對應 SS段 |
地址定址(程式跳轉)
- 段內直接定址:程式碼段 直接位移(IP + 指令位移量)。16位用 NEAR PTR 、8位用 SHORT (近呼叫)
- 段內間接定址:資料段 取偏移地址位移(暫存器或儲存器值 + IP)。 取字用 WORD PTR
- 段間直接定址:程式碼段 取IP、CS。用 FAR PTR (遠呼叫)
- 段間間接定址:資料段 取IP、CS。取雙字用 DWORD PTR