版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、同濟大學電子與信息工程學院信息與通信工程系實驗報告實驗一 顯示程序?qū)嶒?. 實驗目的 (1) 掌握在PC機上以十六進制形式顯示數(shù)據(jù)的方法。 (2) 掌握部分DOS功能調(diào)用使用方法。 (3) 熟悉Tddebug調(diào)試環(huán)境和Turbo Debugger的使用。 2. 實驗設備 PC微機一臺。 3. 實驗內(nèi)容及說明 一般來說,有很多程序需要顯示輸出提示運行的狀況和結(jié)果,有的還需要將數(shù)據(jù)區(qū)中的內(nèi)容顯示在屏幕上。本實驗要求將指定數(shù)據(jù)區(qū)的數(shù)據(jù)以十六進制數(shù)形式顯示在屏幕上,并通過DOS功能調(diào)用完成一些提示信息的顯示。實驗中可使用DOS功能調(diào)用(INT 21H)。 (1) 顯示單個字符輸出 入口:AH=02H
2、調(diào)用參數(shù):DL=輸出字符 (2) 顯示字符串 入口:AH=09H 調(diào)用參數(shù):DS:DX=串地址,S為結(jié)束字符 (3) 鍵盤輸入并回顯 入口:AH=01H 返回參數(shù):AL=輸出字符 (4) 返回DOS系統(tǒng) 入口:AH=4CH 調(diào)用參數(shù):AL=返回碼 4. 實驗步驟 (1) 運行Tddebug軟件,選擇Edit菜單,根據(jù)實驗內(nèi)容的描述編寫實驗程序,本實驗顯示部分參考實驗流程如圖2-1-1示。 (2) 使用Compile菜單中的Compile和Link對實驗程序進行匯編、連接。 (3) 使用Rmrun菜單中的Run,運行程序,觀察運行結(jié)果。 (4) 使用Rmrun菜單中的Debug,調(diào)試程序,觀察調(diào)
3、試過程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。 (5) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 圖1 顯示程序?qū)嶒灹鞒虉D5. 實驗程序 ;顯示程序?qū)嶒濻TACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATASEGMENTUSE16MES DB Press any key to exit!,0AH,0DH,0AH,0DH,$MES1 DB Show a as hex:,0AH,0DH,$SD DB aDATAENDSCODESEGMENTUSE16 ASSUMECS:CODE,DS:DATA START: MOV AX,DATA MOVDS,AX
4、 MOV DX,OFFSET MES ;顯示退出提示 MOV AH,09H INT 21H MOV DX,OFFSET MES1 ;show message MOVAH,09H INT 21H MOVSI,OFFSET SD MOVAL,DS:SI ANDAL,0F0H ;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,DS:SI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,
5、30H MOVDL,AL;show character MOVAH,02H INT21HKEY: MOV AH,1 ;判斷是否有按鍵按下? INT 16H JZ KEY MOVAX,4C00H;go back to dos INT21HCODE ENDS ENDSTART6. 實驗結(jié)果:a的十六進制數(shù)表示為3D。7. 實驗小結(jié) 初步了解掌握部分DOS功能調(diào)用使用方法。 并且熟悉Tddebug調(diào)試環(huán)境和Turbo Debugger的使用。實驗二 數(shù)碼轉(zhuǎn)換程序?qū)嶒?. 實驗目的 掌握不同進制數(shù)及編碼相互轉(zhuǎn)換的程序設計方法。 2. 實驗設備 PC微機一臺。 3. 實驗內(nèi)容及說明 計算機輸入設備輸入的
6、信息一般是由ASCII碼或BCD碼表示的數(shù)據(jù)或字符,CPU一般均用二進制數(shù)進行計算或其他信息處理,處理結(jié)果的輸出又必須依照外設的要求變?yōu)锳SCII碼、BCD碼或七段顯示碼等。因此,在應用軟件中,各類數(shù)制的轉(zhuǎn)換和代碼的轉(zhuǎn)換是必不可少的。計算機與外設間的數(shù)碼轉(zhuǎn)換關(guān)系如圖2-3-1所示,數(shù)碼對應關(guān)系如表2-3-1所示。 圖1 計算機與外設間的數(shù)碼轉(zhuǎn)換關(guān)系(1) 將ASCII碼表示的十進制數(shù)轉(zhuǎn)換為二進制數(shù) 十進制數(shù)可以表示為:,其中Di代表十進制數(shù)1、2、39、0。 上式可轉(zhuǎn)換為:由上式可歸納十進制數(shù)轉(zhuǎn)換為二進制的方法:從十進制數(shù)的最高位Dn開始作乘10加次位的操作,依次迭代類推,則可求出二進制數(shù)結(jié)果
7、。 本實驗要求將緩沖區(qū)中的一個五位十進制數(shù)00012的ASCII碼轉(zhuǎn)換成二進制數(shù),并將轉(zhuǎn)換結(jié)果按位顯示在屏幕上。轉(zhuǎn)換過程的參考流程如圖2所示。 表1 數(shù)碼轉(zhuǎn)換對應關(guān)系圖2 十進制ASCII轉(zhuǎn)換為二進制數(shù)參考流程;A2-1.asm;將ASCII碼十進制數(shù)轉(zhuǎn)換為二進制數(shù)STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDDATA SEGMENTMES1 DB The ascii code of decimal code are:$BUF DB 30H,30H,30H,31H,32H DB 10H DUP(0)DDATA ENDSCODE SEGMENT AS
8、SUME CS:CODE,DS:DDATASTART: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET BUF MOV BX,000AH MOV CX,0004H MOV AH,00H MOV AL,SI SUB AL,30HA1: IMUL BX ADD AL,SI+01 ( ADC AL,SI+01 SUB AL,30H JNC A2 ADD AH, 01H A2:SUB AL , 30H) INC SI LOOP A1 MOV SI,AX MOV DX,OFFSET MES1 MOV AH,09H INT 21H INC SI ;顯示高字節(jié) CALL SHOW
9、DEC SI ;顯示低字節(jié) CALL SHOW MOV AX,4C00H INT 21HSHOW PROC NEAR MOV AL,DS:SI AND AL,0F0H ;取高4位 SHR AL,4 CMP AL,0AH ;是否是A以上的數(shù) JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AL,DS:SI AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;show character MOV A
10、H,02H INT 21H RET ENDPCODE ENDS END START(2) 將十進制數(shù)的ASCII碼轉(zhuǎn)換為BCD碼 本實驗要求將鍵盤輸入的一個五位十進制數(shù)54321的ASC碼存放在數(shù)據(jù)區(qū)中,轉(zhuǎn)換為 BCD 碼后 ,并將轉(zhuǎn)換結(jié)果按位分別顯示于屏幕上 。若輸入的不是十進制數(shù)的ASC碼,則輸出“FF”。提示:一字節(jié)ASC碼取其低四位即變?yōu)锽CD碼。轉(zhuǎn)換部分的實驗流程參見圖3。 圖3 十進制ASCII轉(zhuǎn)換為BCD碼數(shù)參考流程;A2-2.asm;將十進制數(shù)的ASCII碼轉(zhuǎn)換為BCD碼STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDDATA SEG
11、MENTMES1 DBThe BCD code of decimal are:$BUF DB 31H,32H,33H,34H,35H DB10H DUP(0)DDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOV CX,0005H MOV DI,OFFSET BUFA1: MOVBL,0FFH MOV AL,DI CMPAL,3AH;比較AL中的數(shù)是否是09的;ASCII碼 JNB A2 SUB AL,30H JB A2 MOV BL,ALA2: MOV AL,BL MOV DI+05H,AL
12、INC DI LOOP A1 MOVSI,DI MOVCX,05H MOVDX,OFFSET MES1 MOVAH,09H INT 21HA3: CALL SHOW MOVDL,20H MOVAH,02H INT 21H INC SI LOOPA3 MOVAX,4C00H INT 21HSHOWPROCNEAR MOVAL,DS:SI ANDAL,0F0H;取高4位 SHR AL,4 CMPAL,0AH;是否是A以上的數(shù) JB C2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,DS:SI ANDAL
13、,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS END START附:括號內(nèi)的為更改后的程序。 4. 實驗步驟 (1) 運行Tddebug軟件,選擇Edit菜單,根據(jù)實驗內(nèi)容描述的數(shù)碼轉(zhuǎn)換內(nèi)容分別編寫實驗程序。 (2) 利用Compile菜單中的Compile和Link對實驗程序進行匯編、連接。 (3) 利用Rmrun菜單中的Run,運行程序,觀察運行結(jié)果。 (4) 使用Rmrun菜單中的Debug,調(diào)試程序,觀察調(diào)試過程中,數(shù)
14、據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。5. 實驗結(jié)果 (1)30H,30H,30H,31H,32H000C 30H,30H,30H,31H,32H00FF 30H,30H,30H,31H,32H0100(2)01 02 03 04 056. 實驗小結(jié) 本次實驗使我對編碼轉(zhuǎn)換的程序有了進一步的掌握。實驗三 循環(huán)程序設計實驗1. 實驗目的掌握循環(huán)程序的設計方法。2. 實驗設備PC微機一臺。3. 實驗內(nèi)容及說明一個循環(huán)程序通常由以下幾個部分組成:1) 循環(huán)初始化部分:用于對相關(guān)內(nèi)存單元及寄存器設置初始值,如設置地址指針、循環(huán)次數(shù)、某些標志位等。只有正確地進
15、行了初始化設置,循環(huán)程序才能正確運行并及時停止。2) 循環(huán)體:對要求重復執(zhí)行的程序段部分,對應于要求重復執(zhí)行的操作。3) 循環(huán)控制部分:為下一輪處理修正地址指針及循環(huán)次數(shù)等,并判斷循環(huán)結(jié)束的條件是否滿足,若滿足則退出循環(huán)。4) 循環(huán)結(jié)束部分:用于保存循環(huán)運行的結(jié)果等。(1) 編寫程序完成對10個數(shù)的求和分析:需分配空間保存和數(shù)(SUM),在循環(huán)體中進行求和操作。4. 實驗程序:DATA SEGMENTBUFFER DW 1,2,3,4,5,6,7,8,9,10 ; (10,20,30,40,50,60,70,80,90,100)原始10個數(shù)據(jù)SUM DW ? ;存放和數(shù)DATA ENDSSTA
16、CK SEGMENT STACK STACK DB 100 DUP ( ? )STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS, AX MOV AX, 0 ;AX中為和數(shù),初始為0 MOV DI, OFFSET SUM ;存放結(jié)果地址送DI MOV BX, OFFSET BUFFER ;數(shù)據(jù)緩沖區(qū)首地址;送BX MOV CX, 10 ;循環(huán)次數(shù)送CXLOOP1: ADD AX, BX ;累加 INC BX ;修改數(shù)據(jù)緩沖區(qū)地址 INC BX DEC CX ;次數(shù)減1 JNZ LOOP1 ;到10次了
17、嗎?不到,;轉(zhuǎn)LOOP1 MOV DI, AX ;到10次,存放結(jié)果 CALL SHOW MOV AX, 4C00H ;返回DOS INT 21HSHOW PROC NEAR MOV AL,DS:DI MOV AX,DS:DI AND AL,0F0H AND AX,0F00H SHR AL,4 SHR AX,8 CMP AL,0AH CMP AL,0AH JB C2 JB C1 ADD AL,07H C1: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,DS:DI AND AL,0F0H SHR AL,4 CMP AL,0AH JB C2 ADD
18、 AL,07H) C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,DS:DI AND AL,0FH CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H RET ENDPCODE ENDS END START(2) 給定一串16位數(shù),找出其中大于零、等于零和小于零的個數(shù)。分析:這是一個統(tǒng)計問題,需設置三個計數(shù)器分別統(tǒng)計三種情況下的結(jié)果。參考程序清單:DATA SEGMENTBUFF DW 22H,31H,43H,990H,00H,8990H ;原始16個
19、數(shù)據(jù)COUNT EQU $-BUFF ;COUNT的值為BUFF所;占的字節(jié)數(shù)PLUS DB ? ;大于零的個數(shù)ZERO DB ? ;等于零的個數(shù)MINUS DB ? ;小于零的個數(shù)DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA, SS: STACKBEGIN: MOV AX, DATA MOV DS, AX MOV CX, COUNT SHR CX, 1 ;相當于除2,正好為BUFF;中的數(shù)據(jù)個數(shù) MOV DX, 0 ;設定初值:D
20、H及DL分別為;等于、大于零的個數(shù) MOV AH, 0 ;設定初值:AH為小于零的個數(shù) LEA BX, BUFFAGAIN: CMP WORD PTR BX, 0 JGE PLU ;大于等于零時轉(zhuǎn)PIU INC AH ;統(tǒng)計小于零的個數(shù) JMP NEXTPLU: JZ ZER ;等于零時轉(zhuǎn)ZER INC DL ;統(tǒng)計大于零的個數(shù) JMP NEXTZER: INC DH ;統(tǒng)計等于零的個數(shù)NEXT: INC BX ;修改地址指針 INC BX LOOP AGAIN PUSH DX PUSH AX PUSH AX MOV BX,DL CALL SHOW MOV BX,DH CALL SHOW PO
21、P AX MOV BX,AH CALL SHOWPOP AX MOV MINUS,AH POP DX MOV PLUS,DL MOV ZERO,DH MOV AX, 4C00H INT 21HSHOW PROC NEAR MOV AL,DS:BX AND AL,0F0H ;取高4位 SHR AL,4 CMP AL,0AH ;是否是A以上的數(shù) JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AL,DS:BX AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD
22、AL,07HC3: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H RET ENDPCODE ENDS END BEGIN附:括號內(nèi)的為更改后的程序。5. 實驗結(jié)果(1)37; 226(2)6. 實驗小結(jié)本次實驗使我對微機小程序的編寫有了進一步的掌握。實驗四 子程序設計實驗1. 實驗目的(1) 掌握子程序的定義調(diào)用方法。(2) 掌握系統(tǒng)功能調(diào)用程序的使用和編寫方法。2. 實驗設備PC微機一臺。3. 實驗內(nèi)容及說明(1) 將內(nèi)存中的一串1位十六進制數(shù)轉(zhuǎn)換為其對應的ASCII碼。例如:十六進制2所對應的ASCII碼為32H,而十六進制
23、數(shù)C所對應ASCII碼為C(即43H)。分析:將一個十六進制數(shù)轉(zhuǎn)化為其對應的ASCII碼的功能設計為子程序。主程序分若干次調(diào)用該子程序,但每次調(diào)用的參數(shù)為不同的待轉(zhuǎn)換的十六進制數(shù)。4. 實驗程序:DATA SEGMENTHEXBUF DB 02H, 08H, 0AH, 09H, 0FH ;待轉(zhuǎn)換的一串1位;十六進制數(shù)COUNT EQU $-HEXBUF ;COUNT的值為這一;串十六進制數(shù)的個數(shù)DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:S
24、TACK;子程序HEXD:將1位十六進制數(shù)轉(zhuǎn)換為其對應的ASCII碼;入口參數(shù):AL含待轉(zhuǎn)換的1位十六進制數(shù);出口參數(shù):AL含轉(zhuǎn)換完的結(jié)果(ASCII碼)HEXD PROC NEAR CMP AL, 0AH JL ADDZ ADD AL, 07HADDZ: ADD AL, 30H ( MOV DS, AX MOV AH, 0A INT 21H) RETHEXD ENDP;以下為主程序BEGIN: MOV AX, DATA MOV DS, AX MOV BX, OFFSET HEXBUF MOV CX, COUNTREPEAT0: MOV AL, BX CALL HEXD MOV BX, AL
25、INC BX LOOP REPEAT0 MOV AX, 4C00H INT 21HCODE ENDS END BEGIN(2) 編寫程序計算數(shù)N的階乘N!。分析:階乘有遞歸定義式:,其中。可采用子程序的遞歸調(diào)用形式。參考程序清單:;計算N!,結(jié)果放在RESULT中DATA SEGMENTN DW 5RESULT DW ?DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS, AX;主程序
26、部分 MOV BX, N PUSH BX ;N壓入堆棧 CALL FACT ;調(diào)用求N!子程序 POP RESULT ;結(jié)果放在RESULT中 ( MOV AL,:DL AND AL,0FH CMP AL,0AH JB C4 ADD AL,07HC4: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H ) MOV SI,OFFSET RESULT ;輸出結(jié)果 INC SI CALL SHOW DEC SI CALL SHOW MOV AX, 4C00H INT 21H;求N!的子程序,注意入、出口參數(shù)。FACT PROC NEAR PUSH AX PUSH BP
27、MOV BP, SP MOV AX, BP+6 ;取N CMP AX, 0 JNE FACT1 ;AX不等于零,轉(zhuǎn)FACT1 INC AX ;0!=1 JMP EXITFACT1: DEC AX ;AX=N-1 PUSH AX CALL FACT ;遞歸調(diào)用求(N-1)! POP AX ;AX=(N-1)! MUL WORD PTR BP+6 ;求(N-1)!*NEXIT: MOV BP+6, AX POP BP POP AX RETFACT ENDPSHOW PROC NEAR ;顯示結(jié)果子程序 MOV AL,DS:SI AND AL,0F0H ;取高4位 SHR AL,4 CMP AL,0
28、AH ;是否是A以上的數(shù) JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AL,DS:SI AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H RET ENDPCODE ENDS END START附:括號內(nèi)的為更改后的程序。5. 實驗結(jié)果28A9F8!=9D80H ; 9!=58980H6. 實驗小結(jié)本次實驗使我對關(guān)于代碼轉(zhuǎn)換
29、和小程序?qū)崿F(xiàn)的微機編程有了進一步的了解和掌握。實驗五 8259中斷控制器應用實驗 1 實驗目的 (1) 學習中斷控制器8259的工作原理。 (2) 掌握可編程控制器8259的應用編程方法。 2 實驗設備 PC微機一臺、TD-PIT+ 實驗系統(tǒng)一套。 3 實驗內(nèi)容 (1) 利用PC機給實驗系統(tǒng)分配的中斷線,設計一個單中斷應用。使用單次脈沖模擬中斷產(chǎn)生。編寫中斷處理程序,在顯示器屏幕上顯示一個字符。 (2) 利用實驗平臺上8259控制器對擴展系統(tǒng)總線上的中斷線INTR進行擴展。編寫程序?qū)?259控制器的IR0和IR1中斷請求進行處理。 4 實驗原理 (1) 8259控制器的介紹 中斷控制器8259
30、A是Intel公司專為控制優(yōu)先級中斷而設計開發(fā)的芯片。它將中斷源優(yōu)先級排隊、辨別中斷源以及提供中斷矢量的電路集于一片中,因此無需附加任何電路,只需對8259A進行編程,就可以管理8級中斷,并選擇優(yōu)先模式和中斷請求方式,即中斷結(jié)構(gòu)可以由用戶編程來設定。同時,在不需增加其他電路的情況下,通過多片8259A的級連,能構(gòu)成多達64級的矢量中斷系統(tǒng)。它的管理功能包括:a) 記錄各級中斷源請求;b) 判別優(yōu)先級,確定是否響應和響應哪一級中斷;c) 響應中斷時,向CPU傳送中斷類型號。8259A的內(nèi)部結(jié)構(gòu)和引腳如圖5-3-1所示。 8259A的命令共有7個,一類是初始化命令字,另一類是操作命令。8259A的
31、編程就是根據(jù)應用需要將初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分別寫入初始化命令寄存器組和操作命令寄存器組。ICW1-ICW4各命令字格式如圖5-3-2所示,OCW1-OCW3各命令字格式如圖5-3-3所示,其中OCW1用于設置中斷屏蔽操作字,OCW2用于設置優(yōu)先級循環(huán)方式和中斷結(jié)束方式的操作命令字,OCW3用于設置和撤銷特殊屏蔽方式、設置中斷查詢方式以及設置對8259內(nèi)部寄存器的讀出命令。 圖5-3-1 8259內(nèi)部結(jié)構(gòu)和引腳圖圖5-3-2(a) ICW1格式圖5-3-2(b) ICW2格式圖5-3-2(c) ICW3格式圖5-3-2(d)ICW4格式圖5-3-3 OC
32、W命令字格式(2) 8259寄存器及命令的控制訪問在硬件系統(tǒng)中,8259僅占用兩個外設接口地址,在片選有效的情況下,利用A0來尋址不同的寄存器和命令字。對寄存器和命令的訪問控制如表5-3-1所示。表5-3-1 8259寄存器及命令的控制訪問(3) PC微機系統(tǒng)中的8259 在80x86系列PC微機系統(tǒng)中,系統(tǒng)中包含了兩片8259A中斷控制器,經(jīng)級連可以管理15級硬件中斷,但其中部分中斷號已經(jīng)被系統(tǒng)硬件占用,具體使用情況如表5-3-2示。兩片8259A的端口地址為:主片8259使用020H和021H兩個端口;從片使用0A0H和0A1H兩個端口。系統(tǒng)初始化兩片8259的中斷請求信號均采用上升沿觸發(fā)
33、,采用全嵌套方式,優(yōu)先級的排列次序為0級最高,依次為1級、8級15級,然后是3級7級。 在擴展系統(tǒng)總線上的INTR對應的中斷線就是PC機保留中斷其中的一個。對INTR中斷的初始化PC機已經(jīng)完成,在使用時主要是將其中斷屏蔽打開,修改中斷向量。 表5-3-2 PC微機系統(tǒng)中的硬件中斷5 實驗說明及步驟 (1) 中斷查詢方式應用實驗8259支持查詢方式檢測中斷請求,具體過程為:設置8259 OCW3中的P位為1即可執(zhí)行查詢命令,8259將下一個I/O讀命令視作一次中斷響應。如果有中斷請求,則置ISR中的相應位并讀優(yōu)先級。從OCW3寫操作到I/O讀操作期間禁止中斷,讀出字節(jié)的最高位為1表示有中斷,最低
34、3位(D0-D2)為最高優(yōu)先級中斷請求源的編碼。查詢字格式如圖5-3-4所示。圖5-3-4 8259 OCW3查詢字格式本實驗要求使用這種方法編寫程序處理實驗單元8259 IR0和IR1請求的中斷,IR0請求在屏幕上顯示字符“0”,IR0請求則在屏幕上顯示字符“1”以示中斷到來。IR0和IR1分別用一個單次脈沖的上升沿模擬中斷產(chǎn)生。參考流程如圖5-3-5所示,參考實驗接線圖如圖5-3-6所示。圖5-3-5 實驗參考流程圖圖5-3-6 參考實驗接線圖實驗步驟如下:a) 確認從PC機引出的兩根扁平電纜已經(jīng)連接在實驗平臺上。 b) 運行Tdpit集成操作軟件,查看系統(tǒng)資源分配情況,記錄與所用片選信號
35、對應的I/O端口始地址。c) 參考實驗流程圖編寫程序,注意使用正確的端口地址,然后編譯鏈接。 d) 參考實驗接線圖連接實驗線路。 e) 運行程序,按動KK1+、KK2+按鍵,觀察中斷響應是否正常。 8259中斷查詢方式應用實驗代碼;* *根據(jù)查看端口資源修改下列符號值*IOY0 EQU 0D800H ;片選IOY0對應的端口始地址;* *MY8259_ICW1 EQU IOY0+00H ;實驗系統(tǒng)中8259的ICW1端口地址MY8259_ICW2 EQU IOY0+04H ;實驗系統(tǒng)中8259的ICW2端口地址MY8259_ICW3 EQU IOY0+04H ;實驗系統(tǒng)中8259的ICW3端口
36、地址MY8259_ICW4 EQU IOY0+04H ;實驗系統(tǒng)中8259的ICW4端口地址MY8259_OCW1 EQU IOY0+04H ;實驗系統(tǒng)中8259的OCW1端口地址MY8259_OCW2 EQU IOY0+00H ;實驗系統(tǒng)中8259的OCW2端口地址MY8259_OCW3 EQU IOY0+00H ;實驗系統(tǒng)中8259的OCW3端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV DX,MY8259_ICW1 ;初始化實驗系統(tǒng)中8259的ICW1 MOV A
37、L,13H ;邊沿觸發(fā)、單片8259、需要ICW4 OUT DX, AL MOV DX,MY8259_ICW2 ;初始化實驗系統(tǒng)中8259的ICW2 MOV AL, 08H OUT DX, AL MOV DX,MY8259_ICW4 ;初始化實驗系統(tǒng)中8259的ICW4 MOV AL, 01H ;非自動結(jié)束EOI OUT DX, AL MOV DX,MY8259_OCW1 ;初始化實驗系統(tǒng)中8259的OCW1 MOV AL, 0FCH ;打開IR0和IR1的屏蔽位 OUT DX, AL QUERY: MOV AH,1 ;判斷是否有按鍵按下 INT 16H JNZ QUIT ;有按鍵則退出 MO
38、V DX,MY8259_OCW3 ;向8259的OCW3發(fā)送查詢命令 MOV AL, 0CH OUT DX, AL IN AL, DX ;讀出查詢字 TEST AL, 80H ;判斷中斷是否已響應 JZ QUERY ;沒有響應則繼續(xù)查詢 AND AL, 03H (AND AL, 03H) CMP AL, 00H JE IR0ISR ;若為IR0請求,跳到IR0處理程序 JNE IR1ISR ;若為IR1請求,跳到IR1處理程序 JMP QUERYIR0ISR:MOV AL,30H (IR0ISR:MOV AL,36H ) MOV AH, 0EH INT 10H MOV AL,20H INT 1
39、0H JMP EOIIR1ISR:MOV AL,31H (IR1ISR:MOV AL,31H) MOV AH,0EH INT 10H MOV AL,20H INT 10HEOI: MOV DX, MY8259_OCW2 ;向?qū)嶒炏到y(tǒng)中8259發(fā)送中斷結(jié)束命令 MOV AL, 20H OUT DX, AL JMP QUERY QUIT: MOV AX,4C00H ;結(jié)束程序退出 INT 21HCODE ENDS END START附:括號內(nèi)的為更改后的程序。6 實驗結(jié)果利用實驗平臺上8259控制器對擴展系統(tǒng)總線上的中斷線INTR進行擴展。編寫程序?qū)?259控制器的IR0和IR1中斷請求進行處理。
40、按動開關(guān)使其輸出0、1代碼。更改程序后對8259控制器的IR6和IR7中斷請求進行處理。按動開關(guān)使其輸出6、7代碼。7 實驗小結(jié) 本次試驗讓我8259的工作原理有了進一步掌握,同時也熟悉了其電路連接方式。實驗六 8255并行控制器應用實驗 1 實驗目的 (1) 掌握8255的工作方式及應用編程。 (2) 掌握8255的典型應用電路接法。 2 實驗設備 PC微機一臺、TD-PIT+ 實驗系統(tǒng)一套。 3 實驗內(nèi)容 (1) 基本輸入輸出實驗。編寫程序,使8255的A口為輸出,B口為輸入,完成撥動開關(guān)到數(shù)據(jù)燈的數(shù)據(jù)傳輸。要求只要開關(guān)撥動,數(shù)據(jù)燈的顯示就改變。 (2) 流水燈顯示實驗。編寫程序,使8255的A口和B口均為輸出,實現(xiàn)16位數(shù)據(jù)燈的相對循環(huán)顯示。 4 實驗原理 并行接口是以數(shù)據(jù)的字節(jié)為單位與I/O設備或被控制對象之間傳遞信息。CPU和接口之間的數(shù)據(jù)傳送總是并行的,即可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024中介留學全程規(guī)劃合同范本9篇
- 2024幼兒園幼兒心理健康輔導與干預合同3篇
- 2024建筑工程單項承包合同
- 2025版建筑防水工程防水涂料研發(fā)與銷售合同3篇
- 集市檢驗檢測集貿(mào)市場管理辦法
- 2025版借款反擔保合同范本與更新借款合同規(guī)范3篇
- 購物中心樁基施工合同
- 編導專業(yè)教師聘用協(xié)議模板
- 二零二五年度法律咨詢企業(yè)法律風險防范與處理服務合同3篇
- 拆遷工程勞務合同樣本
- DLT5210.4-2018熱工施工質(zhì)量驗收表格
- JJF 1183-2007 溫度變送器校準規(guī)范-(高清現(xiàn)行)
- 加油站冬季安全教育
- 第二章航空燃氣輪機的工作原理
- 推板式造波機的機械結(jié)構(gòu)設計
- SAPHR快速指南
- 廣東海洋大學大數(shù)據(jù)庫課程設計
- (完整版)食堂管理制度及流程
- 某醫(yī)院后備人才梯隊建設方案
- 二年級上冊英語教案Unit6 Lesson22︱北京課改版
- 桂枝加龍骨牡蠣湯_金匱要略卷上_方劑加減變化匯總
評論
0/150
提交評論