1. 程式人生 > >Intel 8086 —— CPU硬體類

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)

基址
變址
位移量
BX、BP
SI、DI
COUNT(disp_8/disp_16)
BX 對應 DS段
BP 對應 SS段

地址定址(程式跳轉)

  1. 段內直接定址:程式碼段 直接位移(IP + 指令位移量)。16位用 NEAR PTR 、8位用 SHORT (近呼叫)
  2. 段內間接定址:資料段 取偏移地址位移(暫存器或儲存器值 + IP)。 取字用 WORD PTR
  3. 段間直接定址:程式碼段 取IP、CS。用 FAR PTR (遠呼叫)
  4. 段間間接定址:資料段 取IP、CS。取雙字用 DWORD PTR

  1. AX可分為AH和AL,BX、CX、DX也相同,不再贅述 ↩︎

  2. 否則為0,不再贅述 ↩︎