版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1 12 28.1 輸入輸入/輸出輸出 8.2 中斷中斷 8.3 .COM文件文件 習題八習題八3 3輸入輸出輸入輸出:輸入:從計算機外部把信息傳入計算機主機輸入:從計算機外部把信息傳入計算機主機輸出:將信息從計算機主機傳送到外部輸出:將信息從計算機主機傳送到外部 中斷中斷:一種常用而且十分重要的工作方式。一種常用而且十分重要的工作方式。 4 48.1.1 8.1.1 外部設備和接口外部設備和接口 8.1.2 8.1.2 輸入輸入/ /輸出指令輸出指令 8.1.3 8.1.3 程序控制輸入程序控制輸入/ /輸出輸出 5 5接口接口:連接計算機與外部設備的電路;連接計算機與外部設備的電路;計算機
2、與外部設備的信息交換是通過計算機與外部設備的信息交換是通過“接口(接口(Interface)”電電路間接實現(xiàn)的路間接實現(xiàn)的 。總線總線:計算機與接口之間通過計算機與接口之間通過“總線(總線(BUS)”連接連接8.1.1 8.1.1 外部設備和接口外部設備和接口6 6輸入設備輸入接口CPU設備專用電纜計算機總線(a) 輸入信息的傳送過程CPU輸出接口計算機總線輸出設備設備專用電纜(b) 輸出信息的傳送過程CPU與外部設備的連接與外部設備的連接7 71. CPU1. CPU與接口之間的信號與接口之間的信號CPU與接口之間傳送三種類型的信號與接口之間傳送三種類型的信號: (1 1)數(shù)據(jù)信號)數(shù)據(jù)信號
3、 (2 2)狀態(tài)信號)狀態(tài)信號 (3 3)控制信號)控制信號 8 82. 端口(端口(port)端口端口:接口電路內(nèi)部的寄存器:接口電路內(nèi)部的寄存器/緩沖器。緩沖器。這些寄存器這些寄存器/緩沖器有一個專用的地址,緩沖器有一個專用的地址,CPU可以使用這可以使用這個地址讀寫這些寄存器個地址讀寫這些寄存器/緩沖器。緩沖器。 端口的種類端口的種類: (1 1)數(shù)據(jù)輸入端口)數(shù)據(jù)輸入端口 (2 2)數(shù)據(jù)輸出端口)數(shù)據(jù)輸出端口 (3 3)狀態(tài)端口(輸入)狀態(tài)端口(輸入) (4 4)控制端口(輸出)控制端口(輸出) 9 91. IN/OUT(輸入(輸入/輸出)指令輸出)指令IN和和OUT指令的共同特點是:
4、必須使用累加器指令的共同特點是:必須使用累加器AL、AX或或EAX進行數(shù)據(jù)的傳送。進行數(shù)據(jù)的傳送。輸入時,輸入時,IN指令把端口的數(shù)據(jù)指令把端口的數(shù)據(jù)/狀態(tài)信息讀入狀態(tài)信息讀入AL(8位)位)、AX(16位)或位)或EAX(32位)中。位)中。 輸出時,要輸出的數(shù)據(jù)輸出時,要輸出的數(shù)據(jù)/命令先放人命令先放人AL(8位)、位)、AX(16位)或位)或EAX(32位)中,然后執(zhí)行位)中,然后執(zhí)行OUT指令,將指令,將AL、AX或或EAX中信息向端口輸出中信息向端口輸出 8.1.2 8.1.2 輸入輸入/ /輸出指令輸出指令10101. IN/OUT(輸入(輸入/輸出)指令輸出)指令(1)IN(輸入
5、)指令(輸入)指令 指令格式:指令格式:INACC, PORT INACC, DX操作:操作:AL/AX/EAX (PORT) AL/AX/EAX (DX)功能:把指定端口中的數(shù)據(jù)讀入功能:把指定端口中的數(shù)據(jù)讀入AL、AX或或EAX中中1111輸入指令舉例輸入指令舉例:端口地址在端口地址在0255之間:之間: IN AL,35H;將地址為;將地址為35H的端口數(shù)據(jù)送的端口數(shù)據(jù)送AL 端口地址在端口地址在065535之間之間: MOV DX,21H;端口地址放入端口地址放入DX IN AL,DX;把地址為把地址為21H的端口數(shù)據(jù)送的端口數(shù)據(jù)送AL中中 MOV DX,312H;端口地址放入;端口地
6、址放入DXIN EAX,DX;把地址為;把地址為312H的端口數(shù)據(jù)的端口數(shù)據(jù)(32位位);送;送EAX中中 1212(2)輸出指令輸出指令 指令格式:指令格式:OUTPORT, ACC OUTDX, ACC操作:(操作:(PORT) AL/AX/EAX (DX) AL/AX/EAX 功能:把功能:把AL、AX或或EAX中的數(shù)據(jù)向指定端口輸出中的數(shù)據(jù)向指定端口輸出1313輸出指令舉例輸出指令舉例:端口地址在端口地址在0255之間:之間: OUT60H,AL ;將;將AL中數(shù)據(jù)送到地址中數(shù)據(jù)送到地址; 為為60H的的8位端口中位端口中 端口地址在端口地址在065535之間之間: MOV DX,21
7、H;端口地址送入;端口地址送入DX OUT DX,AL;將;將AL中數(shù)據(jù)從中數(shù)據(jù)從DX所所; 指定的指定的8位端口輸出位端口輸出 MOV DX,310H;端口地址送入端口地址送入DX OUT DX,EAX;將;將EAX中數(shù)據(jù)向中數(shù)據(jù)向DX;所指定的;所指定的32位端口輸出位端口輸出 14142.串輸入串輸入/輸出指令輸出指令串輸入串輸入/輸出指令的源操作數(shù)和目的操作數(shù)都是隱含的輸出指令的源操作數(shù)和目的操作數(shù)都是隱含的串輸入指令把串輸入指令把DX指定的端口數(shù)據(jù)送入指定的端口數(shù)據(jù)送入ES: DI所指向的所指向的存儲單元,自動修改存儲單元,自動修改DI以指向下一個存儲單元以指向下一個存儲單元 串輸出
8、指令把串輸出指令把DS:SI 所指向的存儲單元的數(shù)據(jù)向所指向的存儲單元的數(shù)據(jù)向DX指指定的端口輸出,自動修改定的端口輸出,自動修改SI以指向下一個存儲單元以指向下一個存儲單元 1515(1)串輸入指令串輸入指令INS指令格式:指令格式:INSB / INSW / INSD操操 作:作: ES: DI (DX)修改修改DI值以指向下一個數(shù)據(jù)單元值以指向下一個數(shù)據(jù)單元 INSB、INSW、INSD分別表示從端口讀入一個字節(jié)、字或分別表示從端口讀入一個字節(jié)、字或雙字,存入雙字,存入ES: DI所指向的存儲單元。如果方向標志所指向的存儲單元。如果方向標志DF0,指令執(zhí)行后,指令執(zhí)行后,DI分別增加分別
9、增加1、2、4,如果,如果DF1,則,則DI分別減分別減少少1、2、4 。1616(2)串輸出指令)串輸出指令OUTS 指令格式:指令格式:OUTSB / OUTSW / OUTSD 操操 作:作: (DX) DS: SI修改修改SI值以指向下一個數(shù)據(jù)單元值以指向下一個數(shù)據(jù)單元OUTSB、OUTSW、OUTSD分別表示把分別表示把DS: SI所指所指向的一個字節(jié)、字或雙字數(shù)據(jù)向指定的端口輸出,同時根向的一個字節(jié)、字或雙字數(shù)據(jù)向指定的端口輸出,同時根據(jù)據(jù)DF的值,將的值,將SI增加或減少增加或減少1、2、4 。17171. 輸入輸出方式輸入輸出方式編寫輸入、輸出程序,必須根據(jù)外設的工作方式來決定
10、輸編寫輸入、輸出程序,必須根據(jù)外設的工作方式來決定輸入入/輸出采用的方式。輸出采用的方式。 三種基本的程序控制輸入輸出方式:三種基本的程序控制輸入輸出方式:(1)無條件輸入)無條件輸入/輸出輸出 (2)查詢式輸入)查詢式輸入/輸出輸出 (3)中斷方式)中斷方式 8.1.3 8.1.3 程序控制輸入程序控制輸入/ /輸出輸出1818 外設始終處于就緒狀態(tài),外設始終處于就緒狀態(tài),CPU在需要時可隨時與外設交換在需要時可隨時與外設交換數(shù)據(jù),而無須知道外設所處的狀態(tài),就可以使用無條件輸入數(shù)據(jù),而無須知道外設所處的狀態(tài),就可以使用無條件輸入/輸輸出方式進行數(shù)據(jù)的傳輸出方式進行數(shù)據(jù)的傳輸 例:揚聲器發(fā)聲電
11、路例:揚聲器發(fā)聲電路2. 無條件方式輸入無條件方式輸入/ /輸出輸出1919SOUNDPROCPUSHAX; 保護現(xiàn)場保護現(xiàn)場PUSHCXINAL, 61H; 讀讀61H端口端口“當前值當前值”ANDAL, 11111110BOUT61H, AL; 使使D0=0,關閉,關閉Timer2TRIG:INAL, 61H; 讀讀61H端口端口“當前值當前值”XORAL, 2OUT61H, AL; D1取反后輸出,產(chǎn)生周期性信號取反后輸出,產(chǎn)生周期性信號MOVCX, DXLOOP $; 延時,控制延時,控制1/0輸出時間,控制發(fā)聲頻率輸出時間,控制發(fā)聲頻率DEC BXJNZTRIG; 延時,控制發(fā)聲的總
12、時間延時,控制發(fā)聲的總時間POPCX; 恢復現(xiàn)場恢復現(xiàn)場POPAXRETSOUNDENDP2020 3. 查詢方式輸入查詢方式輸入/輸出輸出CPU必須通過必須通過“讀讀”外部設備的狀態(tài)端口,了解外部設外部設備的狀態(tài)端口,了解外部設備的當前狀態(tài),確定能否進行備的當前狀態(tài),確定能否進行“數(shù)據(jù)傳輸數(shù)據(jù)傳輸” 2121(1)查詢式輸入)查詢式輸入 查詢式輸入的接口電路中,除了有一個數(shù)據(jù)輸入端口,還查詢式輸入的接口電路中,除了有一個數(shù)據(jù)輸入端口,還必須有一個用于反映外設狀態(tài)的狀態(tài)端口必須有一個用于反映外設狀態(tài)的狀態(tài)端口 狀態(tài)端口的每一位反映設備的一種狀態(tài),例如,用狀態(tài)端口的每一位反映設備的一種狀態(tài),例如
13、,用D7=1表表示設備已經(jīng)完成了數(shù)據(jù)準備,可以傳輸數(shù)據(jù)。示設備已經(jīng)完成了數(shù)據(jù)準備,可以傳輸數(shù)據(jù)。D7=0則表示則表示尚未完成數(shù)據(jù)準備,不能進行數(shù)據(jù)傳輸。這一位常常被稱為尚未完成數(shù)據(jù)準備,不能進行數(shù)據(jù)傳輸。這一位常常被稱為“READY”。2222IN_TEST:INAL, STATUS_PORT;讀狀態(tài)端口;讀狀態(tài)端口TEST AL, 80H;檢查數(shù)據(jù)準備是否就緒;檢查數(shù)據(jù)準備是否就緒(D7=1?)JZIN_TEST;未就緒,重新讀狀態(tài)端口;未就緒,重新讀狀態(tài)端口INAL, DATA_PORT;已就緒,讀取數(shù)據(jù);已就緒,讀取數(shù)據(jù) 假設輸入接口內(nèi)數(shù)據(jù)端口地址為假設輸入接口內(nèi)數(shù)據(jù)端口地址為DATA_
14、PORT,狀態(tài)端口地,狀態(tài)端口地址為址為STATUS_PORT,其中,其中D7為為“READY”位。一個數(shù)據(jù)的查位。一個數(shù)據(jù)的查詢式輸入過程如下:詢式輸入過程如下:2323(2)查詢式輸出)查詢式輸出 采用查詢方式進行輸出的接口電路中,有一個用于數(shù)據(jù)輸采用查詢方式進行輸出的接口電路中,有一個用于數(shù)據(jù)輸出的端口,還有一個用于反映外設狀態(tài)的端口。出的端口,還有一個用于反映外設狀態(tài)的端口。 輸出設備一個常用的狀態(tài)位稱作輸出設備一個常用的狀態(tài)位稱作“BUSY”,BUSY=1表示表示設備正處于數(shù)據(jù)準備階段(設備正處于數(shù)據(jù)準備階段(“忙忙”););BUSY=0表示設備已表示設備已經(jīng)完成數(shù)據(jù)準備(經(jīng)完成數(shù)據(jù)
15、準備(“空閑空閑”),可以進入數(shù)據(jù)傳輸。),可以進入數(shù)據(jù)傳輸。2424a) 狀態(tài)寄存器(379H)b) 控制寄存器(37AH)備用打印出錯(0=出錯)聯(lián)機狀態(tài)(1=聯(lián)機)D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7忙(0=忙)應答紙出界(1=出界)備用選通(負脈沖)自動換行(1=換行)初始化(0=初始化)設備選擇(1=連接)中斷允許(1=允許)打印機接口內(nèi)的狀態(tài)、控制端口(寄存器)打印機接口內(nèi)的狀態(tài)、控制端口(寄存器)2525. MODELSMALL. DATAOUT_DATA DB 0AH, 0DH, This is an example. COUNTEQU$-OUT_D
16、ATA. CODESTART: MOV AX, DATAMOVDS, AX; 裝載裝載DSLEASI, OUT_DATA; 裝載輸出緩沖區(qū)指針裝載輸出緩沖區(qū)指針MOVCX, COUNT; 裝載計數(shù)器初值裝載計數(shù)器初值AGAIN: MOV DX, 379HINAL, DX; 讀狀態(tài)端口讀狀態(tài)端口TEST AL, 80H; 測試測試D7位(位(“忙忙”位)位)JZAGAIN; 打印機打印機“忙忙”則等待則等待 例例8-18-1查詢方式打印機輸出程序查詢方式打印機輸出程序2626MOVDX, 378H; 數(shù)據(jù)端口地址裝入數(shù)據(jù)端口地址裝入DXMOVAL, SI; 取待輸出字符代碼取待輸出字符代碼OUT
17、DX, AL; 字符代碼向數(shù)據(jù)端口輸出字符代碼向數(shù)據(jù)端口輸出MOVDX, 37AH; 命令端口地址送命令端口地址送DXMOVAL, 0DH; 打印機命令字:打印機命令字:“選通選通”位置位置“1”O(jiān)UTDX, AL; 將將“選通選通”位置位置“1”NOP; 延時延時MOVAL, 0CH; 打印機命令字:打印機命令字:“選通選通”位置位置“0”O(jiān)UTDX, AL; 將將“選通選通”位置位置“0”INCSI; 修改輸出緩沖區(qū)指針修改輸出緩沖區(qū)指針LOOP AGAIN; 循環(huán)控制循環(huán)控制OVER:MOV AX,4C00HINT 21H ENDSTART27278.2.1 8.2.1 中斷的概念中斷的
18、概念 8.2.2 8.2.2 中斷服務程序中斷服務程序 8.2.3 8.2.3 定時中斷定時中斷8.2.4 8.2.4 駐留程序駐留程序28281.1. 中斷與中斷源中斷與中斷源中斷中斷:由于某種事件的發(fā)生,使由于某種事件的發(fā)生,使CPU中斷(暫時停止)正在中斷(暫時停止)正在執(zhí)行的程序而轉去執(zhí)行該事件的處理程序,為該事件服務結執(zhí)行的程序而轉去執(zhí)行該事件的處理程序,為該事件服務結束后,繼續(xù)執(zhí)行原來被中斷的程序,這個過程稱為中斷。束后,繼續(xù)執(zhí)行原來被中斷的程序,這個過程稱為中斷。 中斷源中斷源:引起中斷的事件稱為中斷源:引起中斷的事件稱為中斷源 。斷點斷點:由于中斷,將要執(zhí)行但尚未執(zhí)行的指令地址
19、稱為由于中斷,將要執(zhí)行但尚未執(zhí)行的指令地址稱為“斷斷點點”,包括,包括16位段基址和位段基址和16位偏移地址。位偏移地址。8.2.1 8.2.1 中斷的概念中斷的概念29292. 中斷分類中斷分類中斷可以劃分為外部中斷和內(nèi)部中斷兩大類中斷可以劃分為外部中斷和內(nèi)部中斷兩大類 (1)內(nèi)部中斷)內(nèi)部中斷中斷指令中斷指令INT引起的中斷(軟件中斷)引起的中斷(軟件中斷)由于由于CPU的某些錯誤引起的中斷,如除法錯中斷、溢出中斷的某些錯誤引起的中斷,如除法錯中斷、溢出中斷(異常中斷)(異常中斷) 為調(diào)試程序設置的中斷(陷阱中斷)為調(diào)試程序設置的中斷(陷阱中斷)(2)外部中斷)外部中斷不可屏蔽中斷(不可屏
20、蔽中斷(NMI),通常代表),通常代表CPU外部的故障外部的故障 可屏蔽中斷(可屏蔽中斷(INTR),外設完成數(shù)據(jù)準備,請求進行數(shù)據(jù)傳輸外設完成數(shù)據(jù)準備,請求進行數(shù)據(jù)傳輸3030不可屏蔽中斷8086 CPU中斷邏輯INT n指令INT 3斷點除法出錯單步中斷 8259A可屏蔽中斷請求I N TO溢出NMIINTR80X86CPU中斷分類中斷分類31313.3. 中斷類型中斷類型 為了區(qū)分不同的中斷源,為了區(qū)分不同的中斷源,80X86給每一個中斷源一個編號,給每一個中斷源一個編號,稱為中斷類型稱為中斷類型4. 4. 中斷向量表中斷向量表中斷向量:中斷向量:每種類型的中斷都有一個相應的中斷服務程序
21、來每種類型的中斷都有一個相應的中斷服務程序來進行處理,中斷服務程序的入口地址稱為進行處理,中斷服務程序的入口地址稱為“中斷向量中斷向量” 中斷向量表中斷向量表:80 x86微機系統(tǒng)中把微機系統(tǒng)中把256個中斷向量按照它們中個中斷向量按照它們中斷類型的順序組織成一張表,存放在內(nèi)存最低的斷類型的順序組織成一張表,存放在內(nèi)存最低的1KB中,地中,地址范圍址范圍000H3FFH,這張表稱為,這張表稱為“中斷向量表中斷向量表”(圖(圖8-5)3232類型0中斷服務程序入口地址類型1中斷服務程序入口地址類型1CH中斷服務程序入口地址類型0FFH中斷服務程序入口地址0000:0000H0000:0004H0
22、000:0070H0000:03FFH80X86 CPU中斷向量表中斷向量表33335.5. 中斷處理過程中斷處理過程中斷發(fā)生時,計算機中斷機構自動完成如下操作中斷發(fā)生時,計算機中斷機構自動完成如下操作 :(1)取中斷類型號)取中斷類型號N(2)標志寄存器()標志寄存器(FLAGS)內(nèi)容入棧)內(nèi)容入棧(3)當前代碼段寄存器()當前代碼段寄存器(CS)內(nèi)容入棧)內(nèi)容入棧(4)當前指令計數(shù)器()當前指令計數(shù)器(IP)內(nèi)容入棧)內(nèi)容入棧(5)禁止外部中斷和單步中斷()禁止外部中斷和單步中斷(TF=0,IF=0)(6)從中斷向量表中取地址)從中斷向量表中取地址4N的的2字節(jié)內(nèi)容送字節(jié)內(nèi)容送IP,取地址
23、,取地址4N+2的的2字節(jié)內(nèi)容送字節(jié)內(nèi)容送CS(7)進入中斷處理程序)進入中斷處理程序。 34346.6. 中斷優(yōu)先級和中斷嵌套中斷優(yōu)先級和中斷嵌套中斷優(yōu)先級中斷優(yōu)先級 :多個中斷源同時請求中斷時,中斷響應的先:多個中斷源同時請求中斷時,中斷響應的先后次序。后次序。中斷嵌套中斷嵌套 :中斷服務程序執(zhí)行過程中,可以響應較高優(yōu)先:中斷服務程序執(zhí)行過程中,可以響應較高優(yōu)先級中斷請求,進入較高級中斷的中斷服務程序,該中斷處理級中斷請求,進入較高級中斷的中斷服務程序,該中斷處理結束后,繼續(xù)較低級別的中斷處理,稱為中斷嵌套結束后,繼續(xù)較低級別的中斷處理,稱為中斷嵌套 。3535使用中斷方式進行輸入使用中斷
24、方式進行輸入/輸出時,用戶需要編制兩個程序模輸出時,用戶需要編制兩個程序模塊塊 :“主程序主程序” 和和“中斷服務程序中斷服務程序” 主程序主程序:主要任務是為進入中斷服務程序進行各種準備:主要任務是為進入中斷服務程序進行各種準備 ,輸入輸出完成后進行結束處理輸入輸出完成后進行結束處理 中斷服務程序中斷服務程序:中斷發(fā)生時由:中斷發(fā)生時由CPU執(zhí)行該程序,進行所需要執(zhí)行該程序,進行所需要的輸入輸出處理的輸入輸出處理 8.2.2 8.2.2 中斷服務程序中斷服務程序36361. 主程序主程序(1)設置中斷向量)設置中斷向量 :設置中斷向量就是把中斷服務程序的入口地址放入中斷向量設置中斷向量就是把
25、中斷服務程序的入口地址放入中斷向量表中表中 設置中斷向量有兩種可選的方法:設置中斷向量有兩種可選的方法: 用用MOV指令將中斷向量直接寫入中斷向量表中,稱為直指令將中斷向量直接寫入中斷向量表中,稱為直接寫入法。接寫入法。 用用DOS功能調(diào)用,設置中斷向量功能調(diào)用,設置中斷向量 。3737PUSHDS; 保護保護DS寄存器內(nèi)容寄存器內(nèi)容MOV AX, 0MOV DS, AX ;數(shù)據(jù)段指向中斷向量表;數(shù)據(jù)段指向中斷向量表MOV BX, 4*N; 中斷向量安放位置(偏移地址)送中斷向量安放位置(偏移地址)送BXMOV WORD PTR BX, OFFSET INTERRUPT ; 寫入偏移地址寫入偏
26、移地址MOV WORD PTR BX+2, SEG INTERRUPT ; 寫入段基址寫入段基址 POPDS; 恢復恢復DS寄存器寄存器 例例8-2 :用直接寫入法設置中斷向量。假設中斷類型為:用直接寫入法設置中斷向量。假設中斷類型為N,中,中 斷服務程序入口標號為斷服務程序入口標號為INTERRUPT 3838用用DOS功能調(diào)用功能調(diào)用25H用來設置中斷向量:用來設置中斷向量: 入口參數(shù)為:入口參數(shù)為: AH25H AL中斷類型號中斷類型號 DS: DX中斷向量中斷向量用用DOS功能調(diào)用功能調(diào)用35H用來讀中斷向量用來讀中斷向量 : 入口參數(shù)為:入口參數(shù)為: AH25H AL中斷類型號中斷類
27、型號出口參數(shù)為:出口參數(shù)為:ES: BX中斷向量中斷向量3939PUSHDSMOVAX, SEG INTERRUPTMOVDS, AXMOVDX, OFFSET INTERRUPTMOVAL, NMOVAH, 25HINT21HPOPDS例例8-3 :使用使用DOS功能調(diào)用設置中斷向量功能調(diào)用設置中斷向量 4040(2)設置設備的中斷屏蔽位)設置設備的中斷屏蔽位 :“中斷屏蔽中斷屏蔽”:外部設備的中斷請求由中斷控制器:外部設備的中斷請求由中斷控制器8259A統(tǒng)統(tǒng)一管理一管理 。在。在8259A內(nèi)部,有一個內(nèi)部,有一個“中斷屏蔽寄存器中斷屏蔽寄存器”,該寄,該寄存器的存器的8位二進制對應于位二進
28、制對應于8259A的的8個中斷請求輸入。寄存器個中斷請求輸入。寄存器某一位設置為某一位設置為“1”時,對應引腳上的中斷請求不能被傳送到時,對應引腳上的中斷請求不能被傳送到CPU,該中斷因此無法得到相應。對中斷請求的這種管理方,該中斷因此無法得到相應。對中斷請求的這種管理方法稱為法稱為“中斷屏蔽中斷屏蔽”。4141IN AL, 21H; 取出中斷屏蔽寄存器當前值取出中斷屏蔽寄存器當前值ANDAL, 11111011B; 將將D2位清零位清零OUT21H, AL; 寫回中斷屏蔽寄存器寫回中斷屏蔽寄存器進入中斷處理之前,首先清除屏蔽位(假設該中斷使用進入中斷處理之前,首先清除屏蔽位(假設該中斷使用I
29、R2):):INAL, 21H; 取出中斷屏蔽寄存器當前值取出中斷屏蔽寄存器當前值ORAL, 00000100B ; 將將D2位置位置“1”O(jiān)UT21H, AL; 寫回中斷屏蔽寄存器寫回中斷屏蔽寄存器中斷處理結束之后,用以下的指令序列關閉該中斷:中斷處理結束之后,用以下的指令序列關閉該中斷:4242(3)設置中斷允許位)設置中斷允許位IF,開放中斷,開放中斷 STI指令可以將中斷允許位指令可以將中斷允許位IF置置1,打開中斷。只有中斷開放,打開中斷。只有中斷開放時,時,CPU才會響應從才會響應從INTR引腳輸入的,也就是從引腳輸入的,也就是從8259A發(fā)發(fā)來的可屏蔽中斷請求來的可屏蔽中斷請求
30、(4)其他設置)其他設置主程序還應該為中斷服務程序使用的指針、計數(shù)器等設置初主程序還應該為中斷服務程序使用的指針、計數(shù)器等設置初值。在中斷方式輸入輸出結束后,進行必要的結束處理值。在中斷方式輸入輸出結束后,進行必要的結束處理 。43432. 中斷服務程序中斷服務程序 中斷服務程序的主要操作步驟中斷服務程序的主要操作步驟 :(1)保存寄存器內(nèi)容)保存寄存器內(nèi)容 (2)開放中斷)開放中斷 (3)中斷服務)中斷服務 (4)關中斷()關中斷(CLI) (5)發(fā)送中斷結束命令)發(fā)送中斷結束命令 (6)恢復寄存器內(nèi)容)恢復寄存器內(nèi)容 (7) 中斷返回中斷返回 MOV AH, 20H OUT 20H, AL
31、中斷結束命令:中斷結束命令:4444實際應用中,經(jīng)常要用到實際應用中,經(jīng)常要用到“定時定時”:確定某個操作所需要的時間:例如,測量電機的轉速。確定某個操作所需要的時間:例如,測量電機的轉速。 定時啟動某個操作:例如,定時采集溫度、壓力等數(shù)據(jù)定時啟動某個操作:例如,定時采集溫度、壓力等數(shù)據(jù)PC微機內(nèi)部微機內(nèi)部“定時器定時器” :每:每55ms(1/18.2秒)產(chǎn)生一個秒)產(chǎn)生一個“時時間到間到”信號,向信號,向8259A申請中斷。該中斷類型號為申請中斷。該中斷類型號為09H,主要,主要用于操作系統(tǒng)的定時操作。用于操作系統(tǒng)的定時操作。 為了滿足用戶的定時需要,另設了一個為了滿足用戶的定時需要,另設
32、了一個1CH中斷,每次進入中斷,每次進入09H中斷后,由該中斷服務程序通過執(zhí)行指令中斷后,由該中斷服務程序通過執(zhí)行指令“INT 1CH”進進入入1CH中斷,執(zhí)行用戶的定時中斷服務程序中斷,執(zhí)行用戶的定時中斷服務程序 。8.2.3 8.2.3 定時中斷定時中斷4545用戶的定時任務實現(xiàn)方法用戶的定時任務實現(xiàn)方法:保存原保存原1CH中斷向量;中斷向量;把新的把新的1CH中斷服務程序入口地址填入中斷向量表;中斷服務程序入口地址填入中斷向量表;編制新的編制新的1CH中斷服務程序:首先執(zhí)行新增加的定時任中斷服務程序:首先執(zhí)行新增加的定時任務,完成后進入原中斷服務程序,執(zhí)行其它的定時任務。務,完成后進入原
33、中斷服務程序,執(zhí)行其它的定時任務。 4646例例8.4 :在屏幕上顯示實時時鐘(秒值)在屏幕上顯示實時時鐘(秒值); EX804.ASM 定時中斷,顯示實時時鐘(秒值)定時中斷,顯示實時時鐘(秒值)INCLUDEYLIB.H; 頭文件,包含外部函數(shù)與宏的頭文件,包含外部函數(shù)與宏的定義定義 ; *CODE SEGMENTASSUMECS: CODESECONDDB0; 秒值秒值SIGNALDB0; 1秒時間到標記秒時間到標記COUNTDW0; 毫秒值毫秒值OLDINT1CHDD?; 原來原來1CH中斷向量中斷向量 START: MOVAL, 1CH; 取原來取原來1CH中斷向量中斷向量 MOVA
34、H, 35HINT21HMOVWORD PTR OLDINT1CH+2, ES; 保存原來中斷保存原來中斷向量向量MOVWORD PTR OLDINT1CH, BX4747; *LEADX, MYINT1CH ; 取新的取新的1CH中斷向量中斷向量偏移地址偏移地址MOVAX, SEG MYINT1CH; 取新的取新的1CH中斷向量中斷向量段地址段地址MOVDS, AXMOVAL, 1CHMOVAH, 25HINT21H; 設置新的設置新的1CH中斷向中斷向量量 ; *STICLS; 清屏宏指令清屏宏指令AGAIN:MOV AH, 1; 讀鍵盤緩沖區(qū)的字符讀鍵盤緩沖區(qū)的字符INT16HJZTES
35、T_S; 鍵盤緩沖區(qū)空,轉鍵盤緩沖區(qū)空,轉TEST_SCMPAL, Q; 鍵盤字符是鍵盤字符是Q?JZEXIT; 是是Q,退出主程序,退出主程序4848TEST_S: CMPSIGNAL, 1; 1秒鐘到了嗎?秒鐘到了嗎?JNEAGAIN; 未到轉未到轉AGAIN MOVSIGNAL, 0 ; 1秒鐘到,標記清秒鐘到,標記清0INCSECOND; 秒加秒加1CMPSECOND, 60; 到到60秒?秒?JNEDISP; 秒值未到秒值未到60,顯示,顯示MOVSECOND, 0; 秒值到秒值到60,恢復為,恢復為0DISP:SETCUSOR0, 4, 39; 設置光標位置宏指令設置光標位置宏指令
36、MOVAL, SECONDMOVAH, 0; (AX)= 秒值秒值MOVDX, 0FFFFH; (DX)= 0FFFFHCALLWRITEDEC; 顯示秒值顯示秒值JMPAGAIN; 轉轉AGAIN,重復上述過程,重復上述過程4949EXIT:MOVDX, WORD PTR OLDINT1CHMOVAX, WORD PTR OLDINT1CH+2MOVDS, AX MOVAH, 25HMOVAL, 1CHINT21H; 程序退出前程序退出前,恢復原來恢復原來1CH中斷向量中斷向量MOVAX, 4C00H; 返回操作系統(tǒng)返回操作系統(tǒng)INT21H5050MYINT1CHPROCFAR; 新的新的1
37、CH中斷服務程序中斷服務程序PUSHAX; 保護現(xiàn)場保護現(xiàn)場STIADDCOUNT, 55; COUNT單元加單元加55CMPCOUNT, 1000; COUNT單元的數(shù)大于單元的數(shù)大于1000嗎?嗎?JBBACK; 小于小于1000,退出中斷程序,退出中斷程序SUBCOUNT, 1000; 大于大于1000,1秒到,毫秒數(shù)減秒到,毫秒數(shù)減1000MOV SIGNAL, 01H; “1秒到秒到”標記置標記置1,由主程序計秒,由主程序計秒BACK:CLIPOP AX; 恢復現(xiàn)場恢復現(xiàn)場PUSHF; 模仿進入中斷服務程序的條件模仿進入中斷服務程序的條件CALLCS: OLDINT1CH; 進入原進
38、入原1CH中斷服務程序中斷服務程序IRETMYINT1CH ENDPCODEENDS ENDSTART51511. 什么是程序駐留什么是程序駐留駐留程序駐留程序 :計算機系統(tǒng)中,有一類特殊的程序,它們常駐計算機系統(tǒng)中,有一類特殊的程序,它們常駐內(nèi)存,所占用的內(nèi)存空間受到內(nèi)存,所占用的內(nèi)存空間受到DOS的保護,不會被后來裝入的保護,不會被后來裝入的程序覆蓋。它們平時處于的程序覆蓋。它們平時處于“待命待命”狀態(tài),使用者感覺不到狀態(tài),使用者感覺不到它的存在,一旦某個條件被滿足,這個程序被激活,進入它的存在,一旦某個條件被滿足,這個程序被激活,進入“運行運行”狀態(tài),這樣的程序稱為狀態(tài),這樣的程序稱為“
39、駐留程序駐留程序”(簡稱(簡稱TSR程程序)序) 8.2.4 8.2.4 駐留程序駐留程序52522. 怎樣實現(xiàn)程序駐留怎樣實現(xiàn)程序駐留使用使用AH=31H的的DOS功能調(diào)用可以實現(xiàn)程序的駐留:功能調(diào)用可以實現(xiàn)程序的駐留: 入口參數(shù):入口參數(shù):AH= 31H DX駐留程序的大小駐留程序的大小(以以“節(jié)節(jié)”為單位,為單位,1節(jié)等于節(jié)等于16個字節(jié)個字節(jié)設置好入口參數(shù),執(zhí)行設置好入口參數(shù),執(zhí)行INT 21H指令,控制權交還指令,控制權交還DOS,同,同時,指定的內(nèi)存區(qū)域處于時,指定的內(nèi)存區(qū)域處于DOS的保護之下。的保護之下。53533. 駐留程序的基本結構駐留程序的基本結構駐留程序由兩部分組成:駐
40、留程序部分,初始化及駐留控制駐留程序由兩部分組成:駐留程序部分,初始化及駐留控制部分部分由于由于DOS保護的內(nèi)存區(qū)域從低地址開始向高地址端延伸,所保護的內(nèi)存區(qū)域從低地址開始向高地址端延伸,所以應把駐留程序寫在程序的頭部,初始化及駐留控制程序寫以應把駐留程序寫在程序的頭部,初始化及駐留控制程序寫在程序的尾部在程序的尾部 5454CODE SEGMENT ASSUME CS:CODE,DS:CODE; 駐留程序數(shù)據(jù)區(qū)駐留程序數(shù)據(jù)區(qū) ; 待駐留的程序待駐留的程序 MAIN: ;準備工作,如裝載中斷向量表;準備工作,如裝載中斷向量表LEADX, MAIN;取駐留程序字節(jié)數(shù);取駐留程序字節(jié)數(shù)MOVCL,
41、 4SHRDX, CL ;轉換成;轉換成“節(jié)節(jié)”數(shù)數(shù)MOVAH, 31H;駐留退出功能號;駐留退出功能號INT21H;駐留并退出;駐留并退出CODE ENDSEND MAIN駐留程序的一般格式:駐留程序的一般格式:55554. 激活駐留程序激活駐留程序幾種激活駐留程序的方法:幾種激活駐留程序的方法:執(zhí)行軟中斷指令執(zhí)行軟中斷指令INTn 時鐘中斷激活時鐘中斷激活熱鍵激活熱鍵激活 56565. 駐留程序應用舉例駐留程序應用舉例 例例8-5將一個定時顯示當前時間的程序駐留在內(nèi)存中。這個程將一個定時顯示當前時間的程序駐留在內(nèi)存中。這個程序在屏幕的右上角顯示當前時間。序在屏幕的右上角顯示當前時間。;EX
42、805.ASM 駐留程序例,駐留程序以駐留程序例,駐留程序以“后臺后臺”方式顯示當前方式顯示當前“秒秒”值值INCLUDEYLIB.HGETPS MACRO; 讀出光標位置宏指令讀出光標位置宏指令 MOVAH, 3 MOVBH, 0 INT10H MOVCURSOR, DXENDMCODESEGMENTASSUMECS: CODESECONDDB0; 秒值秒值COUNTDW0; 毫秒值毫秒值CURSORDW?; 原光標位置原光標位置5757MYINT1CH PROC FAR; 1CH定時中斷處理程序定時中斷處理程序PUSHAX; 保護現(xiàn)場保護現(xiàn)場PUSHBXPUSHCXPUSHDXPUSHCS
43、; 裝載裝載DSPOPDSSTIADDCOUNT, 55; 毫秒計時,加毫秒計時,加55CMPCOUNT, 1000; 到到1秒?秒?JBBACK; 未到未到1秒,結束中斷服務秒,結束中斷服務SUBCOUNT, 1000; 1秒到,毫秒數(shù)減秒到,毫秒數(shù)減1000MOVAL, SECOND ADDAL, 1 ; 秒值加秒值加1DAAMOVSECOND, AL ; 保存秒值保存秒值5858CMPAL, 60H ; 秒值到秒值到60?JNEDISP ; 未到未到60秒,轉顯示秒,轉顯示MOVSECOND, 0 ; 秒值到秒值到60,恢復為,恢復為0DISP:GETPS ; 取原光標位置并保存取原光標
44、位置并保存 SETCUSOR0, 0, 77; 把光標設置在把光標設置在0行行77列列MOVBL, SECOND; 秒值放入秒值放入BLCALLDISPLY; 顯示秒值顯示秒值MOVDX, CURSORSETCUSOR0, DH, DL; 恢復原光標位置恢復原光標位置 BACK:CLIPOPDX; 恢復現(xiàn)場恢復現(xiàn)場POPCXPOPBXPOPAXIRETMYINT1CH ENDP5959DISPLY: MOV AL, BL; 秒值送秒值送ALMOVCL, 4ROLAL, CLANDAL, 0FH; 把秒針值十位上的數(shù)分離出來把秒針值十位上的數(shù)分離出來ADDAL, 30H; 轉換成字符碼轉換成字符
45、碼MOVBH, 0 MOVCX, 1MOVAH, 0EH; 顯示秒值十位數(shù)顯示秒值十位數(shù)INT10HMOVAL, BL ANDAL, 0FH ; 把秒針值個位上的數(shù)分離出來把秒針值個位上的數(shù)分離出來ADDAL, 30HMOVBH, 0MOVCX, 1MOVAH, 0EH; 顯示秒值個位數(shù)顯示秒值個位數(shù)INT10HRET6060; * 主程序主程序START: LEADX, MYINT1CHMOVAX, SEG MYINT1CHMOVDS, AXMOVAL, 1CHMOVAH, 25HINT21H; 設置新的設置新的1CH中斷向量中斷向量 STILEADX, START; 取駐留程序的字節(jié)數(shù)取駐留程序的字節(jié)數(shù)MOVCL, 4SHRDX, CL; 以節(jié)為單位的駐留程序長度以節(jié)為單位的駐留程序長度MOVAH, 31H; 用功能號用功能號31H的的DOS調(diào)用實現(xiàn)駐留調(diào)用實現(xiàn)駐留INT21HCODEENDSENDSTART 61618.3.1 .COM8.3.1 .COM文件和文件和.EXE .EXE 文件文件 8.3.2 .COM8.3.2 .COM文件文件 62621. 什么是什么是.COM文件和文件和.EXE 文件文件匯編語言編寫的程序經(jīng)過匯編、連接后,可生成擴展名為匯編語言編
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 盲文印刷員發(fā)展趨勢強化考核試卷含答案
- 間苯二酚裝置操作工崗前技術創(chuàng)新考核試卷含答案
- 熱帶作物初制工崗前評審考核試卷含答案
- 護林員班組協(xié)作測試考核試卷含答案
- 隔離層制備工安全生產(chǎn)知識測試考核試卷含答案
- 船舶氣焊工風險識別測試考核試卷含答案
- 2024年浮山縣選聘縣直事業(yè)單位工作人員真題匯編附答案
- 2024年湖北汽車工業(yè)學院科技學院輔導員考試參考題庫附答案
- 超市運營管理操作手冊
- 2024年焦作職工醫(yī)學院輔導員考試參考題庫附答案
- 蘇州高新區(qū)(虎丘區(qū))市場監(jiān)督管理局公益性崗位招聘1人考試參考題庫及答案解析
- 北京通州產(chǎn)業(yè)服務有限公司招聘參考題庫完美版
- 企業(yè)安全隱患排查課件
- 2025版《煤礦安全規(guī)程》宣貫解讀課件(電氣、監(jiān)控與通信)
- 2025年國家開放大學《管理學基礎》期末機考題庫附答案
- 2025年人民網(wǎng)河南頻道招聘備考題庫參考答案詳解
- ESHRE子宮內(nèi)膜異位癥的診斷與治療指南(2025年)
- 急驚風中醫(yī)護理查房
- 基于視頻圖像的大型戶外場景三維重建算法:挑戰(zhàn)、創(chuàng)新與實踐
- 2025年四川省高職單招模擬試題語數(shù)外全科及答案
- 2025年江蘇事業(yè)單位教師招聘體育學科專業(yè)知識考試試卷含答案
評論
0/150
提交評論