




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一:簡(jiǎn)單程序設(shè)計(jì)實(shí)驗(yàn)(1)編寫一個(gè) 32 位無符號(hào)數(shù)除法的程序, 要求將存放在 NUM1 中的 32 位無符號(hào)數(shù)與存放 在 NUM2 中的 16 位無符號(hào)數(shù)相除,結(jié)果存放在 NUM3 和 NUM4 中。程序流程圖略。參考源程序:DATASEGMENTNUM1 DD 2A8B7654HNUM2 DW 5ABCHNUM3 DW ?NUM4 DW ?DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,DATA; 數(shù)據(jù)段寄存器初始化MOV DS,AXMOV AX, WORD PTR NUM1MOV DX, WORD PTR NUM1+2DI
2、V NUM2MOV NUM3,AXMOV NUM4,DXMOV AH,4CH;正常返回 DOS 系統(tǒng)INT 21HCODEENDSEND START(2)編寫一個(gè)拆字程序。要求將存放在ARY 單元的 2 位十六進(jìn)制數(shù) X1X2 拆為 X1 和 X2 兩部分,并以 0X1 和 0X2 的形式分別存入 ARY+1 和 ARY+2 單元中。程序流程圖略。參考源程序:DATASEGMENTARY DB 2AH,?,?DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY;取 ARY 的偏
3、移地址MOV AL,SI;取 16進(jìn)制數(shù)至 ALCODEMOV BL,ALAND AL,0F0HSHR AL,4MOV SI+1,ALMOV AL,BLAND AL,0FHMOV SI+2,ALMOV AH,4CHINT 21HENDSEND START;取 16進(jìn)制數(shù)的高四位,即 X1;存 0X1; 取 16進(jìn)制數(shù)的低四位,即 X2;存 0X2第 5 頁(yè) 共 31 頁(yè)實(shí)驗(yàn)二:分支程序設(shè)計(jì)實(shí)驗(yàn)(1)編寫一個(gè)字符比較程序,比較3 個(gè)無符號(hào)字節(jié)數(shù) A,B,C 的大小,并根據(jù)比較結(jié)果對(duì)變量 K 賦值:如果 3 個(gè)數(shù)不相等,則 K=0 ;如果 3 個(gè)數(shù)中有兩個(gè)相等,則 K=1 ;如果 3 個(gè)數(shù)都相等,
4、則 K=2 。 程序流程圖略。參考源程序:DATA SEGMENTA DB 20HB DB 20HC DB 20HK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,ACMP AL,BJNE COMP2CMP AL,CJNE K1JMP K2COMP2: MOV BL,BCMP BL,CJE K1CMP AL,CJE K1K0:MOV K,0JMP EXITK1:MOV K,1JMP EXITK2:MOV K,2EXIT:MOV AH,4CH;定義待比較數(shù) A、B、C,比較結(jié)果K;
5、對(duì)A、B進(jìn)行比較,不相等則轉(zhuǎn)到 C0MP2 ;相等則比較 A 、 C;A、C不相等則K=1 ; A 、 C 相等則 K=2;對(duì)B、C進(jìn)行比較,相等則 K=1;對(duì)A、C進(jìn)行比較,相等則 K=1INT 21HCODE ENDSEND START(2)編寫一個(gè)能實(shí)現(xiàn)下列表達(dá)式的程序:? A + B A WBN = ?設(shè) A,B,C 為小于 128 的正整數(shù)。?A - B +C A B程序流程圖略。參考源程序:DATA SEGMENTA DB 22H;定義 A 、B、 C、NB DB 10HC DB 01HN DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA
6、TASTART: MOV AX,DATAMOV DS,AXMOV AL, ACMP AL, BJG CALCUL;A 小于或等于 B 則 N=A+BADD AL,BJMP EXITCALCUL: SUB AL, BADC AL, CEXIT: MOV N, ALMOV AH,4CHINT 21HCODE ENDSEND START實(shí)驗(yàn)三 循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)(1)將字符串 STRN (以 “ $結(jié)”尾)中的每一個(gè)字符均加上偶校驗(yàn)位,并統(tǒng)計(jì)有多少個(gè)字符 因含有奇數(shù)個(gè)“ 1而加上了校驗(yàn)位。統(tǒng)計(jì)結(jié)果存于 N單元中。程序流程圖略。參考源程序:DATA SEGMENT STRN DB What$ COUNT
7、 EQU $-STRN N DB ?BUF DB COUNT DUP(?)DATA ENDS;任意定義一個(gè)字串,以“$”結(jié)尾CODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX, DATAMOV DS, AXMOV AX, DATAMOV ES, AXLEA SI, STRN LEA DI, BUF MOV CX, COUNTMOV AL, 0LP1:MOV BL, SIAND BL, BL JP NEXTINC ALOR BL, 80H NEXT:MOV DI, BLINC SIINC DILOOP LP1;逐個(gè)取字符進(jìn)行判斷;自己和自己做與運(yùn)算
8、;根據(jù) PF 標(biāo)志位的變化進(jìn)行跳轉(zhuǎn)MOV N, ALMOV AH, 4CHINT 21HCODE ENDSEND START2)在 FIRST 開始的一片連續(xù)的數(shù)據(jù)區(qū)中存放著100 個(gè)數(shù)據(jù),編寫一個(gè)程序,統(tǒng)計(jì)第 1第 9 頁(yè) 共 31 頁(yè)個(gè)數(shù)據(jù) 0之前的數(shù)據(jù)個(gè)數(shù)。 程序流程圖略。 參考源程 序:DATA SEGMENTFIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H;任取 9 個(gè)數(shù)做演示COUNT EQU $-FIRSTNUM DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,D
9、ATAMOV DS,AXMOV DL, 0MOV CX,COUNTMOV BX, OFFSET FIRSTLP1:MOV AL, BXCMP AL, 00HJNE NEXTJMP EXITNEXT: INC DLINC BXLOOP LP1;計(jì)數(shù)值初始為 0;每次取一個(gè)數(shù),與 0 比較;找到 0 則退出;沒找到 0 則計(jì)數(shù)值加 1EXIT: MOV NUM, DLMOV AH, 4CH INT 21HCODE ENDSEND START實(shí)驗(yàn)四:子程序設(shè)計(jì)實(shí)驗(yàn)將BUF開始的10個(gè)單元中兩位十六進(jìn)制數(shù)轉(zhuǎn)換成 ASCII碼,并在屏幕上顯示出來。 要求碼型 轉(zhuǎn)換通過子程序 HEXASC 實(shí)現(xiàn),參數(shù)傳送
10、采用寄存器傳送方式。程序流程圖略。 參考源程序 :(1 )實(shí)現(xiàn)方法一:遠(yuǎn)過程調(diào)用DATA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF DATA ENDS;定義任意長(zhǎng)度的一段 BUFSTACK1 SEGMENT STACKDB 100 DUP(?);設(shè)置足夠深度的棧區(qū)STACK1 ENDSCODESTART:SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1MOV AX,DATAMOV DS,AXAGAIN:MOV SI,OFFSET BUFMOV CX,COUNTM
11、OV AL,SIMOV BL,AL;逐個(gè)取數(shù)SHR AL,4AND AL,0FHCALL FAR PTR HEXASCMOV DL,ALMOV AH,02HINT 21H;先對(duì)高字節(jié)部分轉(zhuǎn)換(寄存器;調(diào)用子程序;顯示高字節(jié)部分對(duì)應(yīng)的字符AL 傳參)MOV AL,BLAND AL,0FHCALL FAR PTR HEXASCMOV DL,ALMOV AH,02HINT 21H;再對(duì)低字節(jié)部分轉(zhuǎn)換(寄存器;調(diào)用子程序;顯示低字節(jié)部分對(duì)應(yīng)的字符AL 傳參)MOV DL,20HMOV AH,02HINT 21H;顯示空格INC SILOOP AGAINMOV AH,4CHINT 21HCODE END
12、SCODEB SEGMENTASSUME CS:CODEBHEXASC PROC FAR CMP AL,09H JA HEXATOF ADD AL,30H JMP ENDHEXHEXATOF:ADD AL,37H ENDHEX: RETHEXASC ENDP CODEB ENDSEND START;判斷是不是數(shù)字;是字母則轉(zhuǎn)到 HEXATOF;是數(shù)字則對(duì)應(yīng)到數(shù)字的 ASCII 碼;是字母則對(duì)應(yīng)到字母的 ASCII 碼(2)實(shí)現(xiàn)方法二:近過程調(diào)用 DATA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-B
13、UF ;定義任意長(zhǎng)度的一段 BUF DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?)STACK1 ENDS;設(shè)置足夠深度的棧區(qū)CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV CX,COUNTAGAIN: MOV AL,SIMOV BL,AL;逐個(gè)取數(shù)MOV SI,OFFSET BUFSHR AL,4AND AL,0FHCALL HEXASC;先對(duì)高字節(jié)部分做轉(zhuǎn)換MOV DL,ALMOV AH,02HINT 21H;顯示高字節(jié)部分對(duì)應(yīng)的字符MOV AL,BLA
14、ND AL,0FH CALL HEXASC;再對(duì)低字節(jié)部分做轉(zhuǎn)換MOV DL,ALMOV AH,02HINT 21H;顯示低字節(jié)部分對(duì)應(yīng)的字符MOV DL,20H;顯示空格MOV AH,02HINT 21HINC SI;繼續(xù)循環(huán)或退出LOOP AGAINMOV AH,4CHINT 21HHEXASC PROC NEARCMP AL,09HJA HEXATOFADD AL,30HJMP ENDHEX HEXATOF:ADD AL,37H ENDHEX: RET HEXASC ENDPCODE ENDSEND START實(shí)驗(yàn)五:DOS中斷調(diào)用實(shí)驗(yàn)(1)如果從鍵盤上依次輸入的是一個(gè)數(shù)字和一個(gè)字母,則
15、輸出“ RIGHT”標(biāo)記后結(jié)束程序,否則輸出標(biāo)記 “ERROR ”后轉(zhuǎn)向原出錯(cuò)處重做。試編程實(shí)現(xiàn)該功能。程序流程圖略。參考源程序 :DATA SEGMENTMSG DB 0AH,0DH,RIGHT,0AH,0DH,$WRN DB 0AH,0DH,ERROR,0AH,0DH,$DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXAGAIN: MOV AH,01HINT 21HCMP AL,39HJA EMSGCMP AL,30HJB EMSGMOV AH,01HINT 21HCMP AL,AJB EMSG
16、CMP AL,ZJB EXITCMP AL,aJB EMSGCMP AL,zJB EXIT;等待用戶輸入 1 個(gè)字符并顯示;判斷輸入是否是數(shù)字,不是則報(bào)錯(cuò);等待用戶輸入 1 個(gè)字符并顯示;判斷輸入是否是大寫字母, 不是則繼續(xù);判斷是不是小寫字母;不是字母則報(bào)錯(cuò),是字母則轉(zhuǎn)到 EXITEMSG:LEA DX,WRNMOV AH,09HINT 21HJMP AGAINEXIT:MOV DX,OFFSET MSGMOV AH,09H;顯示 “ RIGHT并退出INT 21HMOV AH,4CHINT 21HCODEENDSEND START( 2)編寫一程序分類統(tǒng)計(jì)字符個(gè)數(shù):即接收鍵入的一串字符(字
17、符個(gè)數(shù)不超過50個(gè),該字符串用回車作為結(jié)束) ,并按數(shù)字、字母和其它字符分類計(jì)數(shù),然后將結(jié)果存入digit 、letter和 other 3 個(gè)存儲(chǔ)單元中,并顯示結(jié)果。程序流程圖略。參考源程序 :DATASEGMENTMSG1 DB 0AH, 0DH, Number of digit:,20H,$ MSG2 DB 0AH, 0DH, Number of letters:, 20H,$ MSG3 DB 0AH, 0DH, Number of other characters:, 20H, $ BUF DB 50DB 0DB 50 DUP(?);設(shè)置足夠深的棧區(qū)DIGIT DB ?LETTER D
18、B ? OTHER DB ?DATAENDSSTACK1SEGMENT STACKDB 100 DUP(?)STACK1ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV AH,0AH ;等待用戶輸入字符串并顯示MOV DX,OFFSET BUFINT 21HMOV SI, OFFSET BUFMOV CL,SI+1MOV CH,00HMOV AL,00HMOV AH,00HMOV BH,00HAGAIN:MOV BL,SI+2CMP BL,30HJB OTH; ASCII 碼小于 30H 則
19、歸類為 “其它 ”CMP BL,3AH第 13 頁(yè) 共 31 頁(yè)JB DIGCMP BL,41HJB OTHCMP BL,5BHJB LETCMP BL,61HJB OTHCMP BL,7BHJB LET;ASCII 碼大于等于 30H 小于 3AH 則歸類為; ASCII 碼大于等于 3AH 小于 41H 則歸類為;ASCII 碼大于等于 41H 小于 5BH 則歸類為; ASCII 碼大于等于 5BH 小于 61H 則歸類為;ASCII 碼大于等于 61H 小于 7BH 則歸類為“數(shù)字”“其它”“字母”“其它”字母”O(jiān)TH:INC AL;“其它”計(jì)數(shù)器加 1JMP ENDLPDIG:INC
20、 AH; “數(shù)字”計(jì)數(shù)器加 1JMP ENDLPLET:INC BH; “字母”計(jì)數(shù)器加 1ENDLP:INC SILOOP AGAIN;繼續(xù)循環(huán)MOV DIGIT, AH;統(tǒng)計(jì)各類個(gè)數(shù)MOV LETTER, BH顯示“數(shù)字”有多少個(gè)MOV OTHER, ALMOV DX, OFFSET MSG1MOV AH,09HINT 21HMOV AL, DIGIT顯示“字母”有多少個(gè)CALL DISPMOV DX, OFFSET MSG2MOV AH,09HINT 21HMOV AL, LETTER顯示“其它”有多少個(gè)CALL DISPMOV DX, OFFSET MSG3MOV AH,09HINT
21、21HMOV AL, OTHERCALL DISPMOV AH,4CH顯示子程序INT 21HDISP PROC NEARMOV AH,00HMOV DH,0AH DIV DHMOV CH,AH ADD AL, 30H MOV DL, ALMOV AH, 02H INT 21HADD CH,30H MOV DL, CHMOV AH, 02H INT 21HRETDISPENDPCODEENDSEND START第 17 頁(yè) 共 31 頁(yè)實(shí)驗(yàn)六:擴(kuò)展定時(shí)器 / 計(jì)數(shù)器接口實(shí)驗(yàn)( 1)計(jì)數(shù)器 0工作于方式 3,編寫初始化程序,觀察其輸出OUT0 信號(hào)的波形。修改計(jì)數(shù)初值,觀察OUTO信號(hào)的變化情況
22、。硬件連接方法:8254計(jì)數(shù)器0的CLKO端接規(guī)則的脈沖輸入(頻率自選),OUT0接示波器的 正極;示波器負(fù)極接地。程序流程圖略。參考源程序:DATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,20FH;寫入計(jì)數(shù)器 0 的控制字MOV AL,00010110BOUT DX,ALMOV DX,20CH;寫入計(jì)數(shù)器 0 的計(jì)數(shù)初值MOV AL,05HOUT DX,ALMOV AH,4CHINT 21HCODE ENDSEND START( 2)將
23、計(jì)數(shù)器 1和計(jì)數(shù)器 0級(jí)聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀察 OUT1和OUT0信號(hào)的波形,說明二者的關(guān)系。修改計(jì)數(shù)初值,觀察OUT0和OUT1輸出波形的變化情況。硬件連接方法:8254計(jì)數(shù)器1的CLK1端接規(guī)則的脈沖輸入(頻率自選), OUT1接 8254計(jì)數(shù) 器0的CLK0,計(jì)數(shù)器0的輸出OUT0接示波器正極;示波器負(fù)極接地。程序流程圖略。參考源程序:DATASEGMENTDB 100 DUP(?)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,20FHMOV AL,00010
24、110B OUT DX,ALMOV DX,20CHMOV AL,05H OUT DX,ALMOV DX,20FHMOV AL,01010110B OUT DX,ALMOV DX,20DHMOV AL,02H OUT DX,ALMOV AH,4CHINT 21HCODE ENDS;寫入計(jì)數(shù)器 0的控制字;寫入計(jì)數(shù)器 0的計(jì)數(shù)初值;寫入計(jì)數(shù)器 1的控制字;寫入計(jì)數(shù)器 1的計(jì)數(shù)初值END START實(shí)驗(yàn)七:并行輸入/輸出接口 8255A簡(jiǎn)單編程實(shí)驗(yàn)(1)利用 8255A 的 B 口輸出控制兩組發(fā)光二級(jí)管 L1,L3,L5,L7 和 L2,L4,L6,L8 亮滅交替變 化。分析:B 口輸出,即可實(shí)現(xiàn)兩
25、組發(fā)光二極管的亮滅交替變化。 因此 8255A 的 B 口可工作于方式 0 輸出, 其它端口未使 8255A 的方式控制字為: 10000000B(80H) 。按照題目要求,當(dāng) 8255A 的 B 口輸出為 01010101B(55H) 時(shí),發(fā)光二極管 L1,L3,L5,L7 會(huì)被點(diǎn)亮,當(dāng) 8255A 的 B 口輸出為 10101010B (0AAH) 時(shí),發(fā)光二極管 L2,L4,L6,L8 會(huì)被點(diǎn) 亮。因此,通過延時(shí)改變 8255A 的 由于 LED 隨時(shí)出于準(zhǔn)備好的狀態(tài), 用,無需考慮。因此, 硬件連接方法:8255A 的 B 口 PB0PB7 分別連接 L1L8 。 程序流程圖略。參考源
26、程序:.486DATASEGMENTPORTA DW 208HPORTB DW 209HPORTC DW 20AHPORT_CTR DW 20BH;8255A 端口 A 地址;8255A端口 B地址;8255A端口 C地址;8255A 控制端口地址DATAENDSSTACK1SEGMENT STACKSTACK1DB 100 DUP(?)ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1START:MOV AX,DATA;8255A初始化; 控制字MOV DS,AXMOV DX, PORT_CTRMOV AL, 10000000BOUT DX,
27、ALMOV DX, PORTB;8255A端口 B清零,LED初始化(全滅)MOV AL, 00HOUT DX, ALMOV BL, 01010101BLP0:MOV AL, BLOUT DX, ALCALL DELAYNOT ALMOV BL, ALMOV AH, 01H;調(diào)用BIOS的16H功能判斷鍵盤是否有輸入INT 16HJNZ EXITJMP LP0EXIT:MOV AH, 4CHINT 21HDELAY PROC NEAR;延時(shí)子程序(可通過修改NOP指令數(shù)量改變延時(shí)時(shí)間 )MOV ECX, 0FFFFFFFHLP2:NOPLOOPD LP2RETDELAY ENDPCODE EN
28、DSEND START(2)利用 8255A 的 A 口讀入 8 個(gè)開關(guān) K1K8 的狀態(tài),當(dāng)只有 K1 合上時(shí), L1L8 顯示00000001B;當(dāng)只有 K1和K2合上時(shí),L1L8顯示00000010B;當(dāng)只有 K1,K2和K3合上 時(shí),L1L8 顯示 00000011B;當(dāng)只有 K1,K2,K3 和 K4 合上時(shí),L1L8 顯示 00000100B ; 直到所有開關(guān)合上時(shí),L1L8顯示00001000B,并結(jié)束程序的運(yùn)行。發(fā)光二極管的狀態(tài)通過 8255A 的 B 口進(jìn)行控制。分析:按照題目要求,可以通過查詢的方式讀取 8255A 的 B 口狀態(tài),并根據(jù)查詢的結(jié)果給 A 口送出相應(yīng)數(shù)據(jù),
29、A 口工作在方式 0 的輸入狀態(tài), B 口工作在方式 0 輸出狀態(tài), C 口不需要 考慮,所以 8255A 的方式控制字為: 10010000B)硬件連接方法:(1)8255A 的 A 口 PA0PA7 對(duì)應(yīng)連接 K1K8 ;(2)8255A 的 B 口 PB0PB7 對(duì)應(yīng)連接 L1L8;源代碼:DATA SEGMENTLIST DB 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, 0FFHDATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS
30、:STACK1START: MOV AX, DATA第 19 頁(yè)共 31 頁(yè)MOV DS, AXMOV DX, 20BHMOV AL, 10010000BOUT DX, AL;8255A 初始化MOV DX, 209HMOV AL, 00HOUT DX, ALL0:MOV DX, 208HIN AL, DX;8255A的B口清零,LED初始化(全滅);讀8255A的A口,獲得開關(guān)狀態(tài)MOV BL, 00HMOV CX, 8 MOV SI, OFFSET LISTL1:INC BLCMP AL, SIJZ FINDINC SILOOP L1JMP L0FIND:MOV AL, BL;當(dāng)前開關(guān)狀態(tài)
31、為表中所列狀態(tài)之一MOV DX, 209H;顯示 LED 狀態(tài)OUT DX, ALCMP AL, 08HJNZ L0MOV AH, 4CHINT 21HCODE ENDSEND START第 25 頁(yè) 共 31 頁(yè)實(shí)驗(yàn)八:并行輸入/輸出接口 8255A綜合應(yīng)用實(shí)驗(yàn)(1)利用8254計(jì)數(shù)器0、計(jì)數(shù)器1和8255A的B 口實(shí)現(xiàn)對(duì)發(fā)光二極管的定時(shí)控制,讓8個(gè)發(fā)光二極管每隔1s從左到右依次點(diǎn)亮。(要求計(jì)數(shù)器1的時(shí)鐘脈沖頻率為250kHz )。分析:根據(jù)題目要求,需要利用 8254進(jìn)行定時(shí)1s控制,定時(shí)到后,改變 8255A的B 口輸出。 可以利用中斷的方式實(shí)現(xiàn),8254定時(shí)到時(shí)向CPU申請(qǐng)中斷,CPU
32、相應(yīng)中斷后在中斷程序中改變8255A的B 口輸出。由于題目要求8254的輸入脈沖頻率為 250kHz,所以需要級(jí)聯(lián)計(jì)數(shù)器 1和 計(jì)數(shù)器 0實(shí)現(xiàn) 1s定時(shí)(參考程序中利用計(jì)數(shù)器 1進(jìn)行20ms定時(shí),計(jì)數(shù)器0進(jìn)行50次計(jì)數(shù),計(jì)數(shù)次數(shù)到時(shí)由OUT0 向CPU申請(qǐng)中斷)。8255A的B 口控制LED,可工作在方式0輸出,A 口未使用,為了選通實(shí) 驗(yàn)板上的中斷輸入C口的PC7須輸出低電平,因此C口的高四位工作在方式 0輸出。綜合上述 要求,8254和8255A的初始化參數(shù)為:8254計(jì)數(shù)器1的計(jì)數(shù)初值為:N=20ms/4 pS=5000D ;方式控制字為: 01110100B (74H)8254計(jì)數(shù)器0
33、的計(jì)數(shù)初值為:N=50D ;方式控制字為: 00010100B (14H)8255A的方式控制字:10000000B ( 80H ); C 口按位置位/復(fù)位控制字:00001110B(0EH)(使PC7復(fù)位,允許8254的OUT0中斷到達(dá)系統(tǒng)8259的IRQ3端)此外,利用中斷方式實(shí)現(xiàn)題目要求的功能還需要設(shè)置系統(tǒng)8259芯片的中斷屏蔽字和系統(tǒng)存儲(chǔ)器中的中斷向量表(修改中斷類型號(hào)為0BH的中斷向量)。硬件連接方法:(1) 250kHz 脈沖輸出接 8254的 CLK1 , OUT1 接CLK0 , OUT0 接 IRQ ;(2) 8255A 的 B 口 PB0PB7 對(duì)應(yīng)連接 L1L8。程序流程
34、圖略。參考源程序:DATASEGMENTPORT0 DW 20CH;8254計(jì)數(shù)器 0端口地址PORT1 DW 20DH;8254計(jì)數(shù)器 1端口地址PORT2 DW 20EH;8254計(jì)數(shù)器 2端口地址PORT3 DW 20FH;8254控制寄存器端口地址PORTA DW 208H;8255A的A 口端口地址PORTB DW 209H;8255A的B 口端口地址PORTC DW 20AH;8255A的C口端口地址PORT_CTR DW 20BH;8255A的控制寄存器端口地址DATAENDSSTACK1SEGMENT STACKDB 100 DUP(0)STACK1ENDSCODESEGMEN
35、TASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1;8255初始化,B 口方式0輸岀,C 口高4位輸岀;PC7清零,允許8254中斷到IRQ3;發(fā)光二極管初始化 (全滅 );保存系統(tǒng)原有 0BH 號(hào)中斷的中斷向量至堆棧START: MOV AX, DATAMOV DS, AXMOV ES, AXMOV AL, 80HMOV DX, PORT_CTROUT DX, ALMOV AL, 0EHOUT DX, ALMOV AL, 00HMOV DX, PORTBOUT DX, ALMOV AX, 350BHINT 21HPUSH ESPUSH BXMOV AX,
36、 SEG INTPROCMOV DS, AXMOV DX, OFFSET INTPROC MOV AX, 250BHINT 21HIN AL, 21HAND AL, 0F7HOUT 21H, ALSTIMOV DX, PORT3MOV AL, 14HOUT DX, AL MOV DX, PORT0MOV AL, 50DOUT DX, ALMOV DX, PORT3MOV AL, 74HOUT DX, ALMOV DX, PORT1MOV AX, 5000DOUT DX, ALMOV AL, AHOUT DX, AL;將程序要求的中斷向量寫入;設(shè)置8259的IMR寄存器,允許IRQ3中斷;開中斷
37、,CPU可以響應(yīng)外部可屏蔽中斷;8254計(jì)數(shù)器 0初始化;計(jì)數(shù)器 0 寫入計(jì)數(shù)初值 50D;8254計(jì)數(shù)器 1初始化;計(jì)數(shù)器 1寫入計(jì)數(shù)初值 5000DMOV BH, 80HMOV AL, BHMOV DX, PORTBOUT DX, AL;BH存放當(dāng)前8255A的B 口輸岀;8255A的B口輸岀WAIT0: NOPNOPNOPMOV AH, 01H INT 16HJNZ EXITJMP WAIT0; 判斷鍵盤上是否有鍵按下,若有則結(jié)束程序EXIT:POP DX;恢復(fù)中斷向量表中的原有 0BH 號(hào)中斷向量POP DSMOV AX, 250BHINT 21HMOV AH, 4CHINT 21HI
38、NTPROC PROC NEARMOV AL, BHROR AL,1MOV BH, ALMOV DX, PORTBOUT DX, ALMOV AL, 20HOUT 20H, ALIRETINTPROC ENDPCODE ENDSEND START;向8255A的B口寫岀數(shù)據(jù),點(diǎn)亮對(duì)應(yīng) LED;向8259發(fā)岀中斷結(jié)束命令(2) 8255A的A 口與8個(gè)開關(guān)相連,工作于方式 1下,要求:利用當(dāng)前的開關(guān)狀態(tài)通過B 口控制L1L8的亮或滅。A 口的/STB A選通信號(hào)由按鍵K發(fā)出,每按一次K鍵,讀入當(dāng)前開關(guān)狀態(tài)。 分析:8255A的B 口用來控制LED的亮滅,可工作在方式 0下。根據(jù)題意,可以通過查詢
39、方式 不斷讀取8255A的C 口狀態(tài)確定K鍵是否按下,也可以利用中斷方式,當(dāng)K鍵按下時(shí),由INTRA ( PC3)向CPU申請(qǐng)中斷。當(dāng)判斷 K鍵按下后,讀取 8255A的A口狀態(tài),并通過 B 口顯示到LED上。利用查詢方式實(shí)現(xiàn)時(shí),僅需要給定方式選擇 控制字;利用中斷方式實(shí)現(xiàn)時(shí),除控制字外還需設(shè)定 INTEA 為1,允許 INTRA 申請(qǐng)中斷。因此,8255A的方式控制字為:10110000B(0B0H);使INTEA(PC4)置1,其控制字為00001001B ( 09H )。注意:利用中斷方式實(shí)現(xiàn)時(shí)還需要置PC7為0,使INTRA能到達(dá)8259的 IRQ3硬件連接與參考源程序:( 1 )利用
40、查詢方式實(shí)現(xiàn)硬件連接:1) 8255A 的 A 口 PA0PA7 與 K1K8 對(duì)應(yīng)相連;2) 8255A 的 B 口 PB0PB7與 L1L8 對(duì)應(yīng)相連;3) 按鍵 K接 8255A 的 C 口 PC4。參考源程序:CODESTART:SEGMENTASSUME CS:CODEMOV AL, 0B0HMOV DX, 20BHOUT DX, AL; 8255A 初始化,方式控制字 10110000BMOV DX, 209HMOV AL, 00HOUT DX, AL;LED 初始化AGAIN:MOV AH, 01HINT 16HJNZ EXIT;判斷計(jì)算機(jī)鍵盤上是否有鍵按下,若有結(jié)束程序MOV
41、DX, 20AHIN AL, DX;讀入8255A的C 口狀態(tài)TEST AL, 00010000BJNZ AGAIN;判斷 PC4=1 ? (K 鍵是否按下 )MOV DX, 208HIN AL, DX;讀入8255A的A 口狀態(tài)MOV DX, 209HOUT DX, ALJMP AGAIN;將A 口狀態(tài)送8255A的B 口EXIT:MOV AH, 4CHINT 21HCODEENDSEND START2)利用中斷方式實(shí)現(xiàn)硬件連接:1) 8255A 的 A 口 PA0PA7 與 K1K8 對(duì)應(yīng)相連;2) 8255A 的 B 口 PB0PB7與 L1L8 對(duì)應(yīng)相連;3) 按鍵 K接 8255A
42、的 C 口 PC4 ;4) 8255A 的 CD PC3( INTRA )接 IRQ。參考源程序:DATA SEGMENT;8255A的A 口地址;8255A的B 口地址;8255A的C 口地址;8255A的控制口地址PORTA DW 208HPORTB DW 209HPORTC DW 20AHPORT_CTR DW 20BHDATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(O)STACK1 ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1START: MOV AX, DATAMOV DS, A
43、XMOV ES, AX;寫入8255A方式控制字OBOH;寫入C 口按位置位控制字,PC4置“ 1 ”;寫入C 口按位復(fù)位控制字,PC7置“ 0”,開IRQ;保存系統(tǒng)原有中斷號(hào)為 0BH的中斷向量到堆棧;向0BH號(hào)中斷寫入新的中斷向量;允許8259的IRQ3中斷;允許CPU響應(yīng)可屏蔽中斷;判斷是否有鍵按下,若有則結(jié)束程序,若無則等待;恢復(fù)系統(tǒng)中斷向量表MOV DX, PORT_CTRMOV AL, 0B0HOUT DX, ALMOV AL, 09HOUT DX, ALMOV AL, 0EHOUT DX, ALMOV AX, 350BHINT 21HPUSH ESPUSH BXMOV AX, S
44、EG INTPROCMOV DS, AXMOV DX, OFFSET INTPROCMOV AX, 250BHINT 21HIN AL, 21HAND AL, 0F7HOUT 21H, ALSTIWAIT0:MOV AH, 01HINT 16HJZ WAIT0POP DX第23頁(yè)共31頁(yè)P(yáng)OP DSMOV AX, 250BHINT 21HMOV AH, 4CHINT 21H第 33 頁(yè) 共 31 頁(yè)LED 顯示INTPROC PROC NEARMOV DX, PORTA IN AL, DXMOV DX, PORTB OUT DX, ALMOV AL, 20HOUT 20H, ALIRETINT
45、PROC ENDPCODE ENDSEND START;讀入8255A端口 A的狀態(tài)(開關(guān)狀態(tài));從8255A的B 口輸岀開關(guān)狀態(tài),由對(duì)應(yīng)的;給8259發(fā)中斷結(jié)束指令實(shí)驗(yàn)九:LED顯示器接口實(shí)驗(yàn)(1)編制一個(gè)從左到右循環(huán)顯示字符“ 8的程序,要求每個(gè)字位的停留時(shí)間約為1s,當(dāng)從標(biāo)準(zhǔn)鍵盤上按下任意鍵時(shí)結(jié)束程序。分析: 根據(jù)題意要求, 實(shí)驗(yàn)板上的 6位8段數(shù)碼管的段選信號(hào)均相同,為字符“8”的段碼( 80H )。為了實(shí)現(xiàn)從左到右循環(huán)顯示且每個(gè)字位停留約1s的功能,只需要每隔一秒給位選信號(hào)賦值,選通/斷開相應(yīng)的位即可。當(dāng)循環(huán)顯示到最右端時(shí),延時(shí)1s再?gòu)淖钭蠖碎_始顯示。為此,在該題中我們利用8255A
46、的A 口作為6位LED顯示器的段選口 (地址208H),8255A的B 口作為6位LED顯示器的位選口(地址 209H )。8255A的控制字為:10000000B( 80H)硬件連接:(1)8255A的A 口 PA0PA7分別對(duì)應(yīng)連接LED顯示器的段選輸入ah.(2)8255A的B 口 PB0PB5分別對(duì)應(yīng)連接LED1LED6顯示器的位選輸入。程序流程圖略。參考源程序:.486STACK1 SEGMENT STACKDB 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE, SS:STACK1START: MOV AL, 80H; 8255A工作方
47、式初始化, A 口方式0輸岀,B 口方式0輸岀MOV DX, 20BHOUT DX, ALMOV AL, 80H;8255A的A 口輸岀字符“ 8”的段碼80HMOV DX, 208HOUT DX, ALL1:MOV BL, 20HL2:MOV AL, BLMOV DX, 209HOUT DX, AL CALL DELAYMOV AH, 01HINT 16HJNZ EXITSHR BL, 1JNZ L2;LED顯示器位選信號(hào)存放在 BL中,20H表示最左邊一位 ;將 LED位選信號(hào)輸岀到 8255A的B 口; 調(diào)研軟件延時(shí)程序;判斷標(biāo)準(zhǔn)鍵盤上是否有鍵按下,若有則結(jié)束程序;LED 位選信號(hào)右移一
48、位,選中下一位 LEDJMP L1;當(dāng)循環(huán)到最右邊一位 LED時(shí),重新填充BL值,開始新一輪循環(huán)EXIT:MOV DX, 208HMOV AL, 0FFHOUT DX, AL MOV DX, 209H MOV AL, 00H OUT DX, AL;關(guān)閉所有 LEDMOV AH, 4CHINT 21HDELAY PROC NEARMOV ECX, 0FFFFFFFHLP: LOOPD LPRETDELAY ENDP CODE ENDSEND START(2)完成多位 LED 顯示器的顯示, 即設(shè)計(jì)一個(gè)顯示字符串 1234.56 的程序, 當(dāng)標(biāo)準(zhǔn)鍵盤上有 任意鍵按下時(shí)結(jié)束程序?;舅枷耄?借助動(dòng)態(tài)
49、掃描、 分時(shí)顯示的辦法, 利用人眼視覺的滯留效應(yīng), 實(shí)現(xiàn)人眼看上去的 各位 “同時(shí)”顯示。 分析:利用實(shí)驗(yàn)操作面板上引出的8255A的分別A 口和B 口作為6位8段LED顯示器的位選口和段選口,從段選口依次輸出待顯示字符的段碼,并選通相應(yīng)的位實(shí)現(xiàn)對(duì)多位LED顯示器的刷新。8255A的A 口和B 口均工作在方式 0的輸出方式,方式控制字為:1000000B(80H )。硬件連接:(1)8255A 的 A 口 PA0PA5 對(duì)應(yīng)連接 LED1LED6的位選;(2)8255A的B 口 PB0PB7對(duì)應(yīng)連接段選ah;程序流程圖略。參考源程序:DATASEGMENTSEGTAB DB 0C0H, 0F9
50、H, 0A4H, 0B0H;定義 0F 的段碼存儲(chǔ)區(qū)DB 99H, 92H, 82H, 0F8HDB 80H, 98H, 88H, 83HDB 0C6H, 0A1H, 86H, 8EHDISPMEM DB 01H, 02H, 03H, 04H, 05H, 06H;定義顯示緩沖區(qū)DATAENDSSTACK1SEGMENT STACKDB 100 DUP(0)STACK1ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1START: MOV AX, DATA MOV DS, AX MOV AL, 80H MOV DX, 20BH OUT DX, ALL1: MOV AH, 20HLEA SI, DISPMEMLEA BX, SEGTABL2: MOV AL, SIXLATCMP AH, 04H JNE NEXTAND AL, 7FH NEXT: MOV DX, 209HOUT DX, AL MOV DX, 208H MOV AL, AH OUT DX, AL MOV CX, 4000LP2:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)空氣清新機(jī)行業(yè)運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 貴州工程應(yīng)用技術(shù)學(xué)院《運(yùn)動(dòng)醫(yī)務(wù)監(jiān)督與康復(fù)治療》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年海南省安全員《B證》考試題庫(kù)
- 2025年建筑安全員B證考試題庫(kù)
- 山東現(xiàn)代學(xué)院《建筑設(shè)備CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 朔州師范高等??茖W(xué)?!峨姽y(cè)試技術(shù)(上)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢科技大學(xué)《云數(shù)據(jù)庫(kù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 日照航海工程職業(yè)學(xué)院《國(guó)際貨物運(yùn)輸與保險(xiǎn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇信息職業(yè)技術(shù)學(xué)院《國(guó)際中文教學(xué)發(fā)展史》2023-2024學(xué)年第二學(xué)期期末試卷
- 邯鄲應(yīng)用技術(shù)職業(yè)學(xué)院《Bayes統(tǒng)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 護(hù)理分級(jí)標(biāo)準(zhǔn)
- 水池維修改造方案
- 國(guó)網(wǎng)陜西省電力有限公司高校畢業(yè)生招聘考試試題及答案
- 非公司企業(yè)法人章程范本樣本
- 《高溫熔融金屬吊運(yùn)安全規(guī)程》(AQ7011-2018)
- 電機(jī)與拖動(dòng)(高職)全套教學(xué)課件
- 散裝液體危險(xiǎn)貨物申報(bào)員培訓(xùn)講義
- 山東春季高考-汽車專業(yè)必備考試題庫(kù)(學(xué)校)
- 返家鄉(xiāng)社會(huì)實(shí)踐
- 小學(xué)生網(wǎng)絡(luò)安全省公開課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- 2022小學(xué)語文新課程標(biāo)準(zhǔn)模擬測(cè)試題六份答案
評(píng)論
0/150
提交評(píng)論