1. 程式人生 > >微機原理複習整理

微機原理複習整理

第一章 微型計算機系統概述

1. 微型計算機系統組成

  1. 微處理器:運算器、控制器、暫存器
  2. 微型計算機:輸入輸出介面、匯流排、記憶體
  3. 微型計算機系統:由硬體和軟體共同組成的完整的計算機系統

    2. 系統匯流排

  • 地址匯流排AB
    • 輸出將要訪問的記憶體單元或I/O埠的地址
    • 地址線的多少決定了系統直接定址儲存器的範圍
  • 資料匯流排DB
    • CPU讀操作時,外部資料通過資料匯流排送往CPU
    • CPU寫操作時,CPU資料通過資料匯流排送往外部
    • 資料線的多少決定了一次能夠傳送資料的位數
  • 控制匯流排CB
  • 協調系統中各部件的操作,有輸出控制、輸入狀態等訊號
  • 控制匯流排決定了系統匯流排的特點,例如功能、適應性等

    3. 基於8088CPU的PC微機系統結構

    4. 微處理器(CPU)內部結構

  • 指令處理單元(控制器):對機器指令譯碼,產生指令執行所需的控制信號,並按照指令規定的時序將控制訊號傳送到CPU內部各器件或傳送到匯流排。

  • 算術邏輯單元(運算器):接收到控制器發出的各種運算控制訊號後,執行相應運算,並影響相應標誌位。

  • 暫存器組:CPU內用於暫時存放資料、地址的儲存單元,CPU從記憶體讀取指令、在記憶體中讀寫資料,均需要這些暫存器完成定址、暫存的功能。其中標誌暫存器能夠間接影響程式執行流程

  • 8088的內部結構從功能分成兩個單元
  1. 匯流排介面單元BIU——管理8088與系統匯流排的介面,負責CPU對儲存器和外設進行訪問
  2. 執行單元EU——負責指令的譯碼、執行和資料的運算
  3. 兩個單元相互獨立,分別完成各自操作
    兩個單元可以並行執行,實現指令取指和執行的流水線操作

8088 CPU 外部特性與 IBM PC匯流排結構

image

