計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序

上傳人:仙*** 文檔編號:34841572 上傳時間:2021-10-23 格式:DOC 頁數(shù):34 大?。?91.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序_第1頁
第1頁 / 共34頁
計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序_第2頁
第2頁 / 共34頁
計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序_第3頁
第3頁 / 共34頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序》由會員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)程序(34頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序     實(shí)驗(yàn)一:簡單程序設(shè)計(jì)實(shí)驗(yàn)          (1)編寫一個 32 位無符號數(shù)除法的程序,要求將存放在 NUM1 中的 32 位無符號數(shù)與存放 在 NUM2 中的 16 位無符號數(shù)相除,結(jié)果存放在 NUM3 和 NUM4 中?! ?       程序流程圖略。 參考源程序:    DATA SEGMENT    NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ?  NUM4 DW ? DATA ENDS          CODE SEGMENT   ASSUME DS:DATA, CS:CO

2、DE   START: MOV AX,DATA ;數(shù)據(jù)段寄存器初始化  MOV DS,AX    MOV AX, WORD PTR NUM1  MOV DX, WORD PTR NUM1+2    DIV NUM2  MOV NUM3,AX MOV NUM4,DX  MOV AH,4CH ;正常返回DOS系統(tǒng)    INT 21H CODE ENDS  END START         (2)編寫一個拆字程序。要求將存放在 ARY 單元的 2 位十六進(jìn)制數(shù) X1X2 拆為 X1 和 X2 兩 部分,并以 0X1 和 0X2 的形式分別存入 ARY+1 和 ARY

3、+2 單元中。        程序流程圖略。 參考源程序:    DATA SEGMENT ARY DB 2AH,?,?    DATA ENDS        CODE SEGMENT  ASSUME DS:DATA, CS:CODE START: MOV AX,DATA   MOV DS,AX   MOV SI,OFFSET ARY ;取ARY的偏移地址   MOV AL,[SI] ;取16進(jìn)制數(shù)至AL      第 32 頁 共 31 頁    MOV BL,AL  AND AL,0F0H ;取16進(jìn)制數(shù)的高四位,即X1   SHR

4、AL,4  MOV [SI+1],AL ;存0X1   MOV AL,BL    AND AL,0FH ;取16進(jìn)制數(shù)的低四位,即X2    MOV [SI+2],AL ;存0X2  MOV AH,4CH INT 21H    CODE ENDS  END START     實(shí)驗(yàn)二:分支程序設(shè)計(jì)實(shí)驗(yàn)       (1)編寫一個字符比較程序,比較 3 個無符號字節(jié)數(shù) A,B,C 的大小,并根據(jù)比較結(jié)果 對變量 K 賦值:    如果 3 個數(shù)不相等,則 K=0;   如果 3 個數(shù)中有兩個相等,則 K=1; 如果 3 個數(shù)都相等,則 K=2?!  ?     

5、程序流程圖略。 參考源程序:  DATA SEGMENT ;定義待比較數(shù)A、B、C,比較結(jié)果K  A DB 20H B DB 20H C DB 20H K DB ?  DATA ENDS         CODE SEGMENT    ASSUME CS:CODE,DS:DATA START: MOV AX,DATA    MOV DS,AX MOV AL,A   CMP AL,B ;對A、B進(jìn)行比較,不相等則轉(zhuǎn)到COMP2  JNE COMP2 ;相等則比較A、C         CMP AL,C  ;A、C不相等則K=1   JMP K2 ;A、C相等

6、則K=2          COMP2:     MOV BL,B CMP BL,C    JE K1 ;對B、C進(jìn)行比較,相等則K=1          CMP AL,C    JE K1  Jne k0 ;對A、C進(jìn)行比較,相等則K=1         K0: MOV K,0    JMP EXIT K1: MOV K,1  JMP EXIT K2: MOV K,2            EXIT: MOV AH,4CH      INT 21H            CODE ENDS 

7、   END START    (2)編寫一個能實(shí)現(xiàn)下列表達(dá)式的程序:       ?  N = ?  A + B    A ≤ B      設(shè) A,B,C 為小于 128 的正整數(shù)。      ? A ? B + C   程序流程圖略。 參考源程序:    DATA SEGMENT  A > B       A DB 22H ;定義 A、B、C、N B DB 10H  C DB 01H N DB ?  DATA ENDS      CODE SEGMENT   ASSUME CS:CODE, DS:DATA START: MOV

8、AX,DATA  MOV DS,AX         MOV AL, A CMP AL, B    JG CALCUL ;A 小于或等于 B 則 N=A+B    ADD AL,B JMP EXIT      CALCUL: SUB AL, B ADC AL, C       EXIT: MOV N, AL MOV AH,4CH INT 21H    CODE ENDS    END START     實(shí)驗(yàn)三 循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)         (1)將字符串STRN(以“$”結(jié)尾)中的每一個字符均加上偶校驗(yàn)位,并統(tǒng)計(jì)有多少個字符 因含有奇數(shù)個“1”而加上

