版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《匯編語言》課程設(shè)計 </p><p><b> 設(shè)計題目</b></p><p> 用匯編語言進行音樂動畫功能的實現(xiàn)</p><p><b> 設(shè)計主要功能</b></p><p> 建立一個菜單,菜單上有7個功能,根據(jù)選擇的菜單項執(zhí)行相應(yīng)的功能,功能包
2、括:</p><p> (1)編寫一個樂曲程序;</p><p> (2)編寫指令以文本方式在品紅底上顯示5個藍色的笑臉符號;</p><p> (3)編寫程序,使一只“鳥”飛過屏幕;</p><p> (4)在模擬游戲程序中用隨機數(shù)來控制其圖形在屏幕移動;</p><p> (5)編寫驅(qū)動打印機打印字符的程
3、序</p><p> (6)寫一個2臺計算機互相通信的程序,要求只編寫近距離通信,傳輸速率和4800波特,字長8位,終止位1位,無奇偶校驗,在A機上發(fā)送信息“How are you?”,在B 機上回答“very good!”;</p><p> (7)編寫建立、寫入、讀出磁盤文件的程序;</p><p><b> 三、系統(tǒng)分析與設(shè)計</b>
4、;</p><p> 編寫主程序,在主程序中用數(shù)字標出各個子功能,當用戶從鍵盤輸入某個數(shù)字時,就去執(zhí)行相應(yīng)的功能。</p><p> 1. 樂曲是按照一定的高低、長短和強弱關(guān)系組成的音調(diào),在一首樂曲中,每個音符的高低和音長,與頻率和節(jié)拍有關(guān)。要實現(xiàn)樂曲的演奏,可通過調(diào)用發(fā)聲程序來達到輸出音樂的效果。</p><p> 在程序中,可以設(shè)定兩個變量分別用來存儲音符
5、的頻率值和持續(xù)的時間。音符的頻率可以通過查閱有關(guān)資料獲得,音符的持續(xù)時間根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。得到了音頻和時間的關(guān)系,就可以按照樂曲的曲譜。</p><p> 將每個音和持續(xù)時間定義成兩個數(shù)據(jù)表,然后編寫程序依次取出表中的頻率和時間值,調(diào)用程序發(fā)出聲音。</p><p> 通過對計數(shù)器2設(shè)定不同的值來得到不同頻率;</p><p> 通過監(jiān)控
6、端口61H的PB4,使PB4每隔15.08 µS觸發(fā)一次,產(chǎn)生一個固定的時間基準也可以通過程序來延遲聲音的時間。</p><p> 2. 文本的顯示是通過調(diào)用BIOS 10H的子功能09H來顯示字符,其中BL中的值為前景和背景彩色屬性值。程序的實現(xiàn)可分為如下三步:</p><p> 彩色文本方式的屬性字節(jié)的設(shè)置;</p><p> 調(diào)用BIOS下的中
7、斷類型10H;</p><p> 使用CX來控制顯示符號的個數(shù)。</p><p> 3. 用小寫字母v變?yōu)槠普厶杹砟7嘛w鳥的動作。調(diào)用BIOS的字符顯示功能 10H,使這兩個字符先后在兩列顯示,每個字符顯示固定的時間后消失。形成鳥飛翔的效果。</p><p> 4. 模擬游戲程序中用隨機數(shù)來控制其圖形在屏幕上移動。</p><p>
8、該功能實現(xiàn)的關(guān)鍵是如何得到一個隨機數(shù),隨機數(shù)的生成是通過調(diào)用1AH中斷來訪問系統(tǒng)時間,用這樣的辦法來實現(xiàn)隨機數(shù)種子。</p><p> 然后通過一些運算,如將行、列值分別加上一個數(shù)字,來實現(xiàn)圖形的移動。</p><p> 另外,程序的圖形采用多字符組合實現(xiàn)。</p><p> 首先在屏幕上顯示出來,延遲一個時間周期,讓圖形更清晰。然后清除圖形,調(diào)用隨機數(shù)種子,
9、計算出下一步圖形的位置,讓圖形在相應(yīng)的位置顯示。循環(huán)執(zhí)行上一步過程,直到移出屏幕位置為止。</p><p> 5.用戶從鍵盤輸入一個文件,在屏幕上回顯出來。每輸入一行180個字符,用戶檢查一遍,如果用戶認為無須修改,則鍵入回車,此時這行字符就存入BUFFER緩沖區(qū)保存,同時打印機把這行字符打印出來并換行。</p><p> 6.計算機之間進行遠程通信時,可以用調(diào)制解調(diào)器(MODEM),
10、借助于電話電纜線進行,這需要計算機串行地發(fā)送或接收數(shù)據(jù)與信息。由于串行數(shù)據(jù)通信使用的傳輸線條數(shù)少,微型機中已經(jīng)裝有異步接收發(fā)送器8250及一些通信接口,因此兩臺微型計算機之間在進行近距離通信時,可以不用調(diào)制解調(diào)器,通過電纜線直接進行串行通信。</p><p> 使用串行通訊口BIOS功能(INT 14H)實現(xiàn)通信;</p><p> PC上的串行接口是標準的RS-232接口,串行通訊口
11、BIOS功能INT 14H的AH=0子功能,把指定的串行通訊口初始化,即可進行通信。</p><p> ?。?)使用8250中斷方式進行通信。</p><p> IBM PC機內(nèi)裝有通信適配器板,它使PC機有能力與其它具有標準RS-232C串行通信接口的計算機進行通信。PC機中異步接收發(fā)送器組件8250芯片UART可以完成大多數(shù)串行協(xié)議中的要求, 通過此芯片實現(xiàn)異步通信。在通信之前,根據(jù)
12、協(xié)議規(guī)定的波特率、數(shù)據(jù)、停止位等,對8250進行初始化。初始化之后,就可以進行發(fā)送和接收數(shù)據(jù)了。</p><p> 7.文件是常用的數(shù)據(jù)存儲形式,也是磁盤存儲的基本內(nèi)容。用匯編語言可以有效地管理和控制磁盤資源,建立自己特有的文件并體會DOS的功能。用匯編語言實現(xiàn)DOS的TYPE和COPY功能。具體要求是:</p><p> (1) 讀入一個文本文件,將大寫的字母轉(zhuǎn)換為小寫字母并將結(jié)果顯
13、示在屏幕上。</p><p> 對于讀文件,應(yīng)首先打開文件,順序讀取文件內(nèi)容并顯示,同時將其中的大寫字母轉(zhuǎn)換為小寫字母,最后關(guān)閉文件。</p><p> (2) 將剛轉(zhuǎn)換成小寫字母的文件拷貝到另一個文件中。</p><p> 本功能實現(xiàn)DOS中的COPY命令,可首先打開源文件和目標文件,其次順序讀取源文件,將每個字節(jié)賦給目的文件對應(yīng)位置,源文件讀完時,目的文件
14、就拷貝完成了。</p><p><b> 四、設(shè)計框圖</b></p><p><b> 五、程序清單</b></p><p> DATA SEGMENT</p><p> ;----------------------------------------------------- 菜單&
15、lt;/p><p> LIST DB 0DH,0AH</p><p> DB '******************************',0DH,0AH</p><p> DB '*Please input: *',0DH,0AH</p>&
16、lt;p> DB '* 1.Smiling face *',0DH,0AH</p><p> DB '* 2.Play music *',0DH,0AH</p><p> DB '* 3.Flying bird *
17、9;,0DH,0AH</p><p> DB '* 4.random *',0DH,0AH</p><p> DB '* 5.Printing *',0DH,0AH</p><p> DB '*
18、 6.Communication*',0DH,0AH</p><p> DB '* 7.File *',0DH,0AH</p><p> DB '* 0.Exit *',0DH,0AH</p><p> DB
19、 '******************************',0DH,0AH,'$'</p><p> ;----------------------------------------------------- 音樂頻率表和節(jié)拍時間表</p><p> mus_freg dw 330,294,262,294,3 dup(330)
20、</p><p> dw 3 dup(294),330,392,392</p><p> dw 330,294,262,294,4 dup(330)</p><p> dw 294,294,330,294,262,-1</p><p> mus_time dw 6 dup(250),500</p><p>
21、 dw 2 dup(500,250,500)</p><p> dw 12 dup(250),1000 </p><p> ;----------------------------------------------------- 小鳥</p><p> BIRD_DB DB 'V', 0010B ;綠色小鳥</p&
22、gt;<p> DB '_', 0010B</p><p> ;----------------------------------------------------- 隨機數(shù)</p><p> RANDOM_DW DW ?</p><p> RANDOM_HI DB ?</
23、p><p> RANDOM_WI DB ?</p><p> ;----------------------------------------------------- 打印</p><p> INTR_MSG DB 'YOU are using a typer simulator.'</p><
24、;p> DB 'To quit this program,press Esc',13,10,'$'</p><p> PROMPT_MSG DB 9EH,10H,'$'</p><p> KEY_ESC EQU 1BH</p><p> KEY_CR EQU
25、 0DH</p><p> KEY_LF EQU 0AH</p><p> ;-----------------------------------------------------通訊</p><p> COM_MESSAGE DB 'Serial communication via COM2,4800,no
26、 p,1 stop,8 bit data',0AH,0DH</p><p> DB 'Any key press is sent to other Pc',0AH,0DH</p><p> DB 'Press Esc to exit','$'</p><p> ;-------
27、----------------------------------------------文件</p><p> FILE1 DB 'd:\masm\1.txt' , 0 ;要打開的文件的路徑和文件名</p><p> FILE2 DB 'd:\masm\2.txt' , 0 ;創(chuàng)建的文件的路徑和文件名&
28、lt;/p><p> BUF1 DB 256 DUP(0) ;文件內(nèi)容暫存區(qū)</p><p> BUF2 DB 256 DUP(0) ;文件內(nèi)容暫存區(qū)</p><p> ERROR_Msg DB 0dh,0AH , 'error !' , '$' ;出錯時的提示</p&g
29、t;<p> finish_MSG DB 0dh,0AH , 'success!$' ;操作成功后的提示</p><p> HANDLE DW ? ;保存文件代號</p><p> ;--------------------------------------------------
30、---</p><p> DATA ENDS</p><p> ;----------------------------------------------------- </p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p>
31、 MAIN PROC NEAR ;主程序</p><p> START: MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV AH,09</p><p> LEA DX,LIST ;輸出菜單</p>&l
32、t;p> INT 21H</p><p> MOV AH,01H ;選項輸入</p><p> INT 21H</p><p> CMP AL,'0'</p><p> JZ EXIT</p><p> CMP
33、 AL,'1'</p><p> JNZ J1</p><p> CALL FACE ;訪問 FACE</p><p> JMP START</p><p> J1: CMP AL,'2'</p><p>
34、JNZ J2</p><p> CALL MUSIC ;訪問 MUSIC</p><p> JMP START</p><p> J2: CMP AL,'3'</p><p> JNZ J3</p><p> CALL
35、 BIRD ;訪問 BIRD</p><p> JMP START</p><p> J3: CMP AL,'4'</p><p> JNZ J4</p><p> CALL RANDOM ;訪問 RANDOM</p>&l
36、t;p> JMP START</p><p> J4: CMP AL,'5'</p><p> JNZ J5</p><p> CALL PRINTING ;訪問 PRINTING</p><p> JMP START</p>&l
37、t;p> J5: CMP AL,'6'</p><p> JNZ J6</p><p> CALL COM ;訪問 COM</p><p> JMP START</p><p> J6: CMP AL,'7'</
38、p><p> JNZ START</p><p> CALL FILE ;訪問 FILE</p><p> JMP START</p><p> EXIT: MOV AH,4CH</p><p> INT 21H</p>&l
39、t;p> MAIN ENDP</p><p> ;----------------------------------------------------- 笑臉</p><p> FACE PROC NEAR</p><p> MOV DS,AX</p><p> MOV AH,09
40、 </p><p> MOV AL,01 ;笑臉字符</p><p> MOV BH,0 ;第一頁</p><p> MOV BL,01010001B ;品紅背景,藍色笑臉</p><p> MOV CX,05 ;5個</p><p>
41、 INT 10H</p><p><b> RET</b></p><p> FACE ENDP</p><p> ;----------------------------------------------------- 音樂</p><p> MUSIC PROC NEAR<
42、/p><p> LEA SI,DS:MUS_FREG </p><p> LEA BP,DS:MUS_TIME</p><p> FREQ: MOV DI,[SI] ;循環(huán)播放音樂</p><p> CMP DI,-1 </p><p> JE
43、 END_MUS ;為-1結(jié)束</p><p> MOV BX,DS:[BP]</p><p> CALL SOUNDF ;訪問發(fā)聲程序</p><p> ADD SI,2</p><p> ADD BP,2</p><p> JMP
44、 FREQ</p><p> END_MUS: RET</p><p> MUSIC ENDP</p><p> SOUNDF PROC NEAR ;發(fā)聲程序</p><p> PUSH AX</p><p> PUSH BX</p><p&g
45、t; PUSH CX</p><p> PUSH DX</p><p> PUSH DI</p><p> MOV AL,0B6H ;(10110110B)</p><p> OUT 43H,AL ;對定時器2進行初始化,使其準備接收計數(shù)初值</p>
46、<p> MOV DX,12H</p><p> MOV AX,348CH </p><p> DIV DI ;頻率DX=12H</p><p> OUT 42H,AL ;42H端口裝入一個16位的計數(shù)值(533*896/頻率),以建立將要產(chǎn)生的聲音的頻率<
47、;/p><p> MOV AL,AH</p><p> OUT 42H,AL</p><p> IN AL,61H</p><p> MOV AH,AL</p><p> OR AL,3 ;把61H的0,1兩位置1,發(fā)出聲音</
48、p><p> OUT 61H,AL</p><p> MOV BX,10000</p><p> WAIT_mus: MOV CX,8FF0H </p><p> DELAY: LOOP DELAY ;時間延遲loop執(zhí)行100000*8ff0h次</p>
49、<p> DEC BX</p><p> JNZ WAIT_mus</p><p> MOV AL,AH</p><p> OUT 61H,AL ;恢復(fù)端口</p><p> POP DI</p><p> POP
50、 DX</p><p> POP CX</p><p> POP BX</p><p> POP AX</p><p><b> RET</b></p><p> SOUNDF ENDP</p><p> ;------
51、----------------------------------------------- 小鳥</p><p> BIRD PROC NEAR ;小鳥子程序</p><p> MOV AH, 0 ;設(shè)置300*200彩色圖形方式</p><p> MOV AL, 3</p>&l
52、t;p> INT 10H</p><p> MOV DL, 1 ;小鳥起始位置</p><p> BEGIN_BIR: MOV DH, 8</p><p> MOV SI, 2</p><p> MOV CX, 1 ;小鳥個數(shù)</p&g
53、t;<p> LEA DI, BIRD_DB ;DI指向小鳥字符表的首字母</p><p> DISP_BIR: INC DH</p><p> MOV AH, 2 ;設(shè)置光標位置</p><p> INT 10H</p><p> MOV AH
54、, 9 ;顯示小鳥字符V</p><p> MOV AL, [DI]</p><p> MOV BL, [DI+1]</p><p> INT 10H</p><p> CALL DLY_BIR ;延時</p><p> MOV A
55、L, ' ' ;覆蓋小鳥</p><p> MOV BL, 0</p><p> INT 10H</p><p> ADD DI, 2</p><p> INC DL</p><p> CMP DL, 80 ;看是否
56、到邊界</p><p> JAE EXIT_BIR ;是,退出</p><p> DEC SI</p><p> JNZ DISP_BIR</p><p> JMP BEGIN_BIR</p><p> EXIT_BIR: RET</p>
57、<p> BIRD ENDP</p><p> DLY_BIR PROC NEAR ;延時子程序</p><p> PUSH CX</p><p> PUSH DX</p><p> MOV DX, 10000</p><p> DL1:
58、 MOV CX, 6801</p><p> DL2: LOOP DL2 ;10000*6801</p><p> DEC DX</p><p> JNZ DL1</p><p> POP DX</p><p> POP
59、 CX</p><p><b> RET</b></p><p> DLY_BIR ENDP</p><p> ;----------------------------------------------------- 隨機數(shù)</p><p> RANDOM PROC NEAR</p>
60、<p> MOV SI,10</p><p> MOV AH,0 ;設(shè)置屏幕</p><p> MOV AL,03 ;25*80,16色文本</p><p> INT 10H </p><p>
61、 DISP_RAN: MOV AX,DATA</p><p> MOV DS,AX </p><p> CALL RAND </p><p> MOV AX,RANDOM_DW</p><p> AND AH,
62、3 ;清高6位</p><p> MOV DL, 25</p><p> DIV DL</p><p> MOV RANDOM_HI,AH ;除25,余數(shù)存hi,作隨機數(shù)</p><p> MOV AX,RANDOM_DW</p>&
63、lt;p> AND AH,1 ;清高7位</p><p> MOV DL,80</p><p> DIV DL</p><p> MOV RANDOM_WI,AH ;除80,余數(shù)存wi,作隨機數(shù)</p><p> MOV DH,
64、RANDOM_HI</p><p> MOV DL,RANDOM_WI</p><p> MOV AH,2 </p><p> MOV BH,0</p><p> INT 10H</p><p> MOV AH,9</p><
65、;p> MOV AL,'*' ;顯示*</p><p> MOV BH,0</p><p> MOV BL,5</p><p> MOV CX,1</p><p> INT 10H</p><p>
66、MOV BX,20</p><p> DELAY_RAN: MOV CX,20000 ;延遲</p><p> CALL WAITF_RAN</p><p> DEC BX</p><p> JNZ DELAY_RAN</p><p> JM
67、P NEXT</p><p> WAITF_RAN PROC NEAR</p><p> PUSH AX</p><p> WAITF_RAN_0:</p><p> IN AL,61H</p><p> AND AL,10H</p>
68、<p> CMP AL,AH</p><p> JE WAITF_RAN_0</p><p> MOV AH,AL</p><p> LOOP WAITF_RAN_0</p><p> POP AX</p><p><b> R
69、ET</b></p><p> WAITF_RAN ENDP</p><p> NEXT: CALL CLEAR_SCR</p><p> DEC SI</p><p> JZ EXIT_RAN</p><p> JMP DISP_RAN<
70、/p><p> EXIT_RAN: CALL MAIN</p><p> RANDOM ENDP</p><p> CLEAR_SCR PROC NEAR ;清屏</p><p> PUSH AX</p><p> PUSH BX</p><p
71、> PUSH CX</p><p> PUSH DX</p><p> MOV AH,6 ;卷屏</p><p> MOV AL,0 ;黑屏</p><p> MOV BH,7 ;黑線</p><p
72、> MOV CH,0 ;左上行</p><p> MOV CL,0 ;左上列</p><p> MOV DH,24 ;右下行</p><p> MOV DL,79 ;右下列</p><p> INT
73、10H</p><p> MOV DX,0 ;定義光標位置</p><p> MOV AH,2</p><p> INT 10H</p><p> POP DX</p><p> POP CX</p><p>
74、; POP BX</p><p> POP AX</p><p><b> RET</b></p><p> CLEAR_SCR ENDP</p><p> RAND PROC NEAR ;訪問時鐘</p><p> PUSH
75、 CX</p><p> PUSH DX</p><p> PUSH AX</p><p><b> STI</b></p><p> MOV AH,0 ;讀時鐘計數(shù)器值</p><p> INT 1AH</p>
76、<p> MOV RANDOM_DW,DX ;(DH:DL=秒:1/100秒)</p><p> POP AX</p><p> POP DX</p><p> POP CX</p><p><b> RET</b></p><p
77、> RAND ENDP</p><p> ;----------------------------------------------------- 打印</p><p> PRINT MACRO STR_ADDR ;宏定義顯示信息</p><p> PUSH DX</p><p> PU
78、SH AX</p><p> LEA DX,STR_ADDR </p><p> MOV AH,09 </p><p> INT 21H</p><p> POP AX</p><p> POP DX</p>
79、;<p><b> ENDM</b></p><p> PRINTING PROC NEAR </p><p> MOV AH,0 ;設(shè)置屏幕</p><p> MOV AL,02 ;25*80黑白文本</p><p&g
80、t; INT 10H </p><p> STI </p><p><b> CLD</b></p><p> MOV AH,0 ;初始化打印機</p><p> MOV DX,0<
81、;/p><p> INT 17H </p><p> MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV DX,0 ;顯示輸出</p><p> MOV AH,2</p
82、><p> INT 21H</p><p> PRINT INTR_MSG</p><p> PRINT PROMPT_MSG</p><p> GET_CHAR: MOV AH,1 ;鍵盤輸入字符</p><p> INT 21H&l
83、t;/p><p> CMP AL,0</p><p> JZ GET_CHAR</p><p> CMP AL,KEY_ESC ;是否位ESC</p><p> JZ PRINT_EXIT</p><p> MOV DL,AL
84、 ;打印一個字符</p><p> MOV AH,5</p><p> INT 21H</p><p> CMP AL,KEY_CR ;是否為回車</p><p> JNZ GET_CHAR</p><p> MOV DL,K
85、EY_LF ;換行</p><p> MOV AH,2 ;顯示換行</p><p> INT 21H </p><p> MOV AH,5 ;打印換行</p><p> INT 21H</p&g
86、t;<p> PRINT PROMPT_MSG ;打印標志</p><p> JMP GET_CHAR</p><p> print_EXIT:</p><p><b> RET</b></p><p> PRINTING ENDP</p><
87、p> ;----------------------------------------------------- 通訊</p><p> COM PROC NEAR</p><p> MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV AH,
88、09 ; 顯示信息</p><p> MOV DX,OFFSET COM_MESSAGE</p><p> INT 21H</p><p> MOV AH,0 ;初始化COM端口</p><p> MOV DX,1
89、 ;COM2</p><p> MOV AL,0C3H ;4800,n,1,8</p><p> INT 14H</p><p> AGAIN_COM: MOV AH,01 ;獲取鍵盤狀態(tài)</p><p>
90、; INT 16H</p><p> JZ NEXT_COM ;如果ZF=1,沒有按鍵</p><p> MOV AH,0 ;有按鍵,取之</p><p> INT 16H</p><p> CMP AL,1BH
91、 ;是否為ESC</p><p> JE EXIT_COM</p><p> MOV AH,1 ;向端口通信口寫字符</p><p> MOV DX,1</p><p> INT 14H</p><p
92、> NEXT_COM: MOV AH,3 ;取COM通信口狀態(tài)</p><p> MOV DX,1 ;DX=通信口號</p><p> INT 14H</p><p> AND AH,1 ;刪掉所
93、有字節(jié),除了D0</p><p> CMP AH,1 ;數(shù)據(jù)準備是否好</p><p> JNE AGAIN_COM ;沒有字符,跳到AGAIN_COM</p><p> MOV AH,2 ;是,從端口COM2通信口讀字符<
94、;/p><p> MOV DX,1</p><p> INT 14H</p><p> MOV DL,AL</p><p> MOV AH,2 ;輸出字符</p><p> INT 21H</p><
95、;p> JMP AGAIN_COM</p><p> EXIT_COM: RET</p><p><b> COM ENDP</b></p><p> ;----------------------------------------------------- 文件</p><p> FI
96、LE PROC NEAR</p><p> READ: MOV AX , DATA ;讀文件</p><p> MOV DS , AX</p><p> MOV DX , OFFSET FILE1</p><p> MOV AL , 0</p><p
97、> MOV AH , 3DH ;打開文件</p><p> INT 21H</p><p> JC ERROR_FIL ;若打開出錯,轉(zhuǎn)error</p><p> MOV HANDLE , AX ;保存文件代號</p><p> MOV BX ,
98、 AX</p><p> MOV CX , 255</p><p> MOV DX , OFFSET BUF1</p><p> MOV AH , 3FH ;從文件中讀255字節(jié)→buf</p><p> INT 21H</p><p> JC
99、 ERROR_FIL ;若讀出錯,轉(zhuǎn)error</p><p> MOV BX , AX ;實際讀到的字符數(shù)送入bx</p><p> MOV BUF1[BX] , '$' ;在文件結(jié)束處放置一“$”結(jié)束符</p><p> MOV BX , HANDLE</p&
100、gt;<p> MOV AH , 3EH ;關(guān)閉文件</p><p> INT 21H</p><p> MOV SI , -1</p><p> EXCHANGE: INC SI ;大寫轉(zhuǎn)小寫,并->BUF2</p><p> MOV
101、 AL ,BUF1[SI]</p><p> CMP AL, 'A'</p><p> JB chuan_FIL</p><p> CMP AL,'Z'</p><p> JG chuan_FIL</p><p> A
102、DD AL , 20H</p><p> MOV BUF1[SI], AL</p><p> chuan_FIL: MOV BH, BUF1[SI]</p><p> MOV BUF2[SI] ,BH ;把字符變?yōu)樾懞?,傳給BUF2</p><p> CMP bh ,&
103、#39;$' ;是否結(jié)束?</p><p> Jnz EXCHANGE</p><p> MOV DX , OFFSET BUF2 ;在屏幕顯示文件FILE1的內(nèi)容</p><p> MOV AH , 9</p><p> INT 21H</p&
104、gt;<p> WRITE: MOV DX , OFFSET FILE2 ;寫文件</p><p> MOV CX , 0</p><p> MOV AH , 3CH ;創(chuàng)建文件,若磁盤上原有此文件,則覆蓋</p><p> INT 21H</p><p&g
105、t; JC ERROR_FIL ;創(chuàng)建出錯,轉(zhuǎn)error處</p><p> MOV HANDLE , AX ;保存文件代號</p><p> MOV BX , AX</p><p> MOV CX , si</p><p> MOV DX , OFFSET
106、BUF2 ;向文件中寫入26個字節(jié)內(nèi)容</p><p> MOV AH , 40H</p><p> INT 21H </p><p> JC ERROR_FIL ;寫出錯,轉(zhuǎn)error處</p><p> MOV BX , HANDLE&l
107、t;/p><p> MOV AH , 3EH ;關(guān)閉文件</p><p> INT 21H</p><p> JC ERROR_FIL ;關(guān)閉文件出錯,轉(zhuǎn)error處</p><p> MOV DX , OFFSET finish_MSG</p><p
108、> MOV AH , 9</p><p> INT 21H ;操作成功后顯示提示</p><p> JMP EXIT_FIL</p><p> error_FIL:</p><p> MOV DX , OFFSET ERROR_MSG ;顯示錯
109、誤提示</p><p> MOV AH , 9</p><p> INT 21H</p><p> EXIT_FIL: RET</p><p> FILE ENDP</p><p> ;------------------------------------------------
110、-----</p><p> CODE ENDS</p><p> END START</p><p> ;-----------------------------------------------------</p><p> 六、程序執(zhí)行結(jié)果的屏幕拷貝</p><p><b>
111、 選擇界面:</b></p><p><b> 笑臉:</b></p><p><b> 飛鳥:</b></p><p><b> 隨機數(shù):</b></p><p><b> 通信:</b></p><p>&l
112、t;b> 打?。?lt;/b></p><p><b> 文件:</b></p><p><b> 七、設(shè)計分析:</b></p><p> 本次試驗的難點在于調(diào)用功能的實現(xiàn),即bios中斷調(diào)用的實現(xiàn)。我們還設(shè)計到了子程序的調(diào)用,本程序可以把所有的小的調(diào)用全寫成子程序,然后主程序中調(diào)用,跟那些高級語言一
113、樣。然而我已經(jīng)寫完,就不再改動了。</p><p><b> 八、設(shè)計總結(jié):</b></p><p> 本次試驗考查了我們綜合實驗的能力,bios調(diào)用是十分常見的,然而在做這個程序的時候,明顯感覺到自己還有很多欠缺的地方。我得許多程序全是查資料寫的,沒有說自己就可以編出來,說明自己還有待提高。這個程序使我加深了對于循環(huán)和分之的認識。</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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設(shè)計--用匯編語言實現(xiàn)顯示系統(tǒng)時間的程序
- 匯編語言動畫設(shè)計課程設(shè)計
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計 音樂點播程序
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計安排
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計報告a
- 匯編語言推箱子課程設(shè)計
- 匯編語言課程設(shè)計----電子鬧鐘
- 打字游戲-匯編語言課程設(shè)計
- 匯編語言程序設(shè)計-課程設(shè)計
- 匯編語言程序設(shè)計課程設(shè)計
- 微機原理與匯編語言課程設(shè)計
- 匯編語言課程設(shè)計磁盤文件管理
- 匯編語言課程設(shè)計_提取系統(tǒng)時間
- 匯編語言課程設(shè)計《定時顯示系統(tǒng)》
- 匯編語言課程設(shè)計報告---打字游戲
評論
0/150
提交評論