版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精品word 名師歸納總結(jié) - - - - - - - - - - - -試驗一:簡潔程序設(shè)計試驗(1)編寫一個32 位無符號數(shù)除法的程序,要求將存放在NUM1中的 32 位無符號數(shù)與存放在 NUM2 中的 16 位無符號數(shù)相除,結(jié)果存放在NUM3 和 NUM4中;程序流程圖略;參考源程序:DATASEGMENTNUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW .NUM4 DW .DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,DATA;數(shù)據(jù)段寄存器初始化 MOV DS,AXMOV AX, WORD P
2、TR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2MOV NUM3,AX MOV NUM4,DXMOV AH,4CH;正常返回 DOS 系統(tǒng)INT 21HCODEENDS END START(2)編寫一個拆字程序;要求將存放在ARY 單元的 2 位十六進制數(shù)X 1X 2 拆為 X 1 和 X 2 兩部分,并以0X 1 和 0X 2 的形式分別存入ARY+1和 ARY+2 單元中;程序流程圖略;參考源程序:DATASEGMENT ARY DB 2AH,.,.DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,
3、DATAMOV DS,AXMOV SI,OFFSET ARY;取ARY 的偏移地址MOV AL,SI;取16進制數(shù)至 AL精選名師 優(yōu)秀名師 - - - - - - - - - -第 22 頁,共 31 頁 - - - - - - - - - -MOV BL,ALAND AL,0F0H;取16進制數(shù)的高四位,即X1SHR AL,4MOV SI+1,ALMOV AL,BL;存0X 1AND AL,0FH;取16進制數(shù)的低四位,即X2MOV SI+2,AL;存0X 2MOV AH,4CHINT 21HCODEENDS END START試驗二:分支程序設(shè)計試驗(1)編寫一個字符比較程序,比較3 個
4、無符號字節(jié)數(shù)A ,B, C 的大小,并依據(jù)比較結(jié)果對變量 K 賦值:假如 3 個數(shù)不相等,就K=0 ;假如 3 個數(shù)中有兩個相等,就K=1 ;假如 3 個數(shù)都相等,就K=2 ;程序流程圖略;參考源程序:DATASEGMENT;定義待比較數(shù)A 、B 、C,比較結(jié)果 K A DB 20HB DB 20H C DB 20H K DB .DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,ACMP AL,B;對 A 、B進行比較,不相等就轉(zhuǎn)到COMP2JNE COMP2;相等就比較A 、CCMP AL,CJ
5、NE K1 JMP K2; A 、C不相等就 K=1; A 、C相等就 K=2COMP2:MOV BL,B CMP BL,CJE K1;對 B、 C進行比較,相等就K=1CMP AL,CJE K1;對 A 、C進行比較,相等就K=1K0:MOV K,0 JMP EXITK1:MOV K,1K2:JMP EXIT MOV K,2EXIT:MOV AH,4CHINT 21HCODEENDS END START(2)編寫一個能實現(xiàn)以下表達式的程序:.N = .A + BA B設(shè) A, B, C 為小于 128 的正整數(shù);. A - B + C程序流程圖略;參考源程序:A BDATASEGMENTA
6、DB 22H;定義A 、B 、C、NB DB 10HC DB 01HN DB .DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL, A CMP AL, BJG CALCUL;A小于或等于B 就 N=A+BADD AL,BJMP EXITCALCUL: SUB AL, BADC AL, CEXIT:MOV N, AL MOV AH,4CH INT 21HCODEENDSEND START試驗三循環(huán)程序設(shè)計試驗(1)將字符串 STRN (以 “ $結(jié)”尾)中的每一個字符均加上偶校驗位,并統(tǒng)計有多少個
7、字符因含有奇數(shù)個“ 1而”加上了校驗位;統(tǒng)計結(jié)果存于N單元中;程序流程圖略;參考源程序:DA TASEGMENTSTRN DB What$;任意定義一個字串,以“$”結(jié)尾COUNT EQU $-STRN N DB .BUF DB COUNT DUP.DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATA START:MOV AX, DATAMOV DS, AX MOV AX, DATA MOV ES, AXLEA SI, STRN LEA DI, BUF MOV CX, COUNT MOV AL, 0LP1:MOV BL, SI;逐個取字符進行判定AND BL,
8、BL;自己和自己做與運算JP NEXT;依據(jù) PF 標志位的變化進行跳轉(zhuǎn)INC ALORBL, 80H NEXT:MOV DI, BLINC SIINC DI LOOP LP1MOV N, ALMOV AH, 4CH INT 21HCODEENDSEND START(2)在 FIRST開頭的一片連續(xù)的數(shù)據(jù)區(qū)中存放著100 個數(shù)據(jù),編寫一個程序,統(tǒng)計第1個數(shù)據(jù) 0之前的數(shù)據(jù)個數(shù);程序流程圖略;參考源程序:DA TASEGMENTFIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H;任取 9 個數(shù)做演示 COUNT EQU $-FIRSTNUM DB .DAT
9、AENDSCODESEGMENTASSUME CS:CODE, DS:DATA START:MOV AX,DATAMOV DS,AXMOV DL, 0;計數(shù)值初始為0MOV CX,COUNTMOV BX, OFFSET FIRSTLP1:MOV AL, BX;每次取一個數(shù),與0 比較CMP AL, 00H JNE NEXTJMP EXIT;找到 0 就退出NEXT:INC DL;沒找到 0 就計數(shù)值加1 INC BXLOOP LP1EXIT:MOV NUM, DLMOV AH, 4CH INT 21HCODEENDS END START試驗四:子程序設(shè)計試驗將BUF 開頭的 10個單元中兩位十
10、六進制數(shù)轉(zhuǎn)換成ASCII 碼,并在屏幕上顯示出來;要求碼型轉(zhuǎn)換通過子程序HEXASC 實現(xiàn),參數(shù)傳送采納寄存器傳送方式;程序流程圖略;參考源程序 :1 實現(xiàn)方法一:遠過程調(diào)用DA TA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF;定義任意長度的一段BUF DA TA ENDSSTACK1 SEGMENT STACKDB 100 DUP.;設(shè)置足夠深度的棧區(qū)STACK1 ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DA
11、TAMOV DS,AXMOV SI,OFFSET BUF MOV CX,COUNTAGAIN:MOV AL,SI MOV BL,AL;逐個取數(shù)SHR AL,4AND AL,0FH;先對高字節(jié)部分轉(zhuǎn)換(寄存器AL傳參)CALL FAR PTR HEXASC;調(diào)用子程序MOV DL,ALMOV AH,02H INT 21H;顯示高字節(jié)部分對應的字符MOV AL,BLAND AL,0FH;再對低字節(jié)部分轉(zhuǎn)換(寄存器AL傳參)CALL FAR PTR HEXASC;調(diào)用子程序MOV DL,ALMOV AH,02H INT 21H;顯示低字節(jié)部分對應的字符MOV DL,20HMOV AH,02H;顯示空
12、格INT 21HINC SILOOP AGAINMOV AH,4CH INT 21HCODEENDSCODEBSEGMENTASSUME CS:CODEB HEXASCPROC FARCMP AL,09H;判定是不是數(shù)字JA HEXATOF;是字母就轉(zhuǎn)到HEXATOFADD AL,30H;是數(shù)字就對應到數(shù)字的ASCII 碼JMP ENDHEXHEXATOF:ADD AL,37H;是字母就對應到字母的ASCII 碼ENDHEX: RET HEXASCENDP CODEBENDSEND START2 實現(xiàn)方法二:近過程調(diào)用DA TA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,
13、33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF;定義任意長度的一段BUF DA TA ENDSSTACK1 SEGMENT STACKDB 100 DUP.;設(shè)置足夠深度的棧區(qū)STACK1 ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF MOV CX,COUNTAGAIN:MOV AL,SI MOV BL,AL;逐個取數(shù)SHR AL,4AND AL,0FHCALL HEXASC;先對高字節(jié)部分做轉(zhuǎn)換MOV DL,AL;顯示高字
14、節(jié)部分對應的字符MOV AH,02H INT 21HMOV AL,BLAND AL,0FH;再對低字節(jié)部分做轉(zhuǎn)換CALL HEXASCMOV DL,AL;顯示低字節(jié)部分對應的字符MOV AH,02H INT 21HMOV DL,20H;顯示空格MOV AH,02H INT 21HINC SI;連續(xù)循環(huán)或退出LOOP AGAINMOV AH,4CH INT 21HHEXASCPROC NEARCMP AL,09H JAHEXATOF ADDAL,30H JMP ENDHEXHEXATOF:ADD AL,37H ENDHEX: RET HEXASCENDPCODEENDS END START試驗五
15、:DOS 中斷調(diào)用試驗(1)假如從鍵盤上依次輸入的是一個數(shù)字和一個字母,就輸出“ RIGHT ”標記后終止程序,否就輸出標記“ERROR ”后轉(zhuǎn)向原出錯處重做;試編程實現(xiàn)該功能;程序流程圖略;參考源程序 :DA TASEGMENTMSG DB 0AH,0DH,RIGHT,0AH,0DH,$ WRN DB 0AH,0DH,ERROR,0AH,0DH,$DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATA START:MOV AX,DATAMOV DS,AXAGAIN:MOV AH,01H;等待用戶輸入1 個字符并顯示INT 21H CMP AL,39H JA EM
16、SG CMP AL,30HJB EMSG;判定輸入是否是數(shù)字,不是就報錯MOV AH,01H;等待用戶輸入1 個字符并顯示INT 21H CMP AL,A JB EMSGCMP AL,Z;判定輸入是否是大寫字母,不是就連續(xù)JB EXIT;判定是不是小寫字母CMP AL,a JB EMSG CMP AL,zJB EXIT;不是字母就報錯,是字母就轉(zhuǎn)到EXITEMSG:LEA DX,WRNMOV AH,09H INT 21HJMP AGAINEXIT:MOV DX,OFFSET MSGMOV AH,09H;顯示 “ RIGHT”并退出 INT 21HMOV AH,4CHINT 21HCODEEND
17、S END START( 2)編寫一程序分類統(tǒng)計字符個數(shù):即接收鍵入的一串字符(字符個數(shù)不超過50個,該字符串用回車作為終止),并按數(shù)字、字母和其它字符分類計數(shù),然后將結(jié)果存入digit 、letter和other 3 個儲備單元中,并顯示結(jié)果;程序流程圖略;參考源程序 :DA TASEGMENTMSG1 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 0
18、DB 50 DUP.;設(shè)置足夠深的棧區(qū)DIGIT DB . LETTER DB . OTHER DB .DATAENDSSTACK1SEGMENT STACKDB 100 DUP. STACK1ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATAMOV DS,AXMOV AH,0AH;等待用戶輸入字符串并顯示MOV DX,OFFSET BUF INT 21HMOV SI, OFFSET BUF MOV CL,SI+1MOV CH,00H MOV AL,00H MOV AH,00H MOV BH,00HAGAIN:MO
19、V BL,SI+2CMP BL,30HJB OTH; ASCII 碼小于 30H 就歸類為 “其它 ”CMP BL,3AHJB DIG; ASCII 碼大于等于30H 小于 3AH 就歸類為 “數(shù)字 ” CMP BL,41HJB OTH; ASCII 碼大于等于3AH 小于 41H 就歸類為 “其它 ” CMP BL,5BHJB LET;ASCII 碼大于等于41H 小于 5BH 就歸類為 “字母 ” CMP BL,61HJB OTH; ASCII 碼大于等于5BH 小于 61H 就歸類為 “其它 ” CMP BL,7BHJB LET; ASCII 碼大于等于61H 小于 7BH 就歸類為 “
20、字母 ”O(jiān)TH:INC AL; “其它 ”計數(shù)器加1 JMP ENDLPDIG:LET:INC AH; “數(shù)字 ”計數(shù)器加1JMP ENDLPINC BH; “字母 ”計數(shù)器加1ENDLP:INC SILOOP AGAIN;連續(xù)循環(huán)MOV DIGIT, AH;統(tǒng)計各類個數(shù)MOV LETTER, BH MOV OTHER, ALMOV DX, OFFSET MSG1 MOV AH,09HINT 21HMOV AL, DIGIT CALL DISP;顯示 “數(shù)字 ”有多少個MOV DX, OFFSET MSG2 MOV AH,09HINT 21HMOV AL, LETTER CALL DISP;顯
21、示 “字母 ”有多少個MOV DX, OFFSET MSG3 MOV AH,09HINT 21HMOV AL, OTHER CALL DISP;顯示 “其它 ”有多少個MOV AH,4CH INT 21HDISPPROC NEAR;顯示子程序MOV AH,00H MOV DH,0AH DIV DHMOVCH,AH ADDAL,30H MOVDL,AL MOV AH, 02H INT 21HADD CH,30HMOV DL, CH MOV AH, 02H INT 21HRETDISPENDPCODEENDS END START試驗六:擴展定時器 / 計數(shù)器接口試驗( 1)計數(shù)器 0工作于方式 3
22、,編寫初始化程序,觀看其輸出 OUT0 信號的波形;修改計數(shù)初值,觀看 OUT0 信號的變化情形; 硬件連接方法: 8254計數(shù)器 0的CLK0 端接規(guī)章的脈沖輸入(頻率自選), OUT0 接示波器的 正極;示波器負極接地;程序流程圖略;參考源程序:DATA SEGMENTDB 100 DUP. DATA ENDSCODESEGMENTSTART:ASSUME CS:CODE, DS:DATAMOV AX,DATAMOV DS,AXMOV DX,20FH;寫入計數(shù)器 0的掌握字MOV AL,00010110BOUT DX,ALMOV DX,20CH;寫入計數(shù)器 0的計數(shù)初值MOV AL,05H
23、OUT DX,ALMOV AH,4CHINT 21HCODEENDSEND START( 2)將計數(shù)器1和計數(shù)器 0 級聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀看OUT1 和OUT0 信號的波形,說明二者的關(guān)系;修改計數(shù)初值,觀看OUT0 和 OUT1 輸出波形的變 化情形;硬件連接方法:8254 計數(shù)器 1的CLK1 端接規(guī)章的脈沖輸入(頻率自選),OUT1 接8254計數(shù) 器0的CLK0 ,計數(shù)器 0的輸出 OUT0 接示波器正極;示波器負極接地;程序流程圖略;參考源程序:DATASEGMENT DB 100 DUP.DATAENDSCODESEGMENTSTART:ASSUME C
24、S:CODE,DS:DATAMOV AX,DATAMOV DS,AXMOV DX,20FHMOV AL,00010110B;寫入計數(shù)器0的掌握字OUT DX,ALMOV DX,20CH;寫入計數(shù)器0的計數(shù)初值MOV AL,05HOUT DX,ALMOV DX,20FHMOV AL,01010110B;寫入計數(shù)器1的掌握字OUT DX,ALMOV DX,20DH;寫入計數(shù)器1的計數(shù)初值MOV AL,02HOUT DX,ALMOV AH,4CHINT 21HCODEENDSEND START試驗七:并行輸入 / 輸出接口 8255A簡潔編程試驗(1)利用 8255A 的 B 口輸出掌握兩組發(fā)光二級
25、管L1,L3,L5,L7和 L2,L4,L6,L8亮滅交替變化;分析:依據(jù)題目要求,當 8255A 的 B 口輸出為 01010101B55H 時,發(fā)光二極管 L1,L3,L5,L7 會被點亮,當 8255A 的 B 口輸出為 10101010B 0AAH 時,發(fā)光二極管 L2,L4,L6,L8 會被點亮;因此,通過延時轉(zhuǎn)變 8255A 的 B 口輸出,即可實現(xiàn)兩組發(fā)光二極管的亮滅交替變化;由于 LED 隨時出于預備好的狀態(tài),因此 8255A 的 B 口可工作于方式0 輸出, 其它端口未使用,無需考慮;因此,8255A 的方式掌握字為:10000000B80H ;硬件連接方法:8255A 的
26、B 口 PB0PB7 分別連接L1L8 ;程序流程圖略;參考源程序:.486DATASEGMENTPORTA DW 208H;8255A 端口 A地址 PORTB DW 209H;8255A 端口 B地址 PORTC DW 20AH;8255A 端口 C地址 PORT_CTR DW 20BH;8255A 掌握端口地址DATAENDSSTACK1SEGMENT STACKDB 100 DUP. STACK1ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1 START:MOV AX,DATAMOV DS,AXMOV DX, PORT_CTR MOV
27、 AL, 10000000B OUT DX, ALMOV DX, PORTB MOV AL, 00H OUT DX, AL;8255A 初始化;掌握字;8255A 端口 B 清零, LED 初始化 全滅 LP0:MOV BL, 01010101B MOV AL, BLOUT DX, AL CALL DELAYNOT ALMOV BL, ALMOV AH, 01H;調(diào)用 BIOS 的 16H 功能判定鍵盤是否有輸入INT 16HJNZ EXITJMP LP0EXIT:MOV AH, 4CH INT 21HDELAYPROC NEAR;延時子程序 可通過修改 NOP 指令數(shù)量轉(zhuǎn)變延時時間MOV E
28、CX, 0FFFFFFFHLP2:NOPLOOPD LP2RETDELAYENDPCODEENDSEND START(2)利用8255A 的 A 口 讀入8 個開關(guān)K1K8的狀態(tài),當只有K1 合上時, L1L8 顯示00000001B ;當只有K1 和 K2 合上時, L1L8 顯示 00000010B;當只有K1,K2 和 K3 合上 時, L1L8 顯示 00000011B;當只有K1,K2,K3和 K4 合上時, L1L8顯示 00000100B ; 直到全部開關(guān)合上時,L1L8顯示00001000B ,并終止程序的運行;發(fā)光二極管的狀態(tài)通過 8255A 的 B 口進行掌握;分析:依據(jù)題
29、目要求,可以通過查詢的方式讀取8255A 的 B 口狀態(tài),并依據(jù)查詢的結(jié)果給A 口送出相應數(shù)據(jù),A 口工作在方式0 的輸入狀態(tài), B 口工作在方式0 輸出狀態(tài), C 口不需要考慮,所以8255A 的方式掌握字為:10010000B )硬件連接方法:( 1) 8255A 的 A 口 PA0PA7 對應連接K1K8 ;( 2) 8255A 的 B 口 PB0PB7 對應連接L1L8 ;源代碼:DATASEGMENTLISTDB 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, 0FFH DATAENDSSTACK1SEGMENT STACKDB 100 DUP. STACK1E
30、NDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1 START:MOV AX, DATAMOV DS, AXMOV DX, 20BH;8255A 初始化MOV AL, 10010000B OUT DX, ALMOV DX, 209H;8255A 的B口清零, LED 初始化 全滅 MOV AL, 00H OUT DX, ALL0:MOV DX, 208H;讀8255A 的A口,獲得開關(guān)狀態(tài)INAL, DXMOV BL, 00H MOV CX, 8MOV SI, OFFSET LISTL1:INC BLCMP AL, SI JZFIND INC SI
31、 LOOP L1 JMP L0FIND:MOV AL, BL MOV DX, 209H OUT DX, AL CMP AL, 08H JNZ L0MOV AH, 4CH INT 21HCODEENDS END START;當前開關(guān)狀態(tài)為表中所列狀態(tài)之一;顯示 LED 狀態(tài)試驗八:并行輸入 / 輸出接口 8255A綜合應用試驗( 1)利用 8254計數(shù)器 0、計數(shù)器 1和8255A的B口實現(xiàn)對發(fā)光二極管的定時掌握,讓8個發(fā)光二極管每隔 1s從左到右依次點亮;(要求計數(shù)器1的時鐘脈沖頻率為250kHz );分析: 依據(jù)題目要求,需要利用8254進行定時 1s掌握,定時到后,轉(zhuǎn)變8255A 的B口輸
32、出;可以利用中斷的方式實現(xiàn),8254定時到時向 CPU申請中斷, CPU 相應中斷后在中斷程序中轉(zhuǎn)變8255A 的B口輸出;由于題目要求8254的輸入脈沖頻率為250kHz ,所以需要級聯(lián)計數(shù)器1和計數(shù)器 0實現(xiàn) 1s定時(參考程序中利用計數(shù)器1進行 20ms定時,計數(shù)器 0進行 50次計數(shù),計數(shù)次數(shù)到時由OUT0 向CPU 申請中斷);8255A 的B口掌握 LED ,可工作在方式0輸出, A 口未使用,為了選通實 驗板上的中斷輸入C口的 PC7須輸出低電平,因此C口的高四位工作在方式0輸出;綜合上述要求, 8254和8255A 的初始化參數(shù)為:8254計數(shù)器 1的計數(shù)初值為:N=20ms/
33、4 s=5000D ;方式掌握字為:01110100B 74H8254計數(shù)器 0的計數(shù)初值為:N=50D ;方式掌握字為:00010100B 14H8255A 的方式掌握字:10000000B( 80H ); C口按位置位/復位掌握字:00001110B0EH 使PC7復位,答應 8254的OUT0 中斷到達系統(tǒng)8259的IRQ3 端此外,利用中斷方式實現(xiàn)題目要求的功能仍需要設(shè)置系統(tǒng)8259芯片的中斷屏蔽字和系統(tǒng)儲備器中的中斷向量表(修改中斷類型號為0BH 的中斷向量);硬件連接方法:(1) 250kHz 脈沖輸出接 8254的CLK1 , OUT1 接CLK0 , OUT0 接IRQ ;(2
34、) 8255A 的B口PB0PB7 對應連接 L1L8 ;程序流程圖略;參考源程序:DATASEGMENTPORT0 DW 20CH;8254計數(shù)器 0端口地址PORT1 DW 20DH;8254計數(shù)器 1端口地址PORT2 DW 20EH;8254計數(shù)器 2端口地址PORT3 DW 20FH;8254掌握寄存器端口地址PORTA DW 208H;8255A 的A 口端口地址PORTB DW 209H;8255A 的B 口端口地址PORTC DW 20AH;8255A 的C口端口地址DATAPORT_CTR DW 20BH ENDS;8255A 的掌握寄存器端口地址STACK1SEGMENT
35、STACKDB 100 DUP0 STACK1ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1START:MOV AX, DATAMOV DS, AX MOV ES, AXMOV AL, 80H; 8255初始化 , B 口方式 0輸出, C口高 4位輸出 MOV DX, PORT_CTROUT DX, ALMOV AL, 0EH;PC7清零,答應 8254中斷到 IRQ3 OUT DX, ALMOV AL, 00H;發(fā)光二極管初始化全滅 MOV DX, PORTBOUT DX, ALMOV AX, 350BH;儲存系統(tǒng)原有0
36、BH 號中斷的中斷向量至堆棧INT 21H PUSH ES PUSH BXMOV AX, SEG INTPROC MOV DS, AXMOV DX, OFFSET INTPROCMOV AX, 250BH;將程序要求的中斷向量寫入 INT 21HIN AL, 21H;設(shè)置 8259的IMR 寄存器,答應IRQ3 中斷 AND AL, 0F7HOUT 21H, ALSTI;開中斷, CPU 可以響應外部可屏蔽中斷MOV DX, PORT3;8254 計數(shù)器 0初始化 MOV AL, 14HOUT DX, ALMOV DX, PORT0;計數(shù)器 0寫入計數(shù)初值50D MOV AL, 50DOUT
37、DX, ALMOV DX, PORT3;8254 計數(shù)器 1初始化 MOV AL, 74HOUT DX, ALMOV DX, PORT1;計數(shù)器 1寫入計數(shù)初值5000D MOV AX, 5000DOUT DX, AL MOV AL, AH OUT DX, ALMOV BH, 80H MOV AL, BH MOV DX, PORTB OUT DX, AL;BH 存放當前 8255A 的B 口輸出;8255A 的B口輸出WAIT0:N OP NOPNOPMOV AH, 01H INT 16HJNZ EXIT JMP WAIT0;判定鍵盤上是否有鍵按下,如有就終止程序EXIT:POP DX;復原中
38、斷向量表中的原有0BH 號中斷向量POP DSMOV AX, 250BHINT 21HMOV AH, 4CH INT 21HINTPROC PROC NEARMOV AL, BH ROR AL,1 MOV BH, ALMOV DX, PORTB;向8255A 的B口寫出數(shù)據(jù),點亮對應LEDOUT DX, ALMOV AL, 20H;向8259發(fā)出中斷終止命令 OUT 20H, ALIRETINTPROC ENDP CODEENDSEND START(2)8255A 的A口與 8個開關(guān)相連,工作于方式 1下,要求:利用當前的開關(guān)狀態(tài)通過 B口掌握L1L8 的亮或滅; A口的 /STB A選通信號
39、由按鍵 K 發(fā)出,每按一次 K 鍵,讀入當前開關(guān)狀態(tài);分析:8255A 的B 口用來掌握 LED 的亮滅,可工作在方式0下; 依據(jù)題意,可以通過查詢方式不斷讀取 8255A 的C口狀態(tài)確定 K 鍵是否按下,也可以利用中斷方式,當K 鍵按下時,由INTRA ( PC3)向 CPU 申請中斷;當判定K 鍵按下后,讀取8255A 的 A口狀態(tài),并通過B口顯示到 LED 上;利用查詢方式實現(xiàn)時,僅需要給定方式挑選 掌握字;利用中斷方式實現(xiàn)時,除掌握字外仍需設(shè)定INTEA 為1,答應 INTRA 申請中斷;因此, 8255A 的方式掌握字為:10110000B0B0H ;使 I NTEAPC4 置 1,
40、其掌握字為00001001B ( 09H ); 留意:利用中斷方式實現(xiàn)時仍需要置PC7為0,使 INTRA 能到達 8259的IRQ3硬件連接與參考源程序:(1)利用查詢方式實現(xiàn)硬件連接:1) 8255A 的A 口 PA0PA7 與K1K8 對應相連;2) 8255A 的B口 PB0PB7與L1L8 對應相連;3)按鍵 K接 8255A 的C口PC4;參考源程序:CODESEGMENT ASSUME CS:CODESTART:MOV AL, 0B0H; 8255A 初始化,方式掌握字10110000BMOV DX, 20BH OUT DX, ALMOV DX, 209H;LED 初始化MOV
41、AL, 00H OUT DX, ALAGAIN:MOV AH, 01H;判定運算機鍵盤上是否有鍵按下,如有終止程序 INT 16HJNZ EXITMOV DX, 20AH;讀入 8255A 的C口狀態(tài) IN AL, DXTEST AL, 00010000B;判定 PC4=1 ? K 鍵是否按下 JNZ AGAINMOV DX, 208H;讀入 8255A 的A 口狀態(tài)IN AL, DXMOV DX, 209H;將A 口狀態(tài)送 8255A 的B 口 OUT DX, ALJMP AGAINEXIT:MOV AH, 4CHINT 21HCODEENDS END START(2)利用中斷方式實現(xiàn)硬件連
42、接:1) 8255A 的A 口 PA0PA7 與K1K8 對應相連;2) 8255A 的B口 PB0PB7與L1L8 對應相連;3)按鍵 K接 8255A 的C口PC4;4) 8255A 的C口 PC3( INTRA )接 IRQ ;參考源程序:精品word 名師歸納總結(jié) - - - - - - - - - - - -DATASEGMENTPORTA DW 208H; 8255A 的A 口地址PORTB DW 209H; 8255A 的B 口地址PORTC DW 20AH; 8255A 的C口地址DATAPORT_CTR DW 20BH ENDS; 8255A 的掌握口地址STACK1SEGM
43、ENT STACKDB 100 DUP0 STACK1ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1 START:MOV AX, DATAMOV DS, AX MOV ES, AXMOV DX, PORT_CTR;寫入 8255A 方式掌握字 0B0HMOV AL, 0B0H OUT DX, ALMOV AL, 09H;寫入 C口按位置位掌握字,PC4置“ 1”O(jiān)UT DX, ALMOV AL, 0EH;寫入 C口按位復位掌握字,PC7置“ 0” ,開IRQOUT DX, ALMOV AX, 350BH;儲存系統(tǒng)原有中斷號為
44、0BH 的中斷向量到堆棧INT 21HPUSH ESPUSH BXMOV AX, SEG INTPROCMOV DS, AX;向0BH 號中斷寫入新的中斷向量MOV DX, OFFSET INTPROCMOV AX, 250BHINT 21HIN AL, 21H;答應 8259 的IRQ3 中斷AND AL, 0F7HOUT 21H, ALSTI;答應 CPU 響應可屏蔽中斷WAIT0:MOV AH, 01H;判定是否有鍵按下,如有就終止程序,如無就等待INT 16HJZ WAIT0POP DX;復原系統(tǒng)中斷向量表精選名師 優(yōu)秀名師 - - - - - - - - - -第 23 頁,共 31
45、 頁 - - - - - - - - - -精品word 名師歸納總結(jié) - - - - - - - - - - - -POP DSMOV AX, 250BH INT 21HMOV AH, 4CH INT 21HINTPROC PROC NEARMOV DX, PORTA;讀入 8255A 端口 A 的狀態(tài)(開關(guān)狀態(tài)) IN AL, DXMOV DX, PORTB;從8255A 的B口輸出開關(guān)狀態(tài),由對應的LED 顯示OUT DX, ALMOV AL, 20H;給8259發(fā)中斷終止指令 OUT 20H, ALIRET INTPROC ENDPCODEENDS END START精選名師 優(yōu)秀名師
46、 - - - - - - - - - -第 28 頁,共 31 頁 - - - - - - - - - -試驗九: LED 顯示器接口試驗(1)編制一個從左到右循環(huán)顯示字符“ 8的”程序, 要求每個字位的停留時間約為1s,當從標準鍵盤上按下任意鍵時終止程序;分析: 依據(jù)題意要求, 試驗板上的 6位8段數(shù)碼管的段選信號均相同,為字符“8”的段碼( 80H );為了實現(xiàn)從左到右循環(huán)顯示且每個字位停留約1s的功能,只需要每隔一秒給位選信號賦值,選通 /斷開相應的位即可;當循環(huán)顯示到最右端時,延時1s再從最左端開頭顯示;為此,在該題中我們利用8255A 的A 口作為 6位LED 顯示器的段選口(地址
47、208H ),8255A 的 B口作為 6位LED 顯示器的位選口(地址209H); 8255A 的掌握字為: 10000000B ( 80H)硬件連接:(1) 8255A 的A 口PA0PA7 分別對應連接LED 顯示器的段選輸入ah.(2) 8255A 的B口PB0PB5 分別對應連接 LED1LED6 顯示器的位選輸入;程序流程圖略;參考源程序:.486STACK1SEGMENT STACKDB 100 DUP0 STACK1ENDSCODESEGMENTASSUME CS:CODE, SS:STACK1START:MOV AL, 80HMOV DX, 20BH; 8255A 工作方式初
48、始化,A 口方式 0輸出, B口方式 0輸出OUT DX, ALMOV AL, 80H;8255A 的A 口輸出字符“8”的段碼 80HMOV DX, 208HOUT DX, ALL1:MOV BL, 20H;LED 顯示器位選信號存放在BL 中, 20H 表示最左邊一位L2:MOV AL, BL;將LED 位選信號輸出到8255A 的B口MOV DX, 209HOUT DX, ALCALL DELAY;調(diào)研軟件延時程序MOV AH, 01H;判定標準鍵盤上是否有鍵按下,如有就終止程序INT 16HJNZ EXITSHR BL, 1JNZ L2;LED 位選信號右移一位,選中下一位LEDJMP L1;當循環(huán)到最右邊一位LED 時,重新填充BL 值,開頭新一輪循環(huán)EXIT:MOV DX, 208HMOV AL, 0FFH OUT DX, AL MOV DX, 209H MOV AL, 00HOUT DX, AL;關(guān)閉全部 LEDMOV AH, 4CH INT 21HDELAYPROC NEARMOV ECX, 0FFFFFFFHLP:LOOPDLP RETDELAYENDPCODEENDS END START(2)完成多位 LED 顯示器的顯示, 即設(shè)計一個顯示字符串1234.56 的程序, 當標準鍵盤上有任意鍵按下時終止程序;基本思想:借助動態(tài)掃描、 分
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 情感代理合同范例
- 工裝范例合同范例
- 居間租賃服務合同范例
- 房屋售賣協(xié)議合同范例
- 小營餐飲合同范例
- 工程委托勞務合同范例
- 早教報名合同范例
- 服裝招標合同范例
- 小區(qū)水電維護合同范例
- 橋架工程合同范例
- 33-提高附著式升降腳手架首層防護一次驗收合格率(4-3)
- 《礦山隱蔽致災因素普查規(guī)范》解讀培訓
- 小學2024年法制教育工作計劃x
- (DB45T 2524-2022)《高速公路瀝青路面施工技術(shù)規(guī)范》
- 醫(yī)療溝通技巧
- 子宮動脈栓塞手術(shù)
- 2024年世界職業(yè)院校技能大賽中職組“節(jié)水系統(tǒng)安裝與維護組”賽項考試題庫(含答案)
- 紙袋制造機產(chǎn)業(yè)深度調(diào)研及未來發(fā)展現(xiàn)狀趨勢
- 2024年職業(yè)病危害防治培訓試題
- 維修作業(yè)區(qū)修理工上崗試卷+答案
- 譯林新版(2024)七年級英語上冊Unit 5 Welcome to the unit課件
評論
0/150
提交評論