9、了校驗(yàn)位。統(tǒng)計(jì)結(jié)果存于N單元中?!? 程序流程圖略。 參考源程序:   DATA SEGMENT   STRN DB What$ ;任意定義一個字串,以“$”結(jié)尾  COUNT EQU $-STRN N DB ?   BUF DB COUNT DUP(?) DATA ENDS        CODE SEGMENT  ASSUME CS:CODE, DS:DATA START: MOV AX, DATA    MOV DS, AX MOV AX, DATA MOV ES, AX         LEA SI, STRN LEA DI, BUF   MOV CX, CO

10、UNT MOV AL, 0       LP1: MOV BL, [SI] ;逐個取字符進(jìn)行判斷  AND BL, BL ;自己和自己做與運(yùn)算   JP NEXT ;根據(jù) PF 標(biāo)志位的變化進(jìn)行跳轉(zhuǎn)  INC AL    OR BL, 80H NEXT: MOV [DI], BL   INC SI INC DI LOOP LP1    MOV N, AL MOV AH, 4CH    INT 21H   CODE ENDS  END START    (2)在 FIRST 開始的一片連續(xù)的數(shù)據(jù)區(qū)中存放著 100 個數(shù)據(jù),編寫一個程序,統(tǒng)計(jì)第 1       個數(shù)據(jù)

11、‘0’之前的數(shù)據(jù)個數(shù)。 程序流程圖略。 參考源程序:  DATA SEGMENT  FIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H ;任取 9 個數(shù)做演示    COUNT EQU $-FIRST NUM DB ?  DATA ENDS          CODE SEGMENT   ASSUME CS:CODE, DS:DATA START: MOV AX,DATA   MOV DS,AX    MOV DL, 0 ;計(jì)數(shù)值初始為 0  MOV CX,COUNT  MOV BX, OFFSET FIRST   LP1:

12、MOV AL, [BX] ;每次取一個數(shù),與 0 比較   CMP AL, 00H JNE NEXT  JMP EXIT ;找到 0 則退出   NEXT: INC DL ;沒找到 0 則計(jì)數(shù)值加 1  INC BX LOOP LP1         EXIT: MOV NUM, DL MOV AH, 4CH INT 21H  CODE ENDS   END START        實(shí)驗(yàn)四:子程序設(shè)計(jì)實(shí)驗(yàn)           將BUF開始的10個單元中兩位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼,并在屏幕上顯示出來。要求碼型 轉(zhuǎn)換通過子程序HEXASC實(shí)現(xiàn),參數(shù)傳送采用寄存器

13、傳送方式。    程序流程圖略。 參考源程序: (1)實(shí)現(xiàn)方法一:遠(yuǎn)過程調(diào)用 DATA SEGMENT    BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H   COUNT EQU $-BUF ;定義任意長度的一段 BUF DATA ENDS         STACK1 SEGMENT STACK   DB 100 DUP(?) ;設(shè)置足夠深度的棧區(qū)  STACK1 ENDS         CODE SEGMENT    ASSUME CS:CODE,DS:DATA,SS:STACK1    START: M

14、OV AX,DATA MOV DS,AX        MOV SI,OFFSET BUF MOV CX,COUNT   AGAIN: MOV AL,[SI] ;逐個取數(shù)    MOV BL,AL       SHR AL,4   AND AL,0FH ;先對高字節(jié)部分轉(zhuǎn)換(寄存器 AL 傳參)   CALL FAR PTR HEXASC ;調(diào)用子程序   MOV DL,AL    MOV AH,02H ;顯示高字節(jié)部分對應(yīng)的字符    INT 21H        MOV AL,BL   AND AL,0FH ;再對低字節(jié)部分轉(zhuǎn)換(寄存器 AL 傳參) 

15、CALL FAR PTR HEXASC ;調(diào)用子程序    MOV DL,AL  MOV AH,02H ;顯示低字節(jié)部分對應(yīng)的字符  INT 21H         MOV DL,20H   MOV AH,02H ;顯示空格    INT 21H          INC SI  LOOP AGAIN            MOV AH,4CH INT 21H    CODE ENDS       CODEB SEGMENT ASSUME CS:CODEB   HEXASC PROC FAR    CMP AL,09H ;判斷是不是數(shù)字    JA

16、 HEXATOF ;是字母則轉(zhuǎn)到 HEXATOF    ADD AL,30H ;是數(shù)字則對應(yīng)到數(shù)字的 ASCII 碼    JMP ENDHEX  HEXATOF:ADD AL,37H ;是字母則對應(yīng)到字母的 ASCII 碼    ENDHEX: RET HEXASC ENDP CODEB ENDS  END START       (2)實(shí)現(xiàn)方法二:近過程調(diào)用  DATA SEGMENT    BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H   COUNT EQU $-BUF ;定義任意長度的一段 BUF DATA

17、ENDS           STACK1 SEGMENT STACK  DB 100 DUP(?) ;設(shè)置足夠深度的棧區(qū)    STACK1 ENDS         CODE SEGMENT   ASSUME CS:CODE,DS:DATA,SS:STACK1  START: MOV AX,DATA MOV DS,AX        MOV SI,OFFSET BUF MOV CX,COUNT  AGAIN: MOV AL,[SI] ;逐個取數(shù)  MOV BL,AL        SHR AL,4  AND AL,0FH ;先對高字節(jié)部分做轉(zhuǎn)換 