1. 8088的兩種組態模式

  • MN/MX*接高電平為最小組態模式
  • MN/MX*接低電平為最大組態模式

    2. 8088最小組態的引腳訊號

    1. 資料和地址引腳
  1. AD7~AD0
  • 地址/資料分時複用引腳,雙向、三態
  • 在訪問儲存器或外設的匯流排操作週期中,這些引腳在第一個時鐘週期輸出儲存器或I/O埠的低8位地址A7~A0
  • 其他時間用於傳送8位資料D7~D0
  1. A15~A8(Address)
    中間8位地址引腳,輸出、三態
    這些引腳在訪問儲存器或外設時,提供全部20位地址中的中間8位地址A15~A8
  2. A19/S6~A16/S3(Address/Status)
  • 地址/狀態分時複用引腳,輸出、三態
  • 這些引腳在訪問儲存器的第一個時鐘週期輸出高4位地址A19~A16
  • 在訪問外設的第一個時鐘週期全部輸出低電平無效
  • 其他時間輸出狀態訊號S6~S3
  • S6始終為低;
  • S5為標誌暫存器的中斷允許標誌的狀態位,它在每一個時鐘週期開始時被修改;
  • S4和S3用以指示是哪一個段暫存器正在被使用,00為ES,01為SS,10為CS,11為DS。
  • 在DMA方式時這4條線處於高阻狀態

    2. 讀寫控制引腳
  1. ALE(Address Latch Enable)
  • 地址鎖存允許,輸出、三態、高電平有效
  • ALE引腳高有效時,表示複用引腳:AD7~AD0和A19/S6~A16/S3正在傳送地址資訊

  • 由於地址資訊在這些複用引腳上出現的時間很短暫,所以系統可以利用ALE引腳將地址鎖存起來
  1. IO/M*(Input and Output/Memory)
  • I/O或儲存器訪問,輸出、三態

  • 該引腳輸出高電平時,表示CPU將訪問I/O埠,這時地址匯流排A15~A0提供16位I/O口地址

  • 該引腳輸出低電平時,表示CPU將訪問儲存器,這時地址匯流排A19~A0提供20位儲存器地址
  1. WR*(Write)
  • 寫控制,輸出、三態、低電平有效
  • 有效時,表示CPU正在寫出資料給儲存器或I/O埠
  1. RD*(Read)
  • 讀控制,輸出、三態、低電平有效
  • 有效時,表示CPU正在從儲存器或I/O埠讀入資料
  1. READY
  • 儲存器或I/O口就緒,輸入、高電平有效
  • 在匯流排操作週期中,8088CPU會在第3個時鐘週期的前沿(下降沿)測試該引腳
    如果測到高有效,CPU直接進入第4個時鐘週期
    如果測到無效,CPU將插入等待週期Tw
  • CPU在等待週期中仍然要監測READY訊號,有效則進入第4個時鐘週期,否則繼續插入等待週期Tw
  1. DEN*(Data Enable)
  • 資料允許,輸出、三態、低電平有效
  • 有效時,表示當前資料匯流排上正在傳送資料,可利用他來控制對資料匯流排的驅動
  1. DT/R*(Data Transmit/Receive)
  • 資料傳送/接收,輸出、三態
  • 該訊號表明當前總線上資料的流向
    高電平時資料自CPU輸出(傳送)
    低電平時資料輸入CPU(接收)
  1. SS0*(System Status 0)
    最小組態模式下的狀態輸出訊號
  • 它與IO/M和DT/R一道,通過編碼指示CPU在最小組態下的8種工作狀態:

    3. 中斷請求和響應引腳
  1. INTR(Interrupt Request)
  • 可遮蔽中斷請求,輸入、高電平有效
  • 有效時,表示請求裝置向CPU申請可遮蔽中斷
  • 該請求的優先級別較低,並可通過關中斷指令CLI清除標誌暫存器中的IF標誌、從而對中斷請求進行遮蔽
  1. INTA*(Interrupt Acknowledge)
  • 可遮蔽中斷響應,輸出、低電平有效
  • 有效時,表示來自INTR引腳的中斷請求已被CPU響應,CPU進入中斷響應週期
  • 中斷響應週期是連續的兩個,每個都發出有效響應訊號,以便通知外設他們的中斷請求已被響應、並令有關裝置將中斷向量號送到資料匯流排
  1. NMI(Non-Maskable Interrupt)
  • 不可遮蔽中斷請求,輸入、上升沿有效
  • 有效時,表示外界向CPU申請不可遮蔽中斷
  • 該請求的優先級別高於INTR,並且不能在CPU內被遮蔽
  • 當系統發生緊急情況時,可通過他向CPU申請不可遮蔽中斷服務

    4. 匯流排請求和響應引腳
  1. HOLD
  • 匯流排保持(即匯流排請求),輸入、高電平有效
  • 有效時,表示匯流排請求裝置向CPU申請佔有匯流排
  1. HLDA(HOLD Acknowledge)
  • 匯流排保持響應(即匯流排響應),輸出、高電平有效
  • 有效時,表示CPU已響應匯流排請求並已將匯流排釋放
  • 此時CPU的地址匯流排、資料匯流排及具有三態輸出能力的控制匯流排將全面呈現高阻,使匯流排請求裝置可以順利接管匯流排
  • 待到匯流排請求訊號HOLD無效,匯流排響應訊號HLDA也轉為無效,CPU重新獲得匯流排控制權
  1. RESET
  • 復位請求,輸入、高電平有效
  • 該訊號有效,將使CPU回到其初始狀態;當它再度返回無效時,CPU將重新開始工作
    8088/86復位後
    CS=FFFFH、IP=0000H,
    所以程式入口在實體地址FFFF0H
  1. CLK(Clock)
    時鐘輸入

    5. 其它引腳
  2. MN/MX*(Minimum/Maximum)
    組態選擇,輸入
  3. TEST*
    測試,輸入、低電平有效

    6. 8088的基本匯流排時序
  4. 匯流排時序描述CPU引腳如何實現匯流排操作
  • 描述匯流排操作的微處理器時序有三級:
    指令週期 → 匯流排週期 → 時鐘週期
  • 指令週期是指一條指令經取指、譯碼、讀寫運算元到執行完成的過程。若干匯流排週期組成一個指令週期
  • 匯流排週期是指CPU通過匯流排操作與外部(儲存器或I/O埠)進行一次資料交換的過程
  • 8088的基本匯流排週期需要4個時鐘週期
  • 匯流排操作中如何實現CPU與記憶體、介面晶片間的時序同步是關鍵
  • 同步時序:
    各部件都以系統時鐘訊號為基準
    當相互不能配合時,快速部件(CPU)插入等待狀態等待慢速部件(I/O和儲存器)
  • 非同步時序:
    CPU與外設介面通過應答聯絡訊號實現同步操作

    7. 8088最小組態的匯流排時序
  • 儲存器讀匯流排週期
  • 儲存器寫匯流排週期
  • I/O讀匯流排週期
  • I/O寫匯流排週期

    8. 8088最大組態中的引腳定義
  • 有些控制訊號不相同,主要是用於輸出操作編碼訊號,由匯流排控制器8288譯碼產生系統控制訊號:
  • LOCK*——匯流排封鎖訊號
  • S2、S1、S0*——3個狀態訊號
  • QS1、QS0——指令佇列狀態訊號
  • RQ/GT0、RQ/GT1——2個匯流排請求/同意訊號

