【微機原理與接口技術】學習筆記9 DMA控制器8237A


9.1 8237A 的組成與工作原理

9.1.1 DMA傳送

DMA 方式傳送數據時,傳送過程完全由 DMA 控制器(DMAC)控制。其基本功能:

  • DMAC 能向CPU的 HOLD 腳發出 DMA 請求信號。
  • CPU響應 DMA 請求後,DMAC 獲得總線控制權,由它控制數據的傳送,CPU則暫停工作。
  • 能提供讀/寫存儲器或I/O設備的各種控制命令。
  • 確定數據傳輸的始址和數據長度(CPU配置的),每傳送1個數據便自動修改地址(+1-1),數據長度 -1
  • 傳送完畢,能發出結束 DMA 傳送的信號。
  • CPU在每個非鎖定時鐘週期結束後,都會檢測 HOLD 腳上有無 DMA 請求?若有,便轉入 DMA 傳送週期。

8237A 是高性能可編程 DMA 控制器,主要特點:

  • 4 個通道,每通道64K 地址(16位)和字節計數能力(16位)。
  • 4 種傳送方式:單字節傳送、數據塊傳送、請求傳送、級聯傳送。
  • 每個通道的 DMA 請求可被允許或禁止。4 個通道的 DMA 請求有不同優先級,優先級可以是固定的,也可以是循環的。
  • 任一通道完成數據傳送後,會自動產生過程結束信號 EOPEnd of Process,不常用),結束 DMA 傳送;還可從外界輸入 EOP 信號,中止正執行的DMA 傳送。

8237A 的兩種工作狀態
1)從態方式
開始 DMA 傳送前,8237A系統總線的從屬設備,由CPU對它進行編程,如指定通道、傳送方式和類型、內存單元起始地址、地址是遞增還是遞減以及要傳送的總字節數等等;CPU也可讀取 DMAC 的狀態。
2)主態方式
8237A 取得總線控制權後,它就完全控制了系統,使I/O設備和存儲器之間或者存儲器與存儲器之間進行直接的數據傳送。

8237A 芯片的內部結構和外部連接與這兩種工作狀態密切相關。

9.1.2 8237A的內部結構

  1. 時序與控制邏輯
    從態時接收系統時鐘、復位、片選和讀/寫等信號,完成相應控制操作;主態時, 向系統發控制信號
    其中與設備相連的是 IOR,IOW\overline {\text{IOR}},\overline {\text{IOW}} ,其他的要麼和CPU相連,要麼和系統總線相連。
    MEMR,MEMW\overline {\text {MEMR}},\overline {\text{MEMW}} 是主態時進行內存讀寫的命令。

  2. 優先級編碼電路
    對同時提出 DMA 請求 HRQ(Hold Request) 的多個通道進行排隊判優,決定哪個通道優先級最高,然後進行響應 HLDA(Hold Acknowledge)
    可選固定或循環優先級。某個優先級高的設備服務時,禁止其它通道請求。

  3. 數據和地址緩衝器組
    8237A的 A7~A4(單向輸出)、A3~A0(雙向:從態時 A3-A0 輸入有4根線,說明佔了 16 個端口地址;主態時:A3-A0A7-A4DB7-DB0 共16根地址線往內存輸出,讀或寫數據) 爲地址線;
    DB7~DB0從態時傳輸(CPU配置或讀取DMA的)數據主態時傳送地址。它們都與三態緩衝器相連,便於接管或釋放。

  4. 命令控制邏輯
    從態時接收CPU送來的寄存器選擇信號A3~A0),選擇寄存器;主態時譯碼方式字D1D0 ,以確定操作類型。A3~A0IOR\text{IOR}IOW\text{IOW} 配合組成各種操作命令。

  5. 內部寄存器組
    每通道有 16 位基址寄存器、基字計數器、當前地址寄存器、當前字計數器以及 6 位工作方式寄存器。
    片內還有命令寄存器、屏蔽寄存器、請求寄存器、狀態寄存器和暫存寄存器。
    不可編程的字數暫存器和地址暫存器。

9.1.3 8237A的引腳功能