18、CALL HEXASC      MOV DL,AL ;顯示高字節(jié)部分對應(yīng)的字符  MOV AH,02H INT 21H          MOV AL,BL   AND AL,0FH ;再對低字節(jié)部分做轉(zhuǎn)換  CALL HEXASC    MOV DL,AL ;顯示低字節(jié)部分對應(yīng)的字符    MOV AH,02H INT 21H     MOV DL,20H ;顯示空格  MOV AH,02H INT 21H     INC SI ;繼續(xù)循環(huán)或退出  LOOP AGAIN        MOV AH,4CH INT 21H          HEX

19、ASC PROC NEAR CMP AL,09H   JA HEXATOF ADD AL,30H JMP ENDHEX    HEXATOF:ADD AL,37H ENDHEX: RET   HEXASC ENDP        CODE ENDS   END START       實(shí)驗(yàn)五:DOS 中斷調(diào)用實(shí)驗(yàn)         (1)如果從鍵盤上依次輸入的是一個數(shù)字和一個字母,則輸出“RIGHT”標(biāo)記后結(jié)束程序, 否則輸出標(biāo)記“ERROR”后轉(zhuǎn)向原出錯處重做。試編程實(shí)現(xiàn)該功能?!  ? 程序流程圖略。 參考源程序:    DATA SEGMENT    MSG

20、DB 0AH,0DH,RIGHT,0AH,0DH,$ WRN DB 0AH,0DH,ERROR,0AH,0DH,$  DATA ENDS           CODE SEGMENT  ASSUME CS:CODE, DS:DATA START: MOV AX,DATA  MOV DS,AX       AGAIN: MOV AH,01H ;等待用戶輸入 1 個字符并顯示  INT 21H  CMP AL,39H JA EMSG CMP AL,30H   JB EMSG ;判斷輸入是否是數(shù)字,不是則報(bào)錯     MOV AH,01H ;等待用戶輸入 1 個字符并顯示 

21、 INT 21H CMP AL,A JB EMSG   CMP AL,Z ;判斷輸入是否是大寫字母,不是則繼續(xù)   JB EXIT ;判斷是不是小寫字母    CMP AL,a JB EMSG CMP AL,z    JB EXIT ;不是字母則報(bào)錯,是字母則轉(zhuǎn)到 EXIT        EMSG: LEA DX,WRN MOV AH,09H INT 21H    JMP AGAIN        EXIT: MOV DX,OFFSET MSG    MOV AH,09H ;顯示“RIGHT”并退出   INT 21H   MOV AH,4CH      I

22、NT 21H CODE ENDS   END START         (2)編寫一程序分類統(tǒng)計(jì)字符個數(shù):即接收鍵入的一串字符(字符個數(shù)不超過50個,該字 符串用回車作為結(jié)束),并按數(shù)字、字母和其它字符分類計(jì)數(shù),然后將結(jié)果存入digit、letter 和other 3個存儲單元中,并顯示結(jié)果。    程序流程圖略。 參考源程序:  DATA SEGMENT  MSG1 DB 0AH, 0DH, Number of digit:,20H,$ MSG2 DB 0AH, 0DH, Number of letters:, 20H,$  MSG3 DB 0AH, 0DH, Number

23、 of other characters:, 20H, $ BUF DB 50  DB 0  DB 50 DUP(?) ;設(shè)置足夠深的棧區(qū)  DIGIT DB ? LETTER DB ? OTHER DB ?    DATA ENDS          STACK1 SEGMENT STACK DB 100 DUP(?)    STACK1 ENDS         CODE SEGMENT   ASSUME CS:CODE,DS:DATA,SS:STACK1  START: MOV AX,DATA MOV DS,AX       MOV AH,0AH ;等待

24、用戶輸入字符串并顯示   MOV DX,OFFSET BUF INT 21H        MOV SI, OFFSET BUF MOV CL,[SI+1]   MOV CH,00H MOV AL,00H MOV AH,00H MOV BH,00H  AGAIN: MOV BL,[SI+2] CMP BL,30H    JB OTH ;ASCII 碼小于 30H 則歸類為“其它”  CMP BL,3AH        JB DIG ;ASCII 碼大于等于 30H 小于 3AH 則歸類為“數(shù)字” CMP BL,41H  JB OTH ;ASCII 碼大于等于 3AH 小

25、于 41H 則歸類為“其它” CMP BL,5BH    JB LET ;ASCII 碼大于等于 41H 小于 5BH 則歸類為“字母” CMP BL,61H    JB OTH ;ASCII 碼大于等于 5BH 小于 61H 則歸類為“其它” CMP BL,7BH    JB LET ;ASCII 碼大于等于 61H 小于 7BH 則歸類為“字母”        OTH:    INC AL  ;“其它”計(jì)數(shù)器加 1         DIG:    JMP ENDLP INC AH       ;“數(shù)字”計(jì)數(shù)器加 1        LET:   JMP E