9. 8088最大組態的匯流排形成

系統地址匯流排

  1. 採用三態透明鎖存器74LS373和三態單向緩衝器74LS244
  2. 系統資料匯流排
    通過三態雙向緩衝器74LS245形成和驅動
  3. 系統控制匯流排
    主要由匯流排控制器8288形成
    MEMR、MEMW、IOR、IOW、INTA*

第五章 半導體儲存器及介面

1. 半導體儲存器的分類
  1. 讀寫儲存器RAM:SRAM.DRAM,NVRAM
  2. 只讀儲存器ROM
  • 掩膜ROM:資訊製作在晶片中,不可更改
  • PROM:允許一次程式設計,此後不可更改
  • EPROM:用紫外光擦除,擦除後可程式設計;並允許使用者多次擦除和程式設計
  • EEPROM(E2PROM):採用加電方法線上進行擦除和程式設計,也可多次擦寫
  • Flash Memory(快閃記憶體):能夠快速擦寫的EEPROM,但只能按塊(Block)擦除

    2. 半導體儲存器晶片的內部結構
  1. 每個儲存單元具有一個唯一的地址,可儲存1位(位片結構)或多位(字片結構)二進位制資料
  • 儲存容量(bits)與地址、資料線個數有關:
    晶片的儲存容量=2^M×N
    =儲存單元數×儲存單元的位數
  1. 地址譯碼電路結構
    單譯碼,雙譯碼
  2. 片選和讀寫控制邏輯
    片選端CS或CE
    有效時,可以對該晶片進行讀寫操作
    輸出OE
    控制讀操作。有效時,晶片內資料輸出
    該控制端對應系統的讀控制線
    寫WE

    控制寫操作。有效時,資料進入晶片中
    該控制端對應系統的寫控制線

    4. 隨機存取儲存器
  3. 靜態RAM(SRAM)
    image
  • SRAM的基本儲存單元是觸發器電路
  • SRAM一般採用“字結構”儲存矩陣
  • SRAM晶片2114外部特性:
    10根地址線A9~A0
    4根資料線I/O4~I/O1
    片選CS
    讀寫WE
  • SRAM晶片6264外部特性
    28個引腳:
    13根地址線A12~A0
    8根資料線D7~D0
    片選CS1、CS2
    讀寫WE
    、OE*
  1. 動態RAM
  • 每個儲存單元存放一位,晶片內每個位單元具有獨立地址
  • 需要8個儲存晶片構成一個位元組單元,每個
  • DRAM晶片4116外部特性
    • 7根地址線A6~A0,
    • 1根資料輸入線DIN,
    • 1根資料輸出線DOUT,
    • 行地址選通RAS*,
    • 列地址選通CAS*,
    • 讀寫控制WE*.
  • DRAM 4116的重新整理:採用“僅行地址有效”方法重新整理
  • DRAM晶片2164外部特性
    • 8根地址線A7~A0
      1根資料輸入線DIN
      1根資料輸出線DOUT
      行地址選通RAS
      列地址選通CAS

      讀寫控制WE*

      5. 只讀儲存器
  1. EPROM 2716
  • 11根地址線A10~A0
    8根資料線DO7~DO0
    片選/程式設計CE/PGM
    讀寫OE

    程式設計電壓VPP
  1. EPROM 2764
  • 13根地址線A12~A0
    8根資料線D7~D0
    片選CE
    程式設計PGM

    讀寫OE*
    程式設計電壓VPP
  1. EEPROM
    用加電方法,進行線上(無需拔下,直接在電路中)擦寫(擦除和程式設計一次完成)
  2. EEPROM 2717A
  • 11根地址線A10~A0
    8根資料線I/O7~I/O0
    片選CE
    讀寫OE
    、WE
    狀態輸出RDY/BUSY
  1. EEPROM 2864A
  • 13根地址線A12~A0
    8根資料線I/O7~I/O0
    片選CE
    讀寫OE
    、WE*
6. 半導體儲存器與CPU的連線
  1. 儲存晶片的資料線
  • 若晶片的資料線正好8根:
    一次可從晶片中訪問到8位資料,全部資料線與系統的8位資料匯流排相連
  • 若晶片的資料線不足8根:一次不能從一個晶片中訪問到8位資料,“位擴充”
    image
  1. 儲存晶片的地址線
  • 晶片的地址線通常應全部與系統的低位地址匯流排相連
  • 定址時,這部分地址的譯碼是在儲存晶片內完成的,我們稱為“片內譯碼
  1. 儲存晶片的片選端
  • 儲存系統常需利用多個儲存晶片擴充容量,也就是擴充了儲存器地址範圍
  • 進行“地址擴充”,需要利用儲存晶片的片選端對多個儲存晶片(組)進行定址
  • 這個定址方法,主要通過將儲存晶片的片選端與系統的高位地址線相關聯來實現
  • 這種擴充簡稱為“地址擴充”或“字擴充”