8237A40 引腳 DIP 封裝, 引腳排列:

  1. CLK 時鐘信號,輸入
    8237A 時鐘頻率 3MHz8237A-55MHz
  2. CS\overline \text{CS} 片選信號,輸入,低電平有效。
    從態方式下選中 8237A ,接受CPU對它的編程等。
  3. READY 準備好,輸入,高電平有效
    慢速 I/O 設備或存儲器參與 DMA 傳送時,可使 READY 變低,讓 8237ADMA 週期中插入等待週期 TW ;當它們準備就緒時 READY 變高。
  4. A3~A04 位地址線
    從態爲輸入,尋址 8237A 內部寄存器,實現編程;主態時輸出要訪問內存的低 4 位地址。
  5. A7-A44 位地址線
    始終是輸出或浮空,主態時輸出 4 位地址信息 A7-A4
  6. DB7-DB0 8 位數據線,與系統數據總線相連。
    • 從態時,CPU經過數據線讀取各有關寄存器內容,並對各寄存器編程。
    • 主態時,由它們輸出高 8 位地址 A15-A8 ,並由 ADSTB 信號將它們鎖存到外部的高 8 位地址寄存器中,與 A7-A0 輸出的低 8 位地址構成 16 位地址。
    • 存儲器-存儲器傳送方式下,源存儲器讀出的數據,經它們送暫存寄存器,暫存器中數據再經它們寫到目的存儲單元中。
  7. AEN 地址允許信號,輸出,高電平有效
    送出鎖存的高 8 位地址,與芯片輸出的低 8 位地址一起構成 16 位內存偏址。同時使連到CPU的地址鎖存器無效,保證地址線上的信號來自 DMAC
  8. ADSTB 地址選通信號,輸出,高電平有效
    選通外部地址鎖存器,將 DB7~DB0 上的高 8 位地址送到外部的地址鎖存器。
  9. IOR\overline {\text{IOR}} I/O 讀信號,雙向。
    從態時,控制CPU讀取 8237A 內部寄存器
    主態時,與 MEMW\overline {\text{MEMW}} 配合,控制數據由外設傳到存儲器中
  10. DREQ3~DREQ0 通道 3~0DMA 請求信號,輸入
    外設
    請求 DMA 服務時,向這些引腳發請求信號,有效極性由編程確定。固定優先級時,DREQ0 的優先級最高,編程可改變優先級。
  11. HRQ 保持請求信號,輸出,高電平有效
    向CPU的 HOLD 端發出的 DMA 請求信號,可從 8237A 任一個未被屏蔽的通道發出。
  12. HLDA 保持響應信號,輸入,高電平有效
    與CPU的 HLDA 相連,CPU收到 HRQ 信號後,至少經過1個時鐘週期後,使 HLDA 變高,表示已讓出總線控制權8237A 收到 HLDA 信號後,便開始 DMA 傳送。
  13. DACK3~DACK0 通道 3~0DMA 響應信號,輸出
    其有效電平極性由編程確定。相應通道開始 DMA 傳送後,DACKi 有效,通知外部電路現已進入 DMA 週期
  14. EOP\overline {\text{EOP}} 傳輸過程結束信號,雙向,低電平有效
    DMA 傳送中,任一通道的字計數器減爲 0 ,再由 0 減爲FFFFH 而終止計數時,會在 EOP\overline {\text{EOP}} 引腳上輸出低電平信號,表示 DMA 傳輸結束。
    也可在 EOP\overline {\text{EOP}} 腳上輸入低電平信號來終止 DMA 傳送。
    若通道設置成自動預置狀態,該通道完成一次 DMA 傳送,出現 EOP\overline {\text{EOP}} 信號後,又能自動恢復有關寄存器的初值,繼續執行另一次 DMA 傳送。

9.1.4 8237A的內部寄存器