26、NDLP INC BH      ;“字母”計(jì)數(shù)器加 1   ENDLP: INC SI   LOOP AGAIN ;繼續(xù)循環(huán)       MOV LETTER, BH MOV OTHER, AL            MOV DX, OFFSET MSG1    MOV AH,09H INT 21H    MOV AL, DIGIT CALL DISP   ;顯示“數(shù)字”有多少個      MOV DX, OFFSET MSG2    MOV AH,09H INT 21H  MOV AL, LETTER CALL DISP  ;顯示“字母”有多少個   

27、     MOV DX, OFFSET MSG3   MOV AH,09H INT 21H    MOV AL, OTHER CALL DISP  ;顯示“其它”有多少個     MOV AH,4CH INT 21H          DISP      PROC NEAR    ;顯示子程序    MOV DIGIT, AH ;統(tǒng)計(jì)各類個數(shù)      MOV AH,00H MOV DH,0AH DIV DH  MOV CH,AH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H   ADD CH,30H MOV DL,

28、CH MOV AH, 02H INT 21H   RET DISP ENDP            CODE ENDS  END START     實(shí)驗(yàn)六:擴(kuò)展定時器/計(jì)數(shù)器接口實(shí)驗(yàn)       (1)計(jì)數(shù)器0工作于方式3,編寫初始化程序,觀察其輸出OUT0信號的波形。修改計(jì)數(shù)初 值,觀察OUT0信號的變化情況。 硬件連接方法:8254計(jì)數(shù)器0的CLK0端接規(guī)則的脈沖輸入(頻率自選),OUT0接示波器的 正極;示波器負(fù)極接地?!? 程序流程圖略。 參考源程序:    DATA SEGMENT  DB 100 DUP(?) DATA ENDS         CO

29、DE SEGMENT    ASSUME CS:CODE, DS:DATA START: MOV AX,DATA   MOV DS,AX      MOV DX,20FH ;寫入計(jì)數(shù)器0的控制字   MOV AL,00010110B OUT DX,AL    MOV DX,20CH ;寫入計(jì)數(shù)器0的計(jì)數(shù)初值  MOV AL,05H OUT DX,AL         MOV AH,4CH INT 21H          CODE ENDS   END START      (2)將計(jì)數(shù)器1和計(jì)數(shù)器0級聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀察O

30、UT1 和OUT0信號的波形,說明二者的關(guān)系。修改計(jì)數(shù)初值,觀察OUT0和OUT1輸出波形的變 化情況。 硬件連接方法:8254計(jì)數(shù)器1的CLK1端接規(guī)則的脈沖輸入(頻率自選),OUT1接8254計(jì)數(shù) 器0的CLK0,計(jì)數(shù)器0的輸出OUT0接示波器正極;示波器負(fù)極接地。  程序流程圖略。 參考源程序:   DATA SEGMENT DB 100 DUP(?)  DATA ENDS CODE SEGMENT     ASSUME CS:CODE,DS:DATA START: MOV AX,DATA   MOV DS,AX         MOV DX,20FH  MO

31、V AL,00010110B ;寫入計(jì)數(shù)器0的控制字  OUT DX,AL  MOV DX,20CH ;寫入計(jì)數(shù)器0的計(jì)數(shù)初值  MOV AL,05H OUT DX,AL        MOV DX,20FH  MOV AL,01010110B ;寫入計(jì)數(shù)器1的控制字  OUT DX,AL    MOV DX,20DH ;寫入計(jì)數(shù)器1的計(jì)數(shù)初值  MOV AL,02H OUT DX,AL        MOV AH,4CH INT 21H    CODE ENDS    END START     實(shí)驗(yàn)七:并行輸入/輸出接口 8255A 簡單編程實(shí)驗(yàn)   

32、        (1)利用 8255A 的 B 口輸出控制兩組發(fā)光二級管 L1,L3,L5,L7 和 L2,L4,L6,L8 亮滅交替變 化?!  ? 分析:  按照題目要求,當(dāng) 8255A 的 B 口輸出為 01010101B(55H)時,發(fā)光二極管 L1,L3,L5,L7 會被點(diǎn)亮,當(dāng) 8255A 的 B 口輸出為 10101010B (0AAH)時,發(fā)光二極管 L2,L4,L6,L8 會被點(diǎn) 亮。因此,通過延時改變 8255A 的 B 口輸出,即可實(shí)現(xiàn)兩組發(fā)光二極管的亮滅交替變化。 由于 LED 隨時出于準(zhǔn)備好的狀態(tài),因此 8255A 的 B 口可工作于方式 0 輸出,其它端口未使

33、 用,無需考慮。因此,8255A 的方式控制字為:10000000B(80H)?!? 硬件連接方法:  8255A 的 B 口 PB0~PB7 分別連接 L1~L8。 程序流程圖略?! ? 參考源程序:    .486   DATA SEGMENT   PORTA DW 208H ;8255A端口A地址 PORTB DW 209H ;8255A端口B地址 PORTC DW 20AH ;8255A端口C地址 PORT_CTR DW 20BH ;8255A控制端口地址  DATA ENDS        STACK1 SEGMENT STACK DB 100 DUP(?)  