譯碼和譯碼器

全譯碼

  1. 所有的系統地址線均參與對儲存單元的譯碼定址
  2. 包括低位地址線對晶片內各儲存單元的譯碼定址(片內譯碼),高位地址線對儲存晶片的譯碼定址(片選譯碼)
  3. 採用全譯碼,每個儲存單元的地址都是唯一的,不存在地址重複
  4. 譯碼電路可能比較複雜、連線也較多

部分譯碼

  1. 只有部分(高位)地址線參與對儲存晶片的譯碼
  2. 每個儲存單元將對應多個地址(地址重複),需要選取一個可用地址
  3. 可簡化譯碼電路的設計
  4. 但系統的部分地址空間將被浪費

線選譯碼

  • 只用少數幾根高位地址線進行晶片的譯碼,且每根負責選中一個晶片(組)
  • 雖構成簡單,但地址空間嚴重浪費,必然會出現地址重複
  • 一個儲存地址會對應多個儲存單元
  • 多個儲存單元共用的儲存地址不應使用
  1. 儲存晶片的讀寫控制線
  • 晶片OE*與系統的讀命令線相連
    當晶片被選中、且讀命令有效時,儲存晶片將開放並驅動資料到匯流排
  • 晶片WE*與系統的寫命令線相連
    當晶片被選中、且寫命令有效時,允許匯流排資料寫入儲存晶片
7. 儲存晶片與CPU的配合
  1. 匯流排驅動
  • CPU的匯流排驅動能力有限
  • 單向傳送的地址和控制匯流排,可採用三態鎖存器和三態單向驅動器等來加以鎖存和驅動
  • 雙向傳送的資料匯流排,可以採用三態雙向驅動器來加以驅動
  1. 時序配合
  • 分析儲存器的存取速度是否滿足CPU匯流排時序的要求
    如果不能滿足:考慮更換晶片,匯流排週期中插入等待狀態TW

    8. 8086儲存器組織
  1. 定址空間(20位地址線)
    220=1M bytes的儲存器定址空間
    分段的概念
  2. 分段組織
    段暫存器的16位值左移4位,得到的20位值加上16位的偏移量。
  3. 字與位元組訪問
    AD0 訊號和BHE訊號組合,選擇奇偶位元組或字。

第6章 基本輸入輸出介面

I/O介面概述

  • I/O介面是位於系統與外設間、用來協助完成資料傳送和控制任務的邏輯電路
  • PC機系統板的可程式設計介面晶片、I/O匯流排槽的電路板(介面卡)都是介面電路
  1. 訊號轉換
    對訊號的形式和資料的格式進行變換
    微機直接處理:數字量、開關量、脈衝量
  2. 資料緩衝
    對輸入輸出資料進行緩衝和鎖存
    輸出鎖存緩衝環節,輸入鎖存緩衝環節
  3. 對I/O埠進行定址
  4. 與CPU和I/O裝置進行聯絡

    I/O介面的典型結構

    1. 介面電路的內部結構
  • 資料暫存器
    儲存外設給CPU和CPU發往外設的資料
  • 狀態暫存器
    儲存外設或介面電路的狀態
  • 控制暫存器
    儲存CPU給外設或介面電路的命令

    2. 介面電路的外部特性
  • 面向CPU一側的訊號:用於與CPU連線、主要是資料、地址和控制訊號
  • 面向外設一側的訊號:用於與外設連線、提供的訊號種類繁多、功能定義、時序及有效電平等差異較大

    3. 介面電路晶片的分類
  • 通用介面晶片
    支援通用的資料輸入輸出和控制的介面晶片
  • 面向外設的專用介面晶片
    針對某種外設設計、與該種外設介面
  • 面向微機系統的專用介面晶片
    與CPU和系統配套使用,以增強其總體功能

    4. 介面電路的可程式設計性

    3. I/O埠的編址

  1. 資料暫存器、狀態暫存器和控制暫存器佔有的I/O地址常依次被稱為資料埠、狀態埠和控制埠,用於儲存資料、狀態和控制資訊
  2. 兩類編排形式
  • I/O埠獨立編址

優點

    • I/O埠的地址空間獨立
    • 控制和地址譯碼電路相對簡單
    • 專門的I/O指令使程式清晰易讀

缺點

    • I/O指令沒有儲存器指令豐富
  • I/O埠與儲存器統一編址

優點:

    • 不需要專門的I/O指令
    • I/O資料存取與儲存器資料存取一樣靈活

