《匯編語言》課程設計-用匯編語言進行音樂動畫功能的實現_第1頁
《匯編語言》課程設計-用匯編語言進行音樂動畫功能的實現_第2頁
《匯編語言》課程設計-用匯編語言進行音樂動畫功能的實現_第3頁
《匯編語言》課程設計-用匯編語言進行音樂動畫功能的實現_第4頁
《匯編語言》課程設計-用匯編語言進行音樂動畫功能的實現_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、匯編語言課程設計 設計題目用匯編語言進行音樂動畫功能的實現設計主要功能建立一個菜單,菜單上有個功能,根據選擇的菜單項執行相應的功能,功能包括:(1)編寫一個樂曲程序;(2)編寫指令以文本方式在品紅底上顯示5個藍色的笑臉符號;(3)編寫程序,使一只“鳥”飛過屏幕;(4)在模擬游戲程序中用隨機數來控制其圖形在屏幕移動;(5)編寫驅動打印機打印字符的程序(6)寫一個2臺計算機互相通信的程序,要求只編寫近距離通信,傳輸速率和4800波特,字長8位,終止位1位,無奇偶校驗,在A機上發送信息“How are you?”,在B 機上回答“very good!”;(7)編寫建立、寫入、讀出磁盤文件的程序;三、

2、系統分析與設計編寫主程序,在主程序中用數字標出各個子功能,當用戶從鍵盤輸入某個數字時,就去執行相應的功能。1. 樂曲是按照一定的高低、長短和強弱關系組成的音調,在一首樂曲中,每個音符的高低和音長,與頻率和節拍有關。要實現樂曲的演奏,可通過調用發聲程序來達到輸出音樂的效果。在程序中,可以設定兩個變量分別用來存儲音符的頻率值和持續的時間。音符的頻率可以通過查閱有關資料獲得,音符的持續時間根據樂曲的速度及每個音符的節拍數來確定。得到了音頻和時間的關系,就可以按照樂曲的曲譜。將每個音和持續時間定義成兩個數據表,然后編寫程序依次取出表中的頻率和時間值,調用程序發出聲音。通過對計數器2設定不同的值來得到不

3、同頻率;通過監控端口61H的PB4,使PB4每隔15.08 S觸發一次,產生一個固定的時間基準也可以通過程序來延遲聲音的時間。2. 文本的顯示是通過調用BIOS 10H的子功能09H來顯示字符,其中BL中的值為前景和背景彩色屬性值。程序的實現可分為如下三步:彩色文本方式的屬性字節的設置;調用BIOS下的中斷類型10H;使用CX來控制顯示符號的個數。3. 用小寫字母v變為破折號來模仿飛鳥的動作。調用BIOS的字符顯示功能 10H,使這兩個字符先后在兩列顯示,每個字符顯示固定的時間后消失。形成鳥飛翔的效果。4. 模擬游戲程序中用隨機數來控制其圖形在屏幕上移動。該功能實現的關鍵是如何得到一個隨機數,

4、隨機數的生成是通過調用1AH中斷來訪問系統時間,用這樣的辦法來實現隨機數種子。然后通過一些運算,如將行、列值分別加上一個數字,來實現圖形的移動。另外,程序的圖形采用多字符組合實現。首先在屏幕上顯示出來,延遲一個時間周期,讓圖形更清晰。然后清除圖形,調用隨機數種子,計算出下一步圖形的位置,讓圖形在相應的位置顯示。循環執行上一步過程,直到移出屏幕位置為止。5用戶從鍵盤輸入一個文件,在屏幕上回顯出來。每輸入一行180個字符,用戶檢查一遍,如果用戶認為無須修改,則鍵入回車,此時這行字符就存入BUFFER緩沖區保存,同時打印機把這行字符打印出來并換行。6計算機之間進行遠程通信時,可以用調制解調器(MOD

5、EM),借助于電話電纜線進行,這需要計算機串行地發送或接收數據與信息。由于串行數據通信使用的傳輸線條數少,微型機中已經裝有異步接收發送器8250及一些通信接口,因此兩臺微型計算機之間在進行近距離通信時,可以不用調制解調器,通過電纜線直接進行串行通信。使用串行通訊口BIOS功能(INT 14H)實現通信;PC上的串行接口是標準的RS-232接口,串行通訊口BIOS功能INT 14H的AH=0子功能,把指定的串行通訊口初始化,即可進行通信。(2)使用8250中斷方式進行通信。IBM PC機內裝有通信適配器板,它使PC機有能力與其它具有標準RS-232C串行通信接口的計算機進行通信。PC機中異步接收