34、  STACK1 ENDS         CODE SEGMENT  ASSUME CS:CODE, DS:DATA, SS:STACK1   START: MOV AX,DATA MOV DS,AX        MOV DX, PORT_CTR MOV AL, 10000000B  ;8255A初始化  ;控制字    OUT DX, AL        MOV DX, PORTB MOV AL, 00H OUT DX, AL  ;8255A端口B清零,LED初始化(全滅)         LP0:        MOV BL, 01

35、010101B MOV AL, BL    OUT DX, AL CALL DELAY       NOT AL  MOV BL, AL  MOV AH, 01H ;調(diào)用BIOS的16H功能判斷鍵盤是否有輸入  INT 16H JNZ EXIT JMP LP0         EXIT: MOV AH, 4CH INT 21H       DELAY PROC NEAR ;延時子程序(可通過修改NOP指令數(shù)量改變延時時間) MOV ECX, 0FFFFFFFH  LP2: NOP   LOOPD LP2  RET DELAY ENDP          C

36、ODE ENDS    END START      (2)利用 8255A 的 A 口讀入 8 個開關(guān) K1~K8 的狀態(tài),當(dāng)只有 K1 合上時,L1~L8 顯示  00000001B;當(dāng)只有 K1 和 K2 合上時,L1~L8 顯示 00000010B;當(dāng)只有 K1,K2 和 K3 合上 時,L1~L8 顯示 00000011B;當(dāng)只有 K1,K2,K3 和 K4 合上時,L1~L8 顯示 00000100B;… 直到所有開關(guān)合上時,L1~L8 顯示 00001000B,并結(jié)束程序的運(yùn)行。發(fā)光二極管的狀態(tài)通 過 8255A 的 B 口進(jìn)行控制?! ? 分析:    按照題目要求,

37、可以通過查詢的方式讀取 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 口 PA0~PA7 對應(yīng)連接 K1~K8;   (2)8255A 的 B 口 PB0~PB7 對應(yīng)連接 L1~L8; 源代碼:  DATA SEGMENT   LIST DB 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, 0FFH DATA ENDS        STACK1

38、 SEGMENT STACK DB 100 DUP(?)  STACK1 ENDS          CODE SEGMENT   ASSUME CS:CODE, DS:DATA, SS:STACK1    START: MOV AX, DATA       MOV DS, AX    MOV DX, 20BH ;8255A初始化    MOV AL, 10010000B OUT DX, AL      MOV DX, 209H ;8255A的B口清零,LED初始化(全滅) MOV AL, 00H    OUT DX, AL      L0:

39、MOV DX, 208H ;讀8255A的A口,獲得開關(guān)狀態(tài)   IN AL, DX         MOV BL, 00H MOV CX, 8  MOV SI, OFFSET LIST L1: INC BL  CMP AL, [SI] JZ FIND INC SI    LOOP L1    JMP L0         FIND:   MOV AL, BL MOV DX, 209H  ;當(dāng)前開關(guān)狀態(tài)為表中所列狀態(tài)之一  ;顯示LED狀態(tài)      OUT DX, AL CMP AL, 08H JNZ L0            MOV AH

40、, 4CH INT 21H       CODE ENDS    END START        實(shí)驗(yàn)八:并行輸入/輸出接口 8255A 綜合應(yīng)用實(shí)驗(yàn)           (1)利用8254計(jì)數(shù)器0、計(jì)數(shù)器1和8255A的B口實(shí)現(xiàn)對發(fā)光二極管的定時控制,讓8個發(fā)光 二極管每隔1s從左到右依次點(diǎn)亮。(要求計(jì)數(shù)器1的時鐘脈沖頻率為250kHz)?!? 分析: 根據(jù)題目要求,需要利用8254進(jìn)行定時1s控制,定時到后,改變8255A的B口輸出??伞 ? 以利用中斷的方式實(shí)現(xiàn),8254定時到時向CPU申請中斷,CPU相應(yīng)中斷后在中斷程序中改變    8255A的B口輸出。 由于題目

