2022年《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)答案程序_第1頁
2022年《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)答案程序_第2頁
2022年《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)答案程序_第3頁
2022年《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)答案程序_第4頁
2022年《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)答案程序_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精品word 名師歸納總結(jié) - - - - - - - - - - - -試驗(yàn)一:簡潔程序設(shè)計(jì)試驗(yàn)(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 位十六進(jìn)制數(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進(jìn)制數(shù)至 AL精選名師 優(yōu)秀名師 - - - - - - - - - -第 22 頁,共 31 頁 - - - - - - - - - -MOV BL,ALAND AL,0F0H;取16進(jìn)制數(shù)的高四位,即X1SHR AL,4MOV SI+1,ALMOV AL,BL;存0X 1AND AL,0FH;取16進(jìn)制數(shù)的低四位,即X2MOV SI+2,AL;存0X 2MOV AH,4CHINT 21HCODEENDS END START試驗(yàn)二:分支程序設(shè)計(jì)試驗(yàn)(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進(jìn)行比較,不相等就轉(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進(jìn)行比較,相等就K=1CMP AL,CJE K1;對 A 、C進(jìn)行比較,相等就K=1K0:MOV K,0 JMP EXITK1:MOV K,1K2:JMP EXIT MOV K,2EXIT:MOV AH,4CHINT 21HCODEENDS END START(2)編寫一個能實(shí)現(xiàn)以下表達(dá)式的程序:.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試驗(yàn)三循環(huán)程序設(shè)計(jì)試驗(yàn)(1)將字符串 STRN (以 “ $結(jié)”尾)中的每一個字符均加上偶校驗(yàn)位,并統(tǒng)計(jì)有多少個

7、字符因含有奇數(shù)個“ 1而”加上了校驗(yàn)位;統(tǒng)計(jì)結(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;逐個取字符進(jìn)行判定AND BL,

8、BL;自己和自己做與運(yùn)算JP NEXT;依據(jù) PF 標(biāo)志位的變化進(jìn)行跳轉(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)計(jì)第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;計(jì)數(shù)值初始為0MOV CX,COUNTMOV BX, OFFSET FIRSTLP1:MOV AL, BX;每次取一個數(shù),與0 比較CMP AL, 00H JNE NEXTJMP EXIT;找到 0 就退出NEXT:INC DL;沒找到 0 就計(jì)數(shù)值加1 INC BXLOOP LP1EXIT:MOV NUM, DLMOV AH, 4CH INT 21HCODEENDS END START試驗(yàn)四:子程序設(shè)計(jì)試驗(yàn)將BUF 開頭的 10個單元中兩位十

10、六進(jìn)制數(shù)轉(zhuǎn)換成ASCII 碼,并在屏幕上顯示出來;要求碼型轉(zhuǎn)換通過子程序HEXASC 實(shí)現(xiàn),參數(shù)傳送采納寄存器傳送方式;程序流程圖略;參考源程序 :1 實(shí)現(xiàn)方法一:遠(yuǎ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é)部分對應(yīng)的字符MOV AL,BLAND AL,0FH;再對低字節(jié)部分轉(zhuǎn)換(寄存器AL傳參)CALL FAR PTR HEXASC;調(diào)用子程序MOV DL,ALMOV AH,02H INT 21H;顯示低字節(jié)部分對應(yīng)的字符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ù)字就對應(yīng)到數(shù)字的ASCII 碼JMP ENDHEXHEXATOF:ADD AL,37H;是字母就對應(yīng)到字母的ASCII 碼ENDHEX: RET HEXASCENDP CODEBENDSEND START2 實(shí)現(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é)部分對應(yīng)的字符MOV AH,02H INT 21HMOV AL,BLAND AL,0FH;再對低字節(jié)部分做轉(zhuǎn)換CALL HEXASCMOV DL,AL;顯示低字節(jié)部分對應(yīng)的字符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試驗(yàn)五

15、:DOS 中斷調(diào)用試驗(yàn)(1)假如從鍵盤上依次輸入的是一個數(shù)字和一個字母,就輸出“ RIGHT ”標(biāo)記后終止程序,否就輸出標(biāo)記“ERROR ”后轉(zhuǎn)向原出錯處重做;試編程實(shí)現(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ù)字,不是就報(bào)錯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;不是字母就報(bào)錯,是字母就轉(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)計(jì)字符個數(shù):即接收鍵入的一串字符(字符個數(shù)不超過50個,該字符串用回車作為終止),并按數(shù)字、字母和其它字符分類計(jì)數(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; “其它 ”計(jì)數(shù)器加1 JMP ENDLPDIG:LET:INC AH; “數(shù)字 ”計(jì)數(shù)器加1JMP ENDLPINC BH; “字母 ”計(jì)數(shù)器加1ENDLP:INC SILOOP AGAIN;連續(xù)循環(huán)MOV DIGIT, AH;統(tǒng)計(jì)各類個數(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試驗(yàn)六:擴(kuò)展定時(shí)器 / 計(jì)數(shù)器接口試驗(yàn)( 1)計(jì)數(shù)器 0工作于方式 3

22、,編寫初始化程序,觀看其輸出 OUT0 信號的波形;修改計(jì)數(shù)初值,觀看 OUT0 信號的變化情形; 硬件連接方法: 8254計(jì)數(shù)器 0的CLK0 端接規(guī)章的脈沖輸入(頻率自選), OUT0 接示波器的 正極;示波器負(fù)極接地;程序流程圖略;參考源程序:DATA SEGMENTDB 100 DUP. DATA ENDSCODESEGMENTSTART:ASSUME CS:CODE, DS:DATAMOV AX,DATAMOV DS,AXMOV DX,20FH;寫入計(jì)數(shù)器 0的掌握字MOV AL,00010110BOUT DX,ALMOV DX,20CH;寫入計(jì)數(shù)器 0的計(jì)數(shù)初值MOV AL,05H

23、OUT DX,ALMOV AH,4CHINT 21HCODEENDSEND START( 2)將計(jì)數(shù)器1和計(jì)數(shù)器 0 級聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀看OUT1 和OUT0 信號的波形,說明二者的關(guān)系;修改計(jì)數(shù)初值,觀看OUT0 和 OUT1 輸出波形的變 化情形;硬件連接方法:8254 計(jì)數(shù)器 1的CLK1 端接規(guī)章的脈沖輸入(頻率自選),OUT1 接8254計(jì)數(shù) 器0的CLK0 ,計(jì)數(shù)器 0的輸出 OUT0 接示波器正極;示波器負(fù)極接地;程序流程圖略;參考源程序:DATASEGMENT DB 100 DUP.DATAENDSCODESEGMENTSTART:ASSUME C

24、S:CODE,DS:DATAMOV AX,DATAMOV DS,AXMOV DX,20FHMOV AL,00010110B;寫入計(jì)數(shù)器0的掌握字OUT DX,ALMOV DX,20CH;寫入計(jì)數(shù)器0的計(jì)數(shù)初值MOV AL,05HOUT DX,ALMOV DX,20FHMOV AL,01010110B;寫入計(jì)數(shù)器1的掌握字OUT DX,ALMOV DX,20DH;寫入計(jì)數(shù)器1的計(jì)數(shù)初值MOV AL,02HOUT DX,ALMOV AH,4CHINT 21HCODEENDSEND START試驗(yàn)七:并行輸入 / 輸出接口 8255A簡潔編程試驗(yàn)(1)利用 8255A 的 B 口輸出掌握兩組發(fā)光二級

25、管L1,L3,L5,L7和 L2,L4,L6,L8亮滅交替變化;分析:依據(jù)題目要求,當(dāng) 8255A 的 B 口輸出為 01010101B55H 時(shí),發(fā)光二極管 L1,L3,L5,L7 會被點(diǎn)亮,當(dāng) 8255A 的 B 口輸出為 10101010B 0AAH 時(shí),發(fā)光二極管 L2,L4,L6,L8 會被點(diǎn)亮;因此,通過延時(shí)轉(zhuǎn)變 8255A 的 B 口輸出,即可實(shí)現(xiàn)兩組發(fā)光二極管的亮滅交替變化;由于 LED 隨時(shí)出于預(yù)備好的狀態(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;延時(shí)子程序 可通過修改 NOP 指令數(shù)量轉(zhuǎn)變延時(shí)時(shí)間MOV E

28、CX, 0FFFFFFFHLP2:NOPLOOPD LP2RETDELAYENDPCODEENDSEND START(2)利用8255A 的 A 口 讀入8 個開關(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 ,并終止程序的運(yùn)行;發(fā)光二極管的狀態(tài)通過 8255A 的 B 口進(jìn)行掌握;分析:依據(jù)題

29、目要求,可以通過查詢的方式讀取8255A 的 B 口狀態(tài),并依據(jù)查詢的結(jié)果給A 口送出相應(yīng)數(shù)據(jù),A 口工作在方式0 的輸入狀態(tài), B 口工作在方式0 輸出狀態(tài), C 口不需要考慮,所以8255A 的方式掌握字為:10010000B )硬件連接方法:( 1) 8255A 的 A 口 PA0PA7 對應(yīng)連接K1K8 ;( 2) 8255A 的 B 口 PB0PB7 對應(yīng)連接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;當(dāng)前開關(guān)狀態(tài)為表中所列狀態(tài)之一;顯示 LED 狀態(tài)試驗(yàn)八:并行輸入 / 輸出接口 8255A綜合應(yīng)用試驗(yàn)( 1)利用 8254計(jì)數(shù)器 0、計(jì)數(shù)器 1和8255A的B口實(shí)現(xiàn)對發(fā)光二極管的定時(shí)掌握,讓8個發(fā)光二極管每隔 1s從左到右依次點(diǎn)亮;(要求計(jì)數(shù)器1的時(shí)鐘脈沖頻率為250kHz );分析: 依據(jù)題目要求,需要利用8254進(jìn)行定時(shí) 1s掌握,定時(shí)到后,轉(zhuǎn)變8255A 的B口輸

32、出;可以利用中斷的方式實(shí)現(xiàn),8254定時(shí)到時(shí)向 CPU申請中斷, CPU 相應(yīng)中斷后在中斷程序中轉(zhuǎn)變8255A 的B口輸出;由于題目要求8254的輸入脈沖頻率為250kHz ,所以需要級聯(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 申請中斷);8255A 的B口掌握 LED ,可工作在方式0輸出, A 口未使用,為了選通實(shí) 驗(yàn)板上的中斷輸入C口的 PC7須輸出低電平,因此C口的高四位工作在方式0輸出;綜合上述要求, 8254和8255A 的初始化參數(shù)為:8254計(jì)數(shù)器 1的計(jì)數(shù)初值為:N=20ms/

33、4 s=5000D ;方式掌握字為:01110100B 74H8254計(jì)數(shù)器 0的計(jì)數(shù)初值為:N=50D ;方式掌握字為:00010100B 14H8255A 的方式掌握字:10000000B( 80H ); C口按位置位/復(fù)位掌握字:00001110B0EH 使PC7復(fù)位,答應(yīng) 8254的OUT0 中斷到達(dá)系統(tǒng)8259的IRQ3 端此外,利用中斷方式實(shí)現(xiàn)題目要求的功能仍需要設(shè)置系統(tǒng)8259芯片的中斷屏蔽字和系統(tǒng)儲備器中的中斷向量表(修改中斷類型號為0BH 的中斷向量);硬件連接方法:(1) 250kHz 脈沖輸出接 8254的CLK1 , OUT1 接CLK0 , OUT0 接IRQ ;(2

34、) 8255A 的B口PB0PB7 對應(yīng)連接 L1L8 ;程序流程圖略;參考源程序: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口端口地址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清零,答應(yīng) 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 寄存器,答應(yīng)IRQ3 中斷 AND AL, 0F7HOUT 21H, ALSTI;開中斷, CPU 可以響應(yīng)外部可屏蔽中斷MOV DX, PORT3;8254 計(jì)數(shù)器 0初始化 MOV AL, 14HOUT DX, ALMOV DX, PORT0;計(jì)數(shù)器 0寫入計(jì)數(shù)初值50D MOV AL, 50DOUT

37、DX, ALMOV DX, PORT3;8254 計(jì)數(shù)器 1初始化 MOV AL, 74HOUT DX, ALMOV DX, PORT1;計(jì)數(shù)器 1寫入計(jì)數(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 存放當(dāng)前 8255A 的B 口輸出;8255A 的B口輸出WAIT0:N OP NOPNOPMOV AH, 01H INT 16HJNZ EXIT JMP WAIT0;判定鍵盤上是否有鍵按下,如有就終止程序EXIT:POP DX;復(fù)原中

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ù),點(diǎn)亮對應(yīng)LEDOUT DX, ALMOV AL, 20H;向8259發(fā)出中斷終止命令 OUT 20H, ALIRETINTPROC ENDP CODEENDSEND START(2)8255A 的A口與 8個開關(guān)相連,工作于方式 1下,要求:利用當(dāng)前的開關(guān)狀態(tài)通過 B口掌握L1L8 的亮或滅; A口的 /STB A選通信號

39、由按鍵 K 發(fā)出,每按一次 K 鍵,讀入當(dāng)前開關(guān)狀態(tài);分析:8255A 的B 口用來掌握 LED 的亮滅,可工作在方式0下; 依據(jù)題意,可以通過查詢方式不斷讀取 8255A 的C口狀態(tài)確定 K 鍵是否按下,也可以利用中斷方式,當(dāng)K 鍵按下時(shí),由INTRA ( PC3)向 CPU 申請中斷;當(dāng)判定K 鍵按下后,讀取8255A 的 A口狀態(tài),并通過B口顯示到 LED 上;利用查詢方式實(shí)現(xiàn)時(shí),僅需要給定方式挑選 掌握字;利用中斷方式實(shí)現(xiàn)時(shí),除掌握字外仍需設(shè)定INTEA 為1,答應(yīng) INTRA 申請中斷;因此, 8255A 的方式掌握字為:10110000B0B0H ;使 I NTEAPC4 置 1,

40、其掌握字為00001001B ( 09H ); 留意:利用中斷方式實(shí)現(xiàn)時(shí)仍需要置PC7為0,使 INTRA 能到達(dá) 8259的IRQ3硬件連接與參考源程序:(1)利用查詢方式實(shí)現(xiàn)硬件連接:1) 8255A 的A 口 PA0PA7 與K1K8 對應(yīng)相連;2) 8255A 的B口 PB0PB7與L1L8 對應(yīng)相連;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;判定運(yùn)算機(jī)鍵盤上是否有鍵按下,如有終止程序 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)利用中斷方式實(shí)現(xiàn)硬件連

42、接:1) 8255A 的A 口 PA0PA7 與K1K8 對應(yīng)相連;2) 8255A 的B口 PB0PB7與L1L8 對應(yīng)相連;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口按位復(fù)位掌握字,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;答應(yīng) 8259 的IRQ3 中斷AND AL, 0F7HOUT 21H, ALSTI;答應(yīng) CPU 響應(yīng)可屏蔽中斷WAIT0:MOV AH, 01H;判定是否有鍵按下,如有就終止程序,如無就等待INT 16HJZ WAIT0POP DX;復(fù)原系統(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),由對應(yīng)的LED 顯示OUT DX, ALMOV AL, 20H;給8259發(fā)中斷終止指令 OUT 20H, ALIRET INTPROC ENDPCODEENDS END START精選名師 優(yōu)秀名師

46、 - - - - - - - - - -第 28 頁,共 31 頁 - - - - - - - - - -試驗(yàn)九: LED 顯示器接口試驗(yàn)(1)編制一個從左到右循環(huán)顯示字符“ 8的”程序, 要求每個字位的停留時(shí)間約為1s,當(dāng)從標(biāo)準(zhǔn)鍵盤上按下任意鍵時(shí)終止程序;分析: 依據(jù)題意要求, 試驗(yàn)板上的 6位8段數(shù)碼管的段選信號均相同,為字符“8”的段碼( 80H );為了實(shí)現(xiàn)從左到右循環(huán)顯示且每個字位停留約1s的功能,只需要每隔一秒給位選信號賦值,選通 /斷開相應(yīng)的位即可;當(dāng)循環(huán)顯示到最右端時(shí),延時(shí)1s再從最左端開頭顯示;為此,在該題中我們利用8255A 的A 口作為 6位LED 顯示器的段選口(地址

47、208H ),8255A 的 B口作為 6位LED 顯示器的位選口(地址209H); 8255A 的掌握字為: 10000000B ( 80H)硬件連接:(1) 8255A 的A 口PA0PA7 分別對應(yīng)連接LED 顯示器的段選輸入ah.(2) 8255A 的B口PB0PB5 分別對應(yīng)連接 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)研軟件延時(shí)程序MOV AH, 01H;判定標(biāo)準(zhǔn)鍵盤上是否有鍵按下,如有就終止程序INT 16HJNZ EXITSHR BL, 1JNZ L2;LED 位選信號右移一位,選中下一位LEDJMP L1;當(dāng)循環(huán)到最右邊一位LED 時(shí),重新填充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è)計(jì)一個顯示字符串1234.56 的程序, 當(dāng)標(biāo)準(zhǔn)鍵盤上有任意鍵按下時(shí)終止程序;基本思想:借助動態(tài)掃描、 分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論