6、發送器組件8250芯片UART可以完成大多數串行協議中的要求, 通過此芯片實現異步通信。在通信之前,根據協議規定的波特率、數據、停止位等,對8250進行初始化。初始化之后,就可以進行發送和接收數據了。7文件是常用的數據存儲形式,也是磁盤存儲的基本內容。用匯編語言可以有效地管理和控制磁盤資源,建立自己特有的文件并體會DOS的功能。用匯編語言實現DOS的TYPE和COPY功能。具體要求是:(1) 讀入一個文本文件,將大寫的字母轉換為小寫字母并將結果顯示在屏幕上。對于讀文件,應首先打開文件,順序讀取文件內容并顯示,同時將其中的大寫字母轉換為小寫字母,最后關閉文件。(2) 將剛轉換成小寫字母的文件拷貝

7、到另一個文件中。本功能實現DOS中的COPY命令,可首先打開源文件和目標文件,其次順序讀取源文件,將每個字節賦給目的文件對應位置,源文件讀完時,目的文件就拷貝完成了。四、設計框圖五、程序清單 DATA SEGMENT;- 菜單 LIST DB 0DH,0AH DB *,0DH,0AH DB *Please input: *,0DH,0AH DB * 1.Smiling face *,0DH,0AH DB * 2.Play music *,0DH,0AH DB * 3.Flying bird *,0DH,0AH DB * 4.random *,0DH,0AH DB * 5.Printing *,

8、0DH,0AH DB * 6.Communication*,0DH,0AH DB * 7.File *,0DH,0AH DB * 0.Exit *,0DH,0AH DB *,0DH,0AH,$;- 音樂頻率表和節拍時間表 mus_freg dw 330,294,262,294,3 dup(330) dw 3 dup(294),330,392,392 dw 330,294,262,294,4 dup(330) dw 294,294,330,294,262,-1mus_time dw 6 dup(250),500 dw 2 dup(500,250,500) dw 12 dup(250),1000

9、;- 小鳥 BIRD_DB DB V, 0010B ;綠色小鳥 DB _, 0010B;- 隨機數 RANDOM_DW DW ? RANDOM_HI DB ? RANDOM_WI DB ?;- 打印 INTR_MSG DB YOU are using a typer simulator. DB To quit this program,press Esc,13,10,$ PROMPT_MSG DB 9EH,10H,$ KEY_ESC EQU 1BH KEY_CR EQU 0DH KEY_LF EQU 0AH;-通訊 COM_MESSAGE DB Serial communication via

10、 COM2,4800,no p,1 stop,8 bit data,0AH,0DH DB Any key press is sent to other Pc,0AH,0DH DB Press Esc to exit,$;-文件 FILE1 DB d:masm1.txt , 0 ;要打開的文件的路徑和文件名 FILE2 DB d:masm2.txt , 0 ;創建的文件的路徑和文件名 BUF1 DB 256 DUP(0) ;文件內容暫存區 BUF2 DB 256 DUP(0) ;文件內容暫存區 ERROR_Msg DB 0dh,0AH , error ! , $ ;出錯時的提示 finish_M

11、SG DB 0dh,0AH , success!$ ;操作成功后的提示 HANDLE DW ? ;保存文件代號;- DATA ENDS ;- CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC NEAR ;主程序 START: MOV AX,DATA MOV DS,AX MOV AH,09 LEA DX,LIST ;輸出菜單 INT 21H MOV AH,01H ;選項輸入 INT 21H CMP AL,0 JZ EXIT CMP AL,1 JNZ J1 CALL FACE ;訪問 FACE JMP START J1: CMP AL,2 JNZ J2 C

12、ALL MUSIC ;訪問 MUSIC JMP START J2: CMP AL,3 JNZ J3 CALL BIRD ;訪問 BIRD JMP START J3: CMP AL,4 JNZ J4 CALL RANDOM ;訪問 RANDOM JMP START J4: CMP AL,5 JNZ J5 CALL PRINTING ;訪問 PRINTING JMP START J5: CMP AL,6 JNZ J6 CALL COM ;訪問 COM JMP START J6: CMP AL,7 JNZ START CALL FILE ;訪問 FILE JMP START EXIT: MOV AH