41、要求8254的輸入脈沖頻率為250kHz,所以需要級聯(lián)計(jì)數(shù)器1和計(jì)數(shù)器0實(shí)現(xiàn)1s  定時(參考程序中利用計(jì)數(shù)器1進(jìn)行20ms定時,計(jì)數(shù)器0進(jìn)行50次計(jì)數(shù),計(jì)數(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/4s=5000D;方式控制字為:01110100B (74H)   8254計(jì)數(shù)器0的計(jì)數(shù)初值為:N=50D;方式控制字為:00010100B (

42、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) 存儲器中的中斷向量表(修改中斷類型號為0BH的中斷向量)?!  ?    硬件連接方法:  (1)250kHz脈沖輸出接8254的CLK1,OUT1接CLK0,OUT0接IRQ;   (2)8255A的B口PB0~PB7對應(yīng)連接L1~L8?!  ?      DATA  SEGMENT    

43、    PORT0 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口端口地址       DATA  PORT_CTR DW 20BH ENDS

44、    ;8255A的控制寄存器端口地址       程序流程圖略。 參考源程序:                                              STACK1 SEGMENT STACK DB 100 DUP(0)  STACK1 ENDS          CODE SEGMENT    ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1        START: MOV AX, DATA MOV DS, AX MOV ES, AX      MOV

45、 AL, 80H ; 8255初始化, B口方式0輸出,C口高4位輸出    MOV DX, PORT_CTR OUT DX, AL  MOV AL, 0EH ;PC7清零,允許8254中斷到IRQ3    OUT DX, AL       MOV AL, 00H ;發(fā)光二極管初始化(全滅) MOV DX, PORTB  OUT DX, AL       MOV AX, 350BH ;保存系統(tǒng)原有0BH號中斷的中斷向量至堆?!? INT 21H PUSH ES PUSH BX  MOV AX, SEG INTPROC MOV DS, AX  MOV DX, OFFSET I

46、NTPROC  MOV AX, 250BH ;將程序要求的中斷向量寫入  INT 21H    IN AL, 21H ;設(shè)置8259的IMR寄存器,允許IRQ3中斷   AND AL, 0F7H OUT 21H, AL   STI ;開中斷,CPU可以響應(yīng)外部可屏蔽中斷       MOV DX, PORT3 ;8254計(jì)數(shù)器0初始化   MOV AL, 14H OUT DX, AL  MOV DX, PORT0 ;計(jì)數(shù)器0寫入計(jì)數(shù)初值50D    MOV AL, 50D OUT DX, AL    MOV DX, PORT3 ;8254計(jì)數(shù)器1初始化    MOV

47、AL, 74H OUT DX, AL   MOV DX, PORT1 ;計(jì)數(shù)器1寫入計(jì)數(shù)初值5000D    MOV AX, 5000D OUT DX, AL MOV AL, AH OUT DX, AL        MOV BH, 80H ;BH存放當(dāng)前8255A的B口輸出   MOV AL, BH    MOV DX, PORTB ;8255A的B口輸出    OUT DX, AL         WAIT0: NOP NOP NOP   MOV AH, 01H ;判斷鍵盤上是否有鍵按下,若有則結(jié)束程序  INT 16H JNZ EXIT JMP WAIT0 

48、   EXIT: POP DX ;恢復(fù)中斷向量表中的原有0BH號中斷向量    POP DS    MOV AX, 250BH INT 21H           MOV AH, 4CH INT 21H         INTPROC PROC NEAR MOV AL, BH ROR AL,1  MOV BH, AL  MOV DX, PORTB ;向8255A的B口寫出數(shù)據(jù),點(diǎn)亮對應(yīng)LED OUT DX, AL     MOV AL, 20H ;向8259發(fā)出中斷結(jié)束命令    OUT 20H, AL IRET   INTPROC ENDP CODE ENDS 

49、   END START            (2)8255A的A口與8個開關(guān)相連,工作于方式1下,要求:利用當(dāng)前的開關(guān)狀態(tài)通過B口控 制L1~L8的亮或滅。A口的/STBA選通信號由按鍵K發(fā)出,每按一次K鍵,讀入當(dāng)前開關(guān)狀態(tài)。 分析:    8255A的B口用來控制LED的亮滅,可工作在方式0下。 根據(jù)題意,可以通過查詢方式不斷讀取8255A的C口狀態(tài)確定K鍵是否按下,也可以利  用中斷方式,當(dāng)K鍵按下時,由INTRA(PC3)向CPU申請中斷。當(dāng)判斷K鍵按下后,讀取  8255A的A口狀態(tài),并通過B口顯示到LED上。利用查詢方式實(shí)現(xiàn)時,僅需要給定方式選擇 控制字;利用中斷方

50、式實(shí)現(xiàn)時,除控制字外還需設(shè)定INTEA為1,允許INTRA申請中斷?!  ? 因此,8255A的方式控制字為:10110000B(0B0H);使 INTEA(PC4)置1,其控制字為      00001001B(09H)。{注意:利用中斷方式實(shí)現(xiàn)時還需要置PC7為0,使INTRA能到達(dá)8259    的IRQ3}    硬件連接與參考源程序:    (1)利用查詢方式實(shí)現(xiàn) 硬件連接:    1)8255A的A口PA0~PA7與K1~K8對應(yīng)相連;  2)8255A的B口PB0~PB7與L1~L8對應(yīng)相連;   3)按鍵K接8255A的C口PC4。 參考源程序:  CODE

51、 SEGMENT ASSUME CS:CODE  START: MOV AL, 0B0H ; 8255A初始化,方式控制字10110000B    MOV DX, 20BH OUT DX, AL        MOV DX, 209H ;LED初始化  MOV AL, 00H OUT DX, AL        AGAIN: MOV AH, 01H ;判斷計(jì)算機(jī)鍵盤上是否有鍵按下,若有結(jié)束程序   INT 16H JNZ EXIT   MOV DX, 20AH ;讀入8255A的C口狀態(tài)    IN AL, DX   TEST AL, 00010000B ;判斷PC