8237A的內部可編程寄存器主要有 10 種:

  1. 當前地址寄存器
    16 位,每通道 1 個,存放 DMA 傳送的存儲器地址值。每傳送 1 個數據,地址值自動 +1-1 ,指向下個單元。
    編程時可寫入初值,也可被讀出,但每次只能讀/寫 8 位,所以讀/寫要兩次完成
    自動預置操作方式,在 EOP\text{EOP} 有效時,會重裝入基地址值。

  2. 當前字計數寄存器
    16 位,每通道 1 個,編程時置其初值爲實際傳送字節數少1。每傳送 1 字節,自動 -1 。由 0~FFFFH 時,將產生終止計數信號TC
    自動預置操作方式,在 EOP\text{EOP} 有效時,會重裝入基字計數寄存器的內容

  3. 基地址寄存器
    16 位,每通道 1 個,存放通道當前地址寄存器初值,與當前地址寄存器地址一樣,編程時寫入相同值
    其內容不能讀出和修改。用在自動預置操作時,使當前地址寄存器恢復到初值

  4. 基字計數寄存器
    16 位,每通道 1 個,存放通道當前字計數器初值,該值也是編程時與當前字計數器一起寫入的。
    其內容不能讀出和修改,用於自動預置操作時,使當前字計數器恢復到初值

  5. 命令寄存器
    全局,8 位,控制 8237A 的操作。由CPU編程來設置 8327A 操作方式, 復位時清除。

    • D0 位:能否進行存儲器到存儲器傳送D0=1 允許。並規定先用通道 0 從源單元讀入 1 字節放入暫存器,然後由通道 1 把該字節寫到目的單元,接着兩通道的地址分別 +1-1 ,通道 1 的字計數器 -1,它減爲 0 時產生終止計數信號 TC,並輸出 EOP\text{EOP} 信號,終止DMA 服務。
    • D1 位:存儲器到存儲器傳送時,通道 0 地址能否保持不變。D1=1通道 0 在傳送中保持同一地址,從而可把該單元中的數寫入一組存儲單元D1=0 禁止。當 D0=0 時這種方法無效。
    • D2 位:允許或禁止 8237A 工作,D2=0 允許,D2=1 則禁止。
    • D4位 優先權控制。D4=0 爲固定優先權,通道 0 優先級最高;D4=1 爲循環優先權,剛服務過的通道 i 優先權最低,而通道 i+1 優先權最高。隨着 DMA 操作不斷進行優先權不斷循環,防止某通道長時間佔用總線
    • D6 位:決定 DREQ 的有效電平,0 高電平有效,1 則低電平有效。
    • D7 位:決定 DAC K的有效電平,1 高電平有效,0 則低電平有效。
    • D3 位和 D5 位:有關時序的操作,見後面時序討論。
  6. 工作方式寄存器
    6 位,每通道 1 個,選擇 DMA傳送方式和類型等,格式:

    • D1D0 位:選擇通道,並進一步由 D2-D7 指定選定通道的工作方式。這樣 4 個通道可合用 1 個方式寄存器。

    • D3D2 位:決定所選通道的 DMA 操作類型。從 3DMA 傳送類型中選定一種:
      10:讀傳送,存儲器->I/O設備, 發 MEMR,IOW\overline {\text{MEMR}},\overline {\text{IOW}}
      01:寫傳送,存儲器<-I/O設備, 發 MEMW,IOR\overline {\text{MEMW}},\overline {\text{IOR}}
      00:校驗傳送,僞傳送,8237A 會產生地址信息和
      EOP\text{EOP} 信號,不會發出讀寫控制信號,用於測試。

    • D4 位:所選通道是否進行自動預置操作。如果 D4=1 ,則選擇自動預置。

    • D5 位:方向控制位。D5=0 數據傳送由低址向高址方向進行,每傳送 1 字節,地址 +1D5=1 時傳送方向相反。

    • D7D6 位:定義所選通道操作方式。有 4 種傳送方式:
      1) 單字節傳送方式(常用於軟盤)
      每次DMA操作只傳送 1 字節。之後字計數器 -1 ,地址寄存器 +1-1HRQ 無效,釋放系統總線。當字計數器由 0 減爲 FFFFH 時,產生終止信號 TC
      此後即使 DREQ 繼續有效,8237AHRQ 輸出仍進入無效狀態並讓出總線,由CPU控制至少一個總線週期。

      2) 數據塊傳輸方式
      進入 DMA 服務後,可連續傳輸一批數據,直到字計數器由 0 減爲 FFFFH 產生 TC 信號,或從外部送來 EOP\text{EOP} 信號時,才釋放總線,結束 DMA 傳輸。

      3)請求傳送方式
      也連續傳送數據,直到字計數器由 0 減爲 FFFFH 產生 TC ,或外界送來 EOP\text{EOP} 信號。但每傳送 1 字節後,都要測試 DREQ 端,一旦發現此信號無效,馬上停止
      地址和字計數器的中間值會被保存在通道的現行地址和字計數器中,外設準備好新數據時,可使 DREQ 再變爲有效,又從斷點處繼續進行傳輸

      4)級聯傳送方式
      連接多個 8237A擴充 DMA 通道,連線見圖11.5。
      主片 DREQ —從片 HRQ ,主片 DACK—從片 HLDA ,主片 HRQHLDA 與CPU的 HOLDHLDA 相連。1 塊主片可連 4 塊從片。主片置爲級聯傳送從片設成其它三種方式。主片不輸出地址和讀寫信號。

  7. 請求寄存器
    相應請求位置 1 時,對應通道可產生 DMA 請求。相應位可由DREQ 信號置1,也可寫入通道請求字來置 1 或清 0
    D1D0 位選通道號,D2 位爲請求位。請求位不能屏蔽,其優先權受優先權邏輯控制,TC 或外部的 EOP\text{EOP} 信號能將相應的請求位清 0RESET 信號則使整個請求寄存器清 0

  8. 屏蔽寄存器
    4 位,1 個/通道。禁止/允許對應通道的 DREQ 請求進入請求寄存器。有兩種屏蔽字,端口地址不同
    1)通道屏蔽字
    可對該寄存器寫入通道屏蔽字來對單個屏蔽位置 1 /復位。通道屏蔽字格式與通道請求字格式類似:

    2)主屏蔽字
    還允許用主屏蔽命令設置通道的屏蔽觸發器D3~D0 位對應通道 3~0 的屏蔽位,1 屏蔽,0 清除屏蔽。可寫入主屏蔽字,一次完成 4 個通道的屏蔽位設置。可用軟件同時清除 4 個通道的屏蔽位。

  9. 狀態寄存器
    8 位狀態寄存器存放狀態信息,供CPU讀出。如 D3~D0 中置 1 的通道,已達計數終點 TC 或外部送來了 EOP\text{EOP} 信號。D7-D4 中置 1 的通道,DMA 請求還未處理。復位或被讀出後,相應狀態位被清除。狀態字格式:

  10. 暫存寄存器
    在存儲器->存儲器傳送時,保存所傳送的數據。其中始終保存着最後 1 個傳送的字節,RESET 信號會將其清除。編程狀態下,可由CPU讀出這個字節。

  11. 軟件命令
    編程狀態下,8237A 可執行 3 個附加的特殊軟件命令,只要對特定端口進行一次寫操作,命令就會生效。
    1)清除先/後觸發器
    8237A8 根數據線,而地址寄存器和字計數器均爲 16 位,CPU要分兩次讀寫。先/後觸發器控制高低字節讀寫次序。清 0 讀寫低 8 位,隨後自動置 1 ,讀寫高 8 位。接着又清 0 ,… 。對該觸發器所在的寄存器執行一次寫操作便清 0 ,復位和 EOP\text{EOP} 信號有效也將它清爲 0
    2)主清命令
    主清命令也稱爲復位命令,功能與 RESET 信號同,它可使命令寄存器、狀態寄存器、請求寄存器、暫存寄存器和內部先/後觸發器均清 0 ,而把屏蔽寄存器置 1 。復位後,8237A 進入空閒狀態。
    3)清除屏蔽寄存器
    該命令能清除 4 個通道的全部屏蔽位,允許各通道接受 DMA 請求。

  12. 各寄存器的端口地址
    8237A 內部寄存器讀寫時,CS\overline {\text{CS}} 端必須爲低電平,該信號由高位地址經I/O譯碼後產生
    A3~A0 線選擇不同寄存器,共佔 16 個I/O端口地址。常將它們與地址總線低 4A3~A0 相連,選擇各寄存器。
    例如,PC/XT 機中,地址 A9~A4=000000 時,經I/O譯碼電路選中 8237A,使其有效。 地址 A3~A08237AA3~A 0腳連接實現片內尋址。因此基地址 =00H,記爲 DMA=00H 。由此可得其他寄存器的地址,如DMA+00H 爲通道 0 基地址與當前地址寄存器地址,DMA+08H 爲狀態寄存器地址等:


9.2 8237A的時序

空閒週期 SI :未發生 DMA 請求時

  • 檢測 CS :CPU是否對其操作
  • 檢測 DREQ :外設是否有請求

過渡狀態 S0DMAC 發出 HRQ 之後,收到 HLDA 之前。

有效週期:DMAC 收到 HLDA 之後,接管總線:
包括 4 個狀態週期(S1、S2、S3、S4),慢速I/O或M還可通過令 READY=0 申請插入 SW8237A-5S3 中檢測 READYSW 中的操作同 S3

  • S1 :更新高8位地址,AENADSTB 有效,DMACMA8~15 放到 DB0~7 上;只有當 A8~15 有變化時纔出現
  • S2 :選中兩個介質,輸出 16 位地址選中 M :低 8 位由 A0~7 直接輸出;高 8 位由 DB0~7 經外部鎖存器(由 ADSTB 下降沿鎖存)輸出;發出有效的 DACK 選中I/O
  • S3 :讀週期。發出 IOR(DMA寫)或 MEMR(DMA讀),從源讀數據到 DB0~7,等待寫週期。
  • S4 :寫週期。發出 MEMW(DMA寫)或 IOW(DMA讀),將 DB0~7 上的數據寫到目標中。

擴展寫:寫提前到與讀同時開始(S3),與讀一樣擴展到 2 個時鐘週期。
壓縮時序:去掉 S3 ,讀與寫同爲 1 個時鐘週期。
SW :慢速I/O或M傳送時,在 S3S4 間插入 SW