13、,4CH INT 21H MAIN ENDP ;- 笑臉 FACE PROC NEAR MOV DS,AX MOV AH,09 MOV AL,01 ;笑臉字符 MOV BH,0 ;第一頁 MOV BL,01010001B ;品紅背景,藍色笑臉 MOV CX,05 ;5個 INT 10H RET FACE ENDP;- 音樂 MUSIC PROC NEAR LEA SI,DS:MUS_FREG LEA BP,DS:MUS_TIME FREQ: MOV DI,SI ;循環播放音樂 CMP DI,-1 JE END_MUS ;為-1結束 MOV BX,DS:BP CALL SOUNDF ;訪問發聲程

14、序 ADD SI,2 ADD BP,2 JMP FREQ END_MUS: RET MUSIC ENDP SOUNDF PROC NEAR ;發聲程序 PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AL,0B6H ;(10110110B) OUT 43H,AL ;對定時器2進行初始化,使其準備接收計數初值 MOV DX,12H MOV AX,348CH DIV DI ;頻率DX=12H OUT 42H,AL ;42H端口裝入一個16位的計數值(533*896/頻率),以建立將要產生的聲音的頻率 MOV AL,AH OUT 42H,AL IN AL,61

15、H MOV AH,AL OR AL,3 ;把61H的0,1兩位置1,發出聲音 OUT 61H,AL MOV BX,10000 WAIT_mus: MOV CX,8FF0H DELAY: LOOP DELAY ;時間延遲loop執行100000*8ff0h次 DEC BX JNZ WAIT_mus MOV AL,AH OUT 61H,AL ;恢復端口 POP DI POP DX POP CX POP BX POP AX RET SOUNDF ENDP;- 小鳥 BIRD PROC NEAR ;小鳥子程序 MOV AH, 0 ;設置300*200彩色圖形方式 MOV AL, 3 INT 10H M

16、OV DL, 1 ;小鳥起始位置 BEGIN_BIR: MOV DH, 8 MOV SI, 2 MOV CX, 1 ;小鳥個數 LEA DI, BIRD_DB ;DI指向小鳥字符表的首字母 DISP_BIR: INC DH MOV AH, 2 ;設置光標位置 INT 10H MOV AH, 9 ;顯示小鳥字符V MOV AL, DI MOV BL, DI+1 INT 10H CALL DLY_BIR ;延時 MOV AL, ;覆蓋小鳥 MOV BL, 0 INT 10H ADD DI, 2 INC DL CMP DL, 80 ;看是否到邊界 JAE EXIT_BIR ;是,退出 DEC SI

17、JNZ DISP_BIR JMP BEGIN_BIR EXIT_BIR: RET BIRD ENDP DLY_BIR PROC NEAR ;延時子程序 PUSH CX PUSH DX MOV DX, 10000 DL1: MOV CX, 6801 DL2: LOOP DL2 ;10000*6801 DEC DX JNZ DL1 POP DX POP CX RET DLY_BIR ENDP;- 隨機數 RANDOM PROC NEAR MOV SI,10 MOV AH,0 ;設置屏幕 MOV AL,03 ;25*80,16色文本 INT 10H DISP_RAN: MOV AX,DATA MOV

18、 DS,AX CALL RAND MOV AX,RANDOM_DW AND AH,3 ;清高6位 MOV DL, 25 DIV DL MOV RANDOM_HI,AH ;除25,余數存hi,作隨機數 MOV AX,RANDOM_DW AND AH,1 ;清高7位 MOV DL,80 DIV DL MOV RANDOM_WI,AH ;除80,余數存wi,作隨機數 MOV DH,RANDOM_HI MOV DL,RANDOM_WI MOV AH,2 MOV BH,0 INT 10H MOV AH,9 MOV AL,* ;顯示* MOV BH,0 MOV BL,5 MOV CX,1 INT 10H

19、MOV BX,20 DELAY_RAN: MOV CX,20000 ;延遲 CALL WAITF_RAN DEC BX JNZ DELAY_RAN JMP NEXT WAITF_RAN PROC NEAR PUSH AXWAITF_RAN_0: IN AL,61H AND AL,10H CMP AL,AH JE WAITF_RAN_0 MOV AH,AL LOOP WAITF_RAN_0 POP AX RET WAITF_RAN ENDP NEXT: CALL CLEAR_SCR DEC SI JZ EXIT_RAN JMP DISP_RAN EXIT_RAN: CALL MAIN RANDO

