組合語言 2

WINNER9898發表於2018-10-04

計算機硬體組成部分

  1. 控制器
  2. 運算器
  3. 儲存器
  4. 輸入裝置
  5. 輸出裝置

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)

 

 

 

 

 

 

相關文章