9.3 8237A的編程和應用舉例

9.3.1 DMA系統組成

PC機的DMA系統:

  • 8237A-5
  • 頁面地址寄存器
  • 總線裁決邏輯

9.3.2 DMA系統有效地址的生成

第一代PC機中的地址是 20 位的,而 8237A16 位的。爲此需要一個 74LS670 擴展地址。

1. 74LS670工作原理

74LS670RA,RBDACK2,DACK3 連接,內有 44 位寄存器。讀寫分開控制:

  • 寫:GW=0\overline {\text{GW}}=0WA、WB:寫入寄存器選擇;D1~4:數據輸入
  • 讀:GR=0\overline {\text{GR}}=0RA、RB:讀出寄存器選擇;Q1~4:數據輸出

2. DMA系統有效地址的生成

如何提供存儲器的地址:

  • A16~19 :由 74LS670 提供;
  • A8~15 :由 8237A-5DB0~774LS373 提供;
  • A0~7 :由 8237A-5A0~7 直接提供;

如何對I/O設備尋址,用 DACK 信號取代芯片選擇和片內端口選擇

3. IBM-PC微機的DMA系統

單片 DMACDMA 系統:4 個通道;8 位傳送;1MB 尋址;64KB 計數
雙片DMAC的DMA系統:

  • 7 個通道;16MB 尋址;64KB 計數
  • 片(0):8 位傳送
  • 片(1):使用偶地址;16 位傳送

如果我們打開設備管理器,可以在直接內存訪問控制器中看到上圖雙片DMAC結構中,出現的端口地址。

4. DMA系統的初始化

注意事項:

  • 初始化前要對芯片檢測
  • 初始化前禁止工作或屏蔽通道
  • 所有通道的方式寄存器均加載
  • 初始化頁面地址寄存器

初始化編程:
① PC機檢測芯片816 位寄存器全 1 、全 0 的讀寫)及加載校驗方式:

	MOV	AL, 04H		 ;0000_0100:4位默認配置,正常時序,禁止工作,CR0地址不保持,禁止內存到內存
	OUT	DMA+08H, AL  ;寫入命令寄存器
	OUT	DMA+OCH, AL  ;清先後觸發器
	MOV	AL, 0FFH	 ;1111_1111:1的讀寫測試
C16:	MOV	BL, AL   ;1或全0
	MOV	BH, AL       ;1或全0
	...
	...
	MOV	CX, 8		 ;8個寄存器做讀寫測試
	MOV	DX, DMA		 ;從DMA開始測試
C17:	OUT	DX, AL	 ;1或全0寫入DX
	OUT	DX, AL		 ;再寫一次,16位寫兩次,先寫低八位,再寫高八位
	IN	AL, DX	     ;讀出低八位
	MOV	AH, AL		 ;
	IN	AL, DX		 ;讀出高八位,放入AX中
	CMP	BX, AX		 ;和之前保存的AL對比
	JE	C18	         ;如果相同,證明該寄存器沒有出錯
	HLT				 ;不相同則停機