20、M ENDP CLEAR_SCR PROC NEAR ;清屏 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 ;卷屏 MOV AL,0 ;黑屏 MOV BH,7 ;黑線 MOV CH,0 ;左上行 MOV CL,0 ;左上列 MOV DH,24 ;右下行 MOV DL,79 ;右下列 INT 10H MOV DX,0 ;定義光標位置 MOV AH,2 INT 10H POP DX POP CX POP BX POP AX RET CLEAR_SCR ENDP RAND PROC NEAR ;訪問時鐘 PUSH CX PUSH DX PUSH AX STI MO

21、V AH,0 ;讀時鐘計數器值 INT 1AH MOV RANDOM_DW,DX ;(DH:DL=秒:1/100秒) POP AX POP DX POP CX RET RAND ENDP;- 打印 PRINT MACRO STR_ADDR ;宏定義顯示信息 PUSH DX PUSH AX LEA DX,STR_ADDR MOV AH,09 INT 21H POP AX POP DX ENDM PRINTING PROC NEAR MOV AH,0 ;設置屏幕 MOV AL,02 ;25*80黑白文本 INT 10H STI CLD MOV AH,0 ;初始化打印機 MOV DX,0 INT 1

22、7H MOV AX,DATA MOV DS,AX MOV DX,0 ;顯示輸出 MOV AH,2 INT 21H PRINT INTR_MSG PRINT PROMPT_MSG GET_CHAR: MOV AH,1 ;鍵盤輸入字符 INT 21H CMP AL,0 JZ GET_CHAR CMP AL,KEY_ESC ;是否位ESC JZ PRINT_EXIT MOV DL,AL ;打印一個字符 MOV AH,5 INT 21H CMP AL,KEY_CR ;是否為回車 JNZ GET_CHAR MOV DL,KEY_LF ;換行 MOV AH,2 ;顯示換行 INT 21H MOV AH,5

23、 ;打印換行 INT 21H PRINT PROMPT_MSG ;打印標志 JMP GET_CHAR print_EXIT: RET PRINTING ENDP;- 通訊 COM PROC NEAR MOV AX,DATA MOV DS,AX MOV AH,09 ; 顯示信息 MOV DX,OFFSET COM_MESSAGE INT 21H MOV AH,0 ;初始化COM端口 MOV DX,1 ;COM2 MOV AL,0C3H ;4800,n,1,8 INT 14H AGAIN_COM: MOV AH,01 ;獲取鍵盤狀態 INT 16H JZ NEXT_COM ;如果ZF=1,沒有按鍵

24、 MOV AH,0 ;有按鍵,取之 INT 16H CMP AL,1BH ;是否為ESC JE EXIT_COM MOV AH,1 ;向端口通信口寫字符 MOV DX,1 INT 14H NEXT_COM: MOV AH,3 ;取COM通信口狀態 MOV DX,1 ;DX=通信口號 INT 14H AND AH,1 ;刪掉所有字節,除了D0 CMP AH,1 ;數據準備是否好 JNE AGAIN_COM ;沒有字符,跳到AGAIN_COM MOV AH,2 ;是,從端口COM2通信口讀字符 MOV DX,1 INT 14H MOV DL,AL MOV AH,2 ;輸出字符 INT 21H JM

25、P AGAIN_COM EXIT_COM: RET COM ENDP;- 文件 FILE PROC NEAR READ: MOV AX , DATA ;讀文件 MOV DS , AX MOV DX , OFFSET FILE1 MOV AL , 0 MOV AH , 3DH ;打開文件 INT 21H JC ERROR_FIL ;若打開出錯,轉error MOV HANDLE , AX ;保存文件代號 MOV BX , AX MOV CX , 255 MOV DX , OFFSET BUF1 MOV AH , 3FH ;從文件中讀255字節buf INT 21H JC ERROR_FIL ;若

26、讀出錯,轉error MOV BX , AX ;實際讀到的字符數送入bx MOV BUF1BX , $ ;在文件結束處放置一“$”結束符 MOV BX , HANDLE MOV AH , 3EH ;關閉文件 INT 21H MOV SI , -1 EXCHANGE: INC SI ;大寫轉小寫,并-BUF2 MOV AL ,BUF1SI CMP AL, A JB chuan_FIL CMP AL,Z JG chuan_FIL ADD AL , 20H MOV BUF1SI, AL chuan_FIL: MOV BH, BUF1SI MOV BUF2SI ,BH ;把字符變為小寫后,傳給BUF2 CMP bh ,$ ;是否結束? Jnz EXCHANG

溫馨提示

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

評論

0/150

提交評論