52、4=1?(K鍵是否按下) JNZ AGAIN    MOV DX, 208H ;讀入8255A的A口狀態(tài)   IN AL, DX    MOV DX, 209H ;將A口狀態(tài)送8255A的B口  OUT DX, AL JMP AGAIN         EXIT: MOV AH, 4CH INT 21H   CODE ENDS    END START         (2)利用中斷方式實(shí)現(xiàn) 硬件連接:    1)8255A的A口PA0~PA7與K1~K8對應(yīng)相連;  2)8255A的B口PB0~PB7與L1~L8對應(yīng)相連;    3)按鍵K接8255A的C口PC

53、4;    4)8255A的C口PC3(INTRA)接IRQ。 參考源程序:               DATA            SEGMENT           PORTA DW 208H  ; 8255A的A口地址     PORTB DW 209H   ; 8255A的B口地址       PORTC DW 20AH  ; 8255A的C口地址       DATA  PORT_CTR DW 20BH ENDS  ; 8255A的控制口地址   STACK1 SEGMENT STACK    DB 100 DUP(0)

54、STACK1 ENDS          CODE SEGMENT  ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1  START: MOV AX, DATA MOV DS, AX MOV ES, AX     MOV DX, PORT_CTR ;寫入8255A方式控制字0B0H MOV AL, 0B0H   OUT DX, AL  MOV AL, 09H ;寫入C口按位置位控制字,PC4置“1”    OUT DX, AL        MOV AL, 0EH ;寫入C口按位復(fù)位控制字,PC7置“0”,開IRQ OU

55、T DX, AL        MOV AX, 350BH ;保存系統(tǒng)原有中斷號為0BH的中斷向量到堆?!? INT 21H PUSH ES PUSH BX   MOV AX, SEG INTPROC ;向0BH號中斷寫入新的中斷向量    MOV DS, AX  MOV DX, OFFSET INTPROC MOV AX, 250BH    INT 21H    IN AL, 21H ;允許8259的IRQ3中斷    AND AL, 0F7H OUT 21H, AL  STI ;允許CPU響應(yīng)可屏蔽中斷     WAIT0: MOV AH, 01H ;判斷是否有鍵按下

56、,若有則結(jié)束程序,若無則等待  INT 16H JZ WAIT0      POP DX ;恢復(fù)系統(tǒng)中斷向量表      POP DS  MOV AX, 250BH INT 21H       MOV AH, 4CH INT 21H      INTPROC PROC NEAR   MOV DX, PORTA ;讀入8255A端口A的狀態(tài)(開關(guān)狀態(tài))  IN AL, DX    MOV DX, PORTB ;從8255A的B口輸出開關(guān)狀態(tài),由對應(yīng)的LED顯示   OUT DX, AL    MOV AL, 20H ;給8259發(fā)中斷結(jié)束指令  OUT 20

57、H, AL IRET  INTPROC ENDP         CODE ENDS    END START       實(shí)驗(yàn)九:LED 顯示器接口實(shí)驗(yàn)         (1)編制一個從左到右循環(huán)顯示字符“8”的程序,要求每個字位的停留時間約為1s,當(dāng)從標(biāo) 準(zhǔn)鍵盤上按下任意鍵時結(jié)束程序?!? 分析: 根據(jù)題意要求,實(shí)驗(yàn)板上的6位8段數(shù)碼管的段選信號均相同,為字符“8”的段碼(80H)。  為了實(shí)現(xiàn)從左到右循環(huán)顯示且每個字位停留約1s的功能,只需要每隔一秒給位選信號賦值, 選通/斷開相應(yīng)的位即可。當(dāng)循環(huán)顯示到最右端時,延時1s再從最左端開始顯示。為此,在 該題中我們利用8

58、255A的A口作為6位LED顯示器的段選口(地址208H),8255A的B口作為6 位LED顯示器的位選口(地址209H)。8255A的控制字為:10000000B(80H)  硬件連接:    (1)8255A的A口PA0~PA7分別對應(yīng)連接LED顯示器的段選輸入a~h.   (2)8255A的B口PB0~PB5分別對應(yīng)連接LED1~LED6顯示器的位選輸入。 程序流程圖略。    參考源程序:  .486    STACK1 SEGMENT STACK DB 100 DUP(0)   STACK1 ENDS        CODE SEGMENT  ASS

59、UME CS:CODE, SS:STACK1    START: MOV AL, 80H ; 8255A工作方式初始化,A口方式0輸出,B口方式0輸出   MOV DX, 20BH OUT DX, AL        MOV AL, 80H ;8255A的A口輸出字符“8”的段碼80H MOV DX, 208H    OUT DX, AL      L1: MOV BL, 20H ;LED顯示器位選信號存放在BL中,20H表示最左邊一位   L2: MOV AL, BL ;將LED位選信號輸出到8255A的B口  MOV DX, 209H OUT DX, AL   

60、CALL DELAY ;調(diào)研軟件延時程序    MOV AH, 01H ;判斷標(biāo)準(zhǔn)鍵盤上是否有鍵按下,若有則結(jié)束程序  INT 16H JNZ EXIT  SHR BL, 1 ;LED位選信號右移一位,選中下一位LED  JNZ L2   JMP L1 ;當(dāng)循環(huán)到最右邊一位LED時,重新填充BL值,開始新一輪循環(huán)        EXIT: MOV DX, 208H     MOV AL, 0FFH OUT DX, AL MOV DX, 209H MOV AL, 00H  OUT DX, AL ;關(guān)閉所有LED         MOV AH, 4CH INT 21H 