C18:	INC	DX	     ;DX端口號+1
	LOOP	C17	     ;再重複循環
	...
	INC	AL	         ;AL+1=0
	JE	C16	         ;0,跳轉回C16,做全0測試
	...
	...
	...
	...
	...
	...
	SUB	AL, AL			 ;AL清0
	OUT	DMA+08H, AL		 ;寫入命令寄存器,4位按照默認配置,4位正常時序,允許工作,其他位默認;啓用芯片
	;下面將40H,41H,42H,43H先後寫入工作方式寄存器,,即對全部的通道寫入同樣的工作方式
	MOV	AL, 40H			 ;0100_0000針對0號通道
	OUT	DMA+0BH, AL		 ;單字節方式,地址遞增,禁止地址預置,校驗方式
	MOV	AL, 41H			 ;0100_0001針對1號通道
	OUT	DMA+0BH, AL		 ;單字節方式,地址遞增,禁止地址預置,校驗方式
	MOV	AL, 42H			 ;0100_0010針對2號通道
	OUT	DMA+0BH, AL		 ;單字節方式,地址遞增,禁止地址預置,校驗方式
	MOV	AL, 43H			 ;0100_0011針對3號通道
	OUT	DMA+0BH, AL		 ;單字節方式,地址遞增,禁止地址預置,校驗方式

5. DMA傳送的應用

例:利用級聯的 IBM PC/AT8237 主片通道 5 ,將內存其始地址爲 80000H280H 字節的內容直接輸出到外部設備。

MOV	AL, 04H		;命令字, 禁止82C37工作
OUT	0D0H, AL	;寫命令寄存器
MOV	AL, 0	
OUT	0D8H, AL	;清除先/後觸發器
OUT	0C4H, AL	;寫低位地址
OUT	0C4H, AL	;寫高位地址      
MOV	AL,04H		;頁面地址爲8
OUT	08BH, AL	;寫頁面寄存器	
MOV	AX, 280H	;傳輸字節數
DEC	AX
OUT	0C6H, AL	;寫字節數低位
MOV	AL, AH
OUT	0C6H, AL	;寫字節數高位
MOV	AL, 89H		;方式字: 單字節讀, 地址加1
OUT	0D6H, AL
MOV	AL, 05H		;寫請求寄存器
OUT	0D2H, AL

DMA控制器與I/O設備的連接:DMAENDMA 申請允許信號;軟盤接口中的數據輸出寄存器(3F2H)的 D3 位控制,高有效

ROM-BIOS 中軟盤 DMA_SETUP

  • AL——方式字(CH2,單一傳送,非自動預置,地址增量)
  • 42H:DMA校驗(軟盤校驗)
  • 46H:DMA寫(讀軟盤)
  • 4AH:DMA讀(寫軟盤)
  • ES:BX——內存首址
  • DH——要傳送的扇段數

字節數/扇段在磁盤基址區 DISK_BASE3 號單元

  • 0128 字節/扇段
  • 1256 字節/扇段
  • 2512 字節/扇段
  • 31024 字節/扇段
DMA_SETUP  PROC
	PUSH	CX		;保護現場
	CLI
	OUT	DMA+12, AL	;清先/後觸發器
	OUT	DMA+11, AL	;設置方式
					;形成物理地址
	MOV	AX, ES
	MOV	CL, 4
	ROL	AX, CL
	MOV	CH, AL
	AND	AL, 0F0H
	ADD	AX, BX
	JNC	J33
	INC	CH
J33:	PUSH	AX	;16位地址入棧
	...
					;設置地址寄存器及頁面地址
	OUT	DMA+4, AL	;寫低16位地址
	MOV	AL, AH
	OUT	DMA+4, AL
	MOV	AL, CH
	AND	AL, 0FH		;寫高4位地址
	OUT	81H, AL
					;設置字節計數器
	MOV	BX, 6
	CALL GET_PAM	;取DISK_BASE的3號單元作爲移位次數
	MOV	CL, AH
	MOV	AH, DH
	SUB	AL, AL
	SHR	AX, 1
	SHL	AX, CL
	DEC	AX
	PUSH	AX		;N-1入棧保護
	...
	OUT	DMA+5, AL
	MOV	AL, AH
	OUT	DMA+5, AL
	STI
					;判DMA是否超界
	POP	CX			;用低16位地址與N-1相加設置CF
	POP	AX
	ADD	AX, CX
	POP	CX			;恢復現場
	MOV	AL, 02H
	OUT	DMA+10, AL
	RET
DMA_SETUP  ENDP
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章