缺點:

    • I/O埠要佔去部分儲存器地址空間
    • 程式不易閱讀(不易分清訪存和訪問外設)

      4. 8088/8086的輸入輸出指令

輸入指令
IN AL,i8    ;位元組輸入,直接定址
IN AL,DX    ;位元組輸入,間接定址
IN AX,i8    ;字輸入,直接定址
IN AX,DX    ;字輸入,間接定址
輸出指令
OUT i8,AL   ;位元組輸出,直接定址
OUT DX,AL   ;位元組輸出,間接定址
OUT i8,AX   ;字輸出,直接定址
OUT DX,AX   ;字輸出,間接定址
1. 8088/8086的I/O埠
  • 8086用於定址外設埠的地址線為16條,埠最多為216=65536(64K)個,埠號(埠地址)為0000H ~ FFFFH
  • 每個埠地址對應一個位元組空間
  1. 定址方式
  • 直接定址:只用於定址00H ~ FFH前256個埠,運算元i8表示埠號
  • 間接定址:可用於定址全部64K個埠,DX暫存器的值就是埠號,對埠號大於FFH的埠只能採用間接定址方式
  1. 資料交換
  • 如果輸入輸出一個位元組,使用AL暫存器
  • 如果輸入輸出一個字,使用AX暫存器

    5. I/O地址的譯碼

    6. 資料傳送方式

  • 程式控制下的資料傳送:通過CPU執行程式中的I/O指令來完成傳送,又分為:無條件傳送、查詢傳送、中斷傳送
  • 直接儲存器存取(DMA)——傳送請求由外設向DMA控制器(DMAC)提出,後者向CPU申請匯流排,最後DMAC利用系統匯流排來完成外設和儲存器間的資料傳送
  • I/O處理機——CPU委託專門的I/O處理機來管理外設,完成傳送和相應的資料處理

    1. 無條件傳送方式及其介面

  • 在CPU與慢速變化的裝置(或簡單裝置)交換資料時,可以認為它們總是處於“就緒”狀態,隨時可以進行資料傳送
  • 適合於簡單裝置,如LED數碼管、開關等

next:   mov dx,8000h    ;DX指向資料埠
        in al,dx    ;從輸入埠讀開關狀態
        not al  ;反相
        out dx,al   ;送輸出埠顯示
        call delay  ;調子程式延時
        jmp next    ;重複
2. 查詢傳送方式及其介面
  • CPU需要先了解(查詢)外設的工作狀態,然後在外設可以交換資訊的情況下(就緒)實現資料輸入或輸出
  • 對多個外設的情況,則CPU按一定順序依次查詢(輪詢
  • 查詢傳送的特點是:工作可靠,適用面寬,但傳送效率低
//查詢輸入介面程式示例
    mov dx,8000h    ;DX指向狀態埠
    status: in al,dx    ;讀狀態埠
    test al,01h ;測試標誌位D0
    jz status   ;D0=0,未就緒,繼續查詢
    inc dx  ;D0=1,就緒,DX指向資料埠
    in al,dx    ;從資料埠輸入資料
//查詢輸出介面程式示例
  mov dx,8000h  ;DX指向狀態埠
  status:   in al,dx    ;讀取狀態埠的狀態資料
    test al,80h ;測試標誌位D7
    jnz status  ;D7=1,未就緒,繼續查詢
    inc dx  ;D7=0,就緒,DX指向資料埠
    mov al,buf  ;變數buf送AL
    out dx,al   ;將資料輸出給資料埠
//查詢方式的EEPROM程式設計
next:   mov al,55h  ;寫入內容=55H
        mov [bx],al ;寫入儲存單元
        nop ;空操作指令,起延時作用
        nop
next1:  in al,dx    ;查詢狀態口
        test al,01h ;測試D0
        jz next1    ;D0=0,晶片還在寫入
        inc bx  ;D0=1,寫畢,指標移動
        loop next   ;迴圈至全部位元組寫完
3. 中斷傳送方式
  • 中斷請求 =>中斷響應=>關中斷=>斷點保護=>中斷識別=>現場保護=>中斷服務=>恢復現場=>開中斷=>中斷返回
  • 中斷傳送是一種效率更高的程式傳送方式
  • 進行傳送的中斷服務程式是預先設計好的
  • 中斷請求是外設隨機向CPU提出的

    4. DMA傳送方式
  • CPU對DMA控制器進行初始化設定
  • 外設、DMAC和CPU三者通過應答訊號建立聯絡:CPU將匯流排交給DMAC控制
  1. DMA傳送
    DMA讀儲存器:儲存器 → 外設
    DMA寫儲存器:儲存器 ← 外設
  2. 自動增減地址和計數,判斷傳送完成否

傳送方式的比較

  • 無條件傳送:慢速外設需與CPU保持同步
  • 查詢傳送: 簡單實用,效率較低
  • 中斷傳送:外設主動,可與CPU並行工作,但每次傳送需要大量額外時間開銷
  • DMA傳送:DMAC控制,外設直接和儲存器進行資料傳送,適合大量、快速資料傳送

第7章 中斷控制介面

1. 8088中斷系統

  • 8088的中斷系統採用向量中斷機制
  • 能夠處理256箇中斷
  • 用中斷向量號0~255區別
  • 可遮蔽中斷還需要藉助專用中斷控制器Intel 8259A實現優先權管理

    1. 8088的中斷型別
  • 內部中斷:除法錯中斷、指令中斷、溢位中斷、單步中斷
  • 外部中斷:非遮蔽中斷、可遮蔽中斷

    2. 8088的中斷響應過程
    image
  • 8088各種中斷源的優先權,實際上是指被識別出來的先後
  • 多種中斷同時請求時,最先響應的則可能是單步中斷或NMI中斷
    image

    3. 8088的中斷向量表
  • 中斷向量:中斷服務程式的入口地址(首地址)
  • 邏輯地址含有段地址CS和偏移地址IP(32位)
  • 每個中斷向量的低字是偏移地址、高字是段地址,需佔用4個位元組
  • 8088微處理器從實體地址00000H開始,依次安排各個中斷向量,向量號也從0開始
  • 256箇中斷佔用1KB區域,就形成中斷向量表
  • 向量號為N的中斷向量的實體地址=N×4

    2. 內部中斷服務程式

    1. 內部中斷服務程式

    編寫80H號中斷服務程式
    功能:顯示以“0”結尾字串的功能
    ,利用顯示器功能呼叫INT 10H,
    字串緩衝區首地址為入口引數,
    DS:DX(段地址:偏移地址)傳遞引數

    intoff  dw ?//偏移
    intseg  dw ?//段基址
    intmsg  db ‘A Instruction Interrupt !’//字串
    db 0dh,0ah,0
    //儲存中斷向量
    mov ax,3580h//AH=35H,AL=中斷向量號
    int 21h //DOS功能呼叫INT 21H
    mov intoff,bx   ;儲存偏移地址
    mov intseg,es   ;儲存段基地址
    //設定中斷向量
    //設定中斷向量(DOS功能呼叫INT 21H)
    push ds
    mov dx,offset new80h
    mov ax,seg new80h
    mov ds,ax
    mov ax,2580h//AH=25,AL=中斷向量號
    int 21h
    pop ds
    //呼叫中斷服務程式,設定入口引數:  //DS=段地址(已設定)
//; DX=偏移地址
    mov dx,offset intmsg
    int 80h     ;呼叫80H中斷服務程式
//主程式結束
    mov dx,intoff
    mov ax,intseg
    mov ds,ax
    mov ax,2580h
    int 21h
    mov ax,4c00h
    int 21h
//進入中斷服務程式
new80h  proc
    sti ;開中斷
    push ax ;保護暫存器
    push bx
    push si
    mov si,dx
    //顯示字串
new1:mov al,[si]
    cmp al,0
    jz new2
    mov bx,0
    mov ah,0eh
    int 10h
    inc si
    jmp new1
    //退出中斷服務程式
    new2:   pop si  ;恢復暫存器
        pop bx
        pop ax
        iret    ;中斷返回
    new80h  endp

3. 8259A中斷控制器

1. 8259A的內部結構和引腳
  1. 中斷控制
  • 中斷請求暫存器IRR
    儲存8條外界中斷請求訊號IR0~IR7的請求狀態
    Di位為1表示IRi引腳有中斷請求;為0表示無請求
  • 中斷服務暫存器ISR
    儲存正在被8259A服務著的中斷狀態
    Di位為1表示IRi中斷正在服務中;為0表示沒有被服務
  • 中斷遮蔽暫存器IMR
    儲存對中斷請求訊號IR的遮蔽狀態
    Di位為1表示IRi中斷被遮蔽(禁止);為0表示允許
  1. 與處理器介面
    image
  2. 中斷級連
  • 一個系統中,8259A可以級連,有一個主8259A,若干個(最多8個)從8259A
  • 級連時,主8259A的三條級連線CAS0~CAS2作為輸出線,連至每個從8259A的CAS0~CAS2
  • SP/EN在非緩衝方式下,規定該8259A是主片(SP=1)還是從片(SP=0)

    3. 8259A的工作方式
  1. 設定優先權方式
  • 普通全巢狀方式
  • 特殊全巢狀方式
  • 優先權自動迴圈方式
  1. 結束中斷處理方式
  • 8259A利用中斷服務暫存器ISR判斷:
    某位為1,表示正在進行中斷服務;
    該位為0,就是該中斷結束服務。
  • 自動中斷結束方式
  • 普通中斷結束方式,配合全巢狀優先權方式使用
  • 特殊中斷結束方式,配合迴圈優先權方式使用
  1. 遮蔽中斷源方式
  • 普通遮蔽方式
    將IMR的Di位置1,則對應的中斷IRi被遮蔽
  • 特殊遮蔽方式
    將IMR的Di位置1,對應的中斷IRi被遮蔽的同時,使ISR的Di位置0
  1. 中斷觸發方式
  • 邊沿觸發方式
  • 電平觸發方式
  1. 資料線連線方式
  • 緩衝方式
    8259A的資料線需加緩衝器予以驅動
    8259A把SP/EN引腳作為輸出端,輸出允許訊號,用以鎖存或開啟緩衝器
  • 非緩衝方式
    SP/EN引腳為輸入端
    若8259A級連,由其確定是主片或從片

    4. 8259A的程式設計
  1. 初始化命令字ICW
  • 初始化命令字ICW最多有4個
  • 8259A在開始工作前必須寫入
  • 必須按照ICW1~ICW4順序寫入
  • ICW1和ICW2是必須送的
  • ICW3和ICW4由工作方式決定
中斷控制器的初始化程式段
//初始化主片8259A
        mov al,11h  ;寫入ICW1
        out 20h,al
        jmp intr1
intr1:  mov al,08h  ;寫入ICW2
        out 21h,al
        jmp intr2
intr2:  mov al,04h  ;寫入ICW3
        out 21h,al
        jmp intr3
intr3:  mov al,1h   ;寫入ICW4
        out 21h,al
//初始化從片8259A
        mov al,11h  ;寫入ICW1
        out 0a0h,al
        jmp intr5
intr5:  mov al,70h  ;寫入ICW2
        out 0a1h,al
        jmp intr6
intr6:  mov al,02h  ;寫入ICW3
        out 0a1h,al
        jmp intr7
intr7:  mov al, 01h ;寫入ICW4
        out 0a1h,al
  1. 操作命令字OCW
  • OCW共有3個:OCW1~OCW3
  • 寫入時沒有順序要求,需要哪個OCW就寫入那個OCW

應用注意事項

  • 利用上升沿做為中斷請求IRQ的有效訊號
  • IRQ0~IRQ7的中斷向量號依次為08H~0FH,IRQ8~IRQ15依次為70H~77H
  • 採用普通全巢狀優先權方式,中斷優先權從高到低順序為IRQ0~IRQ2、IRQ8~IRQ15、IRQ3~IRQ7,且不能改變

    5. 外部中斷服務程式

/*8259A的IRQ0(向量號為08H)中斷請求來自定時器8253,每隔55ms產生一次

本程式的08H號中斷服務程式,每次中斷顯示一串資訊,顯示10次
*/
    intmsg  db ‘A 8259A Interrupt !’
                 db 0dh,0ah,0
    counter db 0
    mov ax,3508h
    int 21h
    push bx ;儲存偏移地址
    push es ;儲存段基地址
    //設定中斷向量
        cli
        push ds
        mov dx,offset new08h
        mov ax,seg new08h
        mov ds,ax
        mov ax,2508h
        int 21h
        pop ds
        //設定中斷暫存器
        in al,21h
        push ax
        and al,0feh          ;允許IRQ0
        out 21h,al
        mov counter,0   ;設定中斷次數初值
        sti              ;開中斷
        //迴圈等待中斷
start1: cmp counter,10
         jb start1            ;中斷10次退出
         //子程式結束
                cli
        pop ax
        out 21h,al
        pop dx
        pop ds
        mov ax,2508h
        int 21h
        sti
        mov ax,4c00h
        int 21h
        //進入中斷服務程式
new08h  proc
          sti            ;開中斷
          push ax   ;保護暫存器
          push bx
          push ds
          mov ax,data
          mov ds,ax ;設定資料段DS
//中斷處理
        inc counter
        mov si,offset intmsg    ;顯示資訊
        call dpstri
//
             mov al,20h
             out 20h,al
             pop ds        ;恢復暫存器
             pop bx
             pop ax
             iret          ;中斷返回
new08h endp
//顯示字串
dpstri proc         ;顯示字串子程式
         push ax
         push bx
dps1:    lodsb
         cmp al,0
         jz dps2
//顯示字串
         mov bx,0
         mov ah,0eh
         int 10h
         jmp dps1
dps2:    pop bx
         pop ax
         ret
dpstri endp




第8章 定時計數控制介面

8253/8254定時計數器

  • 3個獨立的16位計數器通道
  • 每個計數器有6種工作方式
  • 按二進位制或十進位制(BCD碼)計數
  1. 計數器結構分析
  • 計數初值存於預置暫存器;
  • 在計數過程中,減法計數器的值不斷遞減,而預置暫存器中的預置不變。
  • 輸出鎖存器用於寫入鎖存命令時,鎖定當前計數值
  1. 計數器的3個引腳
  • CLK時鐘輸入訊號——在計數過程中,此引腳上每輸入一個時鐘訊號(下降沿),計數器的計數值減1
  • GATE門控輸入訊號——控制計數器工作,可分成電平控制和上升沿控制兩種型別
  • OUT計數器輸出訊號——當一次計數過程結束(計數值減為0),OUT引腳上將產生一個輸出訊號

    8253/8254的工作方式

  • 方式0 計數結束中斷
  • 方式1 可程式設計單穩脈衝
  • 方式2 頻率發生器(分頻器)
  • 方式3 方波發生器
  • 方式4 軟體觸發選通訊號
  • 方式5 硬體觸發選通訊號
  1. 注意
  • 處理器寫入8253的計數初值只是寫入了預置暫存器,之後到來的第一個CLK輸入脈衝(需先由低電平變高,再由高變低)才將預置暫存器的初值送到減1計數器。
  • 從第二個CLK訊號的下降沿,計數器才真正開始減1計數。

    8253/8254的程式設計


第9章 DMA控制介面

DMA控制器8237A

  • 每個8237A晶片有4個DMA通道,就是有4個DMA控制器
  • 每個DMA通道具有不同的優先權
  • 每個DMA通道可以分別允許和禁止
  • 每個DMA通道有4種工作方式
  • 一次傳送的最大長度可達64KB
  • 多個8237A晶片可以級連,擴充套件通道數

    1. 8237A的內部結構和引腳
  1. 請求與響應訊號
  • DREQ0~DREQ3:DMA通道請求
  • HRQ:匯流排請求
  • HLDA:匯流排響應
  • DACK0~DACK3:DMA通道響應
  1. DMA傳送控制訊號
  • A0~A7:地址線。輸出低8位儲存器地址。
    DB0~DB7:資料線。輸出高8位儲存器地址
  • ADSTB:地址選通
  • AEN:地址允許。
  • MEMR*:儲存器讀
  • MEMW*:儲存器寫
  • IOR*:I/O讀
  • IOW*:I/O寫
  • READY:準備好
  • EOP*:過程結束。DMA傳送過程結束,輸出一個低有效脈衝。
  1. 處理器介面訊號
  • DB0~DB7:資料線。
  • A0~A3:地址線。
  • CS*:片選
  • IOR*:I/O讀。讀取8237A內部暫存器。
  • IOW*:I/O寫。寫入8237A內部暫存器。
  • CLK:時鐘。控制晶片內部操作和資料傳輸。
  • RESET:復位。使8237A處於初始狀態。

8237A的兩種工作狀態

  • 空閒週期:
    作為介面電路,受CPU控制的工作狀態
  • 有效週期:
    作為DMAC控制DMA傳送的工作狀態
    image

    2. 8237A的工作時序·空閒週期
    DMA傳送時序
  • S1狀態——輸出16位儲存器地址
    AEN輸出高電平,表示DMA傳送
  • S2狀態——輸出DMA響應訊號和控制訊號
    DMA讀:MEMR和IOW有效
    DMA寫:IOR和MEMW有效
  • S3和Sw狀態——檢測資料傳送是否能夠完成,決定是否插入等待狀態Sw
  • S4狀態——完成資料傳送

    3. 8237A的工作方式
  1. DMA傳送方式
  • 單位元組傳送方式:一次傳送一個位元組,效率略低,
    DMA傳送之間CPU有機會重新獲取匯流排控制權
  • 資料塊傳送方式:一次請求傳送一個數據塊,效率高,
    整個DMA傳送期間CPU長時間無法控制匯流排
  • 請求傳送方式
    DREQ訊號有效就連續傳送資料
    DREQ訊號無效,DMA傳送被暫時中止,8237A釋放匯流排,CPU可繼續操作
  • 級連方式
  1. DMA傳送型別
    · DMA讀 · DMA寫 · DMA檢驗
  2. DMA通道的優先權方式
  • 固定優先權方式——優先權固定:0,1,2.。。
  • 迴圈優先權方式——優先權迴圈變化
  1. 自動初始化方式

    4. 8237A的暫存器
  2. 通道暫存器(4個通道分別具有):基地址暫存器、基位元組數暫存器、現行地址暫存器、現行位元組數暫存器。

  3. 狀態、命令暫存器:命令暫存器、狀態暫存器、請求暫存器、方式暫存器、遮蔽暫存器、臨時暫存器