61、        DELAY PROC NEAR    MOV ECX, 0FFFFFFFH LP: LOOPD LP    RET DELAY ENDP CODE ENDS  END START       (2)完成多位LED顯示器的顯示,即設(shè)計(jì)一個顯示字符串1234.56的程序,當(dāng)標(biāo)準(zhǔn)鍵盤上有 任意鍵按下時結(jié)束程序。  基本思想: 借助動態(tài)掃描、分時顯示的辦法,利用人眼視覺的滯留效應(yīng),實(shí)現(xiàn)人眼看上去的各位“同  時”顯示。 分析:    利用實(shí)驗(yàn)操作面板上引出的8255A的分別A口和B口作為6位8段LED顯示器的位選口和 段選口,從段選口依次輸出待顯示字符的段碼,

62、并選通相應(yīng)的位實(shí)現(xiàn)對多位LED顯示器的刷 新。8255A的A口和B口均工作在方式0的輸出方式,方式控制字為:1000000B(80H)。 硬件連接:    (1)8255A的A口PA0~PA5對應(yīng)連接LED1~LED6的位選;  (2)8255A的B口PB0~PB7對應(yīng)連接段選a~h; 程序流程圖略。    參考源程序:  DATA SEGMENT   SEGTAB DB 0C0H, 0F9H, 0A4H, 0B0H ;定義0~F的段碼存儲區(qū)  DB 99H, 92H, 82H, 0F8H DB 80H, 98H, 88H, 83H  DB 0C6H, 0A1H, 86H,

63、8EH     DISPMEM DB 01H, 02H, 03H, 04H, 05H, 06H ;定義顯示緩沖區(qū)  DATA ENDS  STACK1 SEGMENT STACK DB 100 DUP(0)    STACK1 ENDS CODE SEGMENT    ASSUME CS:CODE, DS:DATA, SS:STACK1       START: MOV AX, DATA MOV DS, AX   MOV AL, 80H ;8255A初始化,A口輸出,B口輸出  MOV DX, 20BH OUT DX, AL  L1: MOV AH, 2

64、0H ;預(yù)置位選信號  LEA SI, DISPMEM ;SI指向顯示緩沖區(qū)    LEA BX, SEGTAB ;BX指向段碼存儲區(qū)  L2: MOV AL, [SI] XLAT    CMP AH, 04H JNE NEXT  AND AL, 7FH ;第4位LED顯示小數(shù)點(diǎn)   NEXT: MOV DX, 209H ;輸出段碼  OUT DX, AL   MOV DX, 208H ;輸出位選信號   MOV AL, AH OUT DX, AL   MOV CX, 4000 ;延時  LP2: LOOP LP2    PUSH AX  MOV AH, 01H ;判

65、斷標(biāo)準(zhǔn)鍵盤上是否有鍵按下,若有鍵按下則結(jié)束程序  INT 16H JNZ EXIT POP AX   INC SI ;修改顯示緩沖區(qū)指針  SHR AH, 1 ;修改位選信號  JNZ L2   JMP L1       EXIT: MOV DX, 208H MOV AL, 00H OUT DX, AL MOV DX, 209H MOV AL, 0FFH  OUT DX, AL ;關(guān)閉所有LED        MOV AH, 4CH INT 21H        CODE ENDS   END START      實(shí)驗(yàn)十:鍵盤接口實(shí)驗(yàn)       

66、編制1個用鍵盤控制模擬電動機(jī)轉(zhuǎn)動的程序,即用非編碼鍵盤上的A和B兩個鍵作轉(zhuǎn)、停控制, 并在數(shù)碼顯示器上顯示F表示電機(jī)轉(zhuǎn)動,計(jì)算機(jī)屏幕上顯示笑臉符表示電機(jī)停,按回車鍵結(jié) 束程序執(zhí)行(笑臉符的ASCII碼為02H)?!  ?        分析: 根據(jù)題目的要求,需要不斷掃描44非編碼鍵盤,判斷鍵盤上A或B鍵(控制停轉(zhuǎn),在屏  幕上顯示笑臉)是否按下。若按下A鍵則在LED上顯示F,表示電機(jī)轉(zhuǎn)動;若按下B鍵則在計(jì) 算機(jī)屏幕(CRT顯示器)上顯示笑臉,表示電機(jī)停轉(zhuǎn)。    可以用8255A的C口作為非編碼鍵盤的行掃描信號,同時作為LED的位選信號,B口作為 非編碼鍵盤的列掃描信號,A口作為LED的段選信號。8255A的C口工作在輸出方式,B口工 作在輸入方式,A口工作在輸出方式,8255A的方式控制字為:10000010B(82H) 硬件連接:  (1)8255A的A口的PA0~PA7接段選信號a~f;    (2)8255A的B口的PB0~PB3接非編碼鍵盤的列掃描端(J9)   (3)8255A的C口的PC0~P

展開閱讀全文
溫馨提示:
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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