版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 微機(jī)原理及應(yīng)用課程設(shè)計(jì)</p><p> 學(xué)院: 信息電子學(xué)院 </p><p> 班級(jí):08電子信息工程(3)班 </p><p> 學(xué)號(hào): </p><p> 姓名: </p><p> 指導(dǎo)老師:
2、 </p><p> 日期: 2011/01/14 </p><p> 微機(jī)原理課程設(shè)計(jì)任務(wù)書</p><p><b> 一、設(shè)計(jì)題目 </b></p><p> 磁盤無符號(hào)字節(jié)數(shù)據(jù)文件(小于64KB)操作</p><p><b> 二、總則<
3、;/b></p><p> 1、在19周完成并提交設(shè)計(jì),通過演示和非抄襲確認(rèn)后所取得的成績?yōu)橛行С煽儭?lt;/p><p> 2、設(shè)計(jì)過程中嚴(yán)禁抄襲,否則將根據(jù)情節(jié)扣減成績直至取消成績。</p><p> 3、設(shè)計(jì)調(diào)試在EDA實(shí)驗(yàn)室(408)進(jìn)行,時(shí)間為19周周一至周五。</p><p><b> 三、設(shè)計(jì)內(nèi)容及要求<
4、;/b></p><p> 設(shè)計(jì)匯編語言程序,實(shí)現(xiàn)對(duì)數(shù)據(jù)文件的操作,具體要求如下:</p><p> 1、通過鍵盤輸入被操作的文件名,然后完成數(shù)據(jù)文件的排序(從大到小),通過鍵盤輸入排序后的新文件名,并顯示文件的長度(字節(jié)數(shù))、最大值和最小值。</p><p> 2、通過鍵盤輸入要搜索的關(guān)鍵字,對(duì)新文件進(jìn)行搜索,并顯示搜索結(jié)果。</p>&
5、lt;p> 3、根據(jù)需要可對(duì)搜索到的關(guān)鍵字進(jìn)行修改。</p><p><b> 四、設(shè)計(jì)報(bào)告要求</b></p><p> 1、設(shè)計(jì)思想描述及總體設(shè)計(jì)功能與結(jié)構(gòu)框圖</p><p><b> 2、程序流程框圖</b></p><p> 3、源程序(附程序及功能模塊注釋)。</p
6、><p><b> 目錄</b></p><p> 1、課程設(shè)計(jì)目的………………………………………………………………4</p><p> 2、課程設(shè)計(jì)工具及題目………………………………………………………5</p><p> 2.1、課程設(shè)計(jì)工具…………………………………………………...……5</p>
7、<p> 2.2、課程設(shè)計(jì)題目……………………………………………...…………5</p><p> 3、課程設(shè)計(jì)內(nèi)容及步驟………………………………………………………5</p><p> 3.1、課程設(shè)計(jì)內(nèi)容………………………………………………………..5</p><p> 3.2、課程設(shè)計(jì)步驟………………………………………………………..5<
8、/p><p> 4、課程設(shè)計(jì)程序(源代碼)…………………………………………………5</p><p> 4.1數(shù)據(jù)定義 ………………………………………………………………5</p><p> 4.2主函數(shù)…………………………………………………………………..7</p><p> 4.3創(chuàng)建文件子程序……………………………………………………….
9、10</p><p> 4.4顯示文件內(nèi)容子程序………………………………………………….11</p><p> 4.5顯示文件內(nèi)容長度子程序…………………………………………….12</p><p> 4.6修改文件保存子程序………………………………………………….13</p><p> 4.7排序子程序…………………………………………
10、………………….14</p><p> 4.8關(guān)鍵字搜索子程序…………………………………………………….14</p><p> 4.9替換關(guān)鍵字子程序…………………………………………………….16</p><p> 4.10打開讀取文件子程序………………………………………………...16</p><p> 5、課程設(shè)計(jì)成果………………
11、……………………………………………...18</p><p> 5.1創(chuàng)建文件……………………………………………………………….18</p><p> 5.2讀取文件……………………………………………………………….19</p><p> 5.3顯示文件內(nèi)容………………………………………………………….19</p><p> 5.4顯
12、示文件長度………………………………………………………….20</p><p> 5.5排序,輸出最大最小值……………………………………………….20</p><p> 5.6搜索關(guān)鍵字…………………………………………………………….20.</p><p> 5.7替換關(guān)鍵字…………………………………………………………….20</p><p&
13、gt; 5.8退出程序……………………………………………………………….21</p><p> 6、課程設(shè)計(jì)心得……………………………………………………………...22</p><p> 7、參考文獻(xiàn)…………………………………………………………………...22</p><p><b> 課程設(shè)計(jì)目的</b></p><
14、;p> 微機(jī)原理和接口技術(shù)是計(jì)算機(jī)及電子類專業(yè)重要的基礎(chǔ)專業(yè)課之一,它不但要求有較高的理論水平,而且還要求有較強(qiáng)的實(shí)際動(dòng)手能力。這次課程設(shè)計(jì)的主要目的是提高我們的實(shí)踐能力,包括提高匯編等語言的編程能力和分析能力。 </p><p> 課程設(shè)計(jì)能把課本中分布學(xué)習(xí)的知識(shí),在設(shè)計(jì)中綜合加以應(yīng)用,進(jìn)而得到鞏固、加深和發(fā)展。同時(shí),學(xué)習(xí)者通過學(xué)習(xí)查找、運(yùn)用設(shè)計(jì)資料,完成工程設(shè)計(jì)所必備的基本訓(xùn)練。 </p>
15、;<p> 通過課程設(shè)計(jì),能夠?qū)λ鶎W(xué)的知識(shí)有更進(jìn)一步的理解,并能掌握學(xué)習(xí)理論時(shí)沒有注意的細(xì)節(jié)。在實(shí)際設(shè)計(jì)工作中,只要有一個(gè)環(huán)節(jié)沒有做好,整個(gè)體系都不能正常運(yùn)行。調(diào)試程序、排除故障有助于提高分析問題、解決問題的能力。課程設(shè)計(jì)中碰到的挫折,有助于養(yǎng)成良好的學(xué)習(xí)習(xí)慣、嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)。</p><p> 長期以來,注重書本知識(shí),輕視實(shí)際動(dòng)手設(shè)計(jì)能力是教學(xué)中普遍存在的現(xiàn)象。進(jìn)行課程設(shè)計(jì)的目的就是要改變這種
16、狀況,使學(xué)習(xí)者既具有完備的理論知識(shí),也能夠解決在實(shí)際學(xué)習(xí)、生活工作中遇到的問題。學(xué)生應(yīng)該能夠把學(xué)到的理論知識(shí)用到實(shí)際中去,將知識(shí)轉(zhuǎn)變?yōu)閷?shí)際的生產(chǎn)力,同時(shí)通過這些理論知識(shí)和實(shí)際的應(yīng)用推動(dòng)理論和實(shí)踐的發(fā)展。多年實(shí)踐證明,課程設(shè)計(jì)是一個(gè)不可缺少的教學(xué)環(huán)節(jié),它對(duì)學(xué)生微機(jī)知識(shí)的掌握和微機(jī)應(yīng)用能力的提高是十分重要的。</p><p> 通過微機(jī)原理課程設(shè)計(jì),使學(xué)生能夠進(jìn)一步掌握微機(jī)的基本概念、原理和方法,掌握匯編語言,并能
17、夠正確地進(jìn)行基本的計(jì)算機(jī)設(shè)計(jì),編寫相關(guān)的軟件。使學(xué)生在完成本課程學(xué)習(xí)后,能夠進(jìn)行微機(jī)應(yīng)用方面的工作,并為其它課程奠定微機(jī)硬件基礎(chǔ)。</p><p><b> 課程設(shè)計(jì)工具及題目</b></p><p> 課程設(shè)計(jì)工具:PC機(jī)一臺(tái)</p><p> 課程設(shè)計(jì)題目:磁盤無符號(hào)字節(jié)數(shù)據(jù)文件(小于64KB)操作</p><p&
18、gt;<b> 課程設(shè)計(jì)內(nèi)容及步驟</b></p><p> 設(shè)計(jì)一匯編語言程序,實(shí)現(xiàn)對(duì)數(shù)據(jù)文件的操作,具體要求如下:</p><p> 1 通過鍵盤輸入被操作的文件名,然后完成數(shù)據(jù)文件的排序(從大到?。?,通過鍵盤輸入排序后的新文件名,并顯示文件的長度(字節(jié)數(shù))、最大值和最小值。</p><p> 2 通過鍵盤輸入要搜索的關(guān)鍵字,對(duì)
19、新文件進(jìn)行搜索,并顯示搜索結(jié)果。</p><p> 3 根據(jù)需要可對(duì)搜索到的關(guān)鍵字進(jìn)行修改。</p><p> 課程設(shè)計(jì)程序(源程序及功能模塊注釋)</p><p> ;********************數(shù)據(jù)段*******************************</p><p> DATA SEGMENT</p
20、><p> ;主菜單MainMenu </p><p> MANU1 DB 0AH,0AH,0DH,'*************MainMenu:************' </p><p> DB 0AH,0DH, '* 1. Create a new file. *'</p&
21、gt;<p> DB 0AH,0DH, '* 2. Read a file. *'</p><p> DB 0AH,0DH, '* 3. Exit. *'</p><p> DB 0AH,0DH, '********************
22、**************'</p><p> DB 0AH,0DH,'Please choose one operation:',0AH,0DH,'$'</p><p> ;子菜單SubMenu</p><p> MANU2 DB 0AH,0AH,0DH,'**********************
23、*****SubMenu:**************************' </p><p> DB 0AH,0DH, '* 1. Display the content of the file. *'</p><p> DB 0AH,0DH, '* 2
24、. Display the length of the content. *'</p><p> DB 0AH,0DH, '* 3. Sort order and display maximum and minimum. *'</p><p> DB 0AH,0DH, '* 4.
25、Search a keyword. *'</p><p> DB 0AH,0DH, '* 5. Change a keyword to another *'</p><p> DB 0AH,0DH, '*********
26、****************************************************'</p><p> DB 0AH,0DH,'Please choose one operation:',0AH,0DH,'$' </p><p> NAMEBUFF DB 50,?,50 DUP(?)
27、 ;輸入的磁盤文件路徑</p><p> DATABUFF DB 200 DUP(?) ;數(shù)據(jù)保存區(qū)</p><p> DATT DB 200,?,200 DUP(?) ;新文件輸入的內(nèi)容</p><p> INTRO DB 0DH
28、,0AH,'Entery path:$' ;輸入磁盤文件路徑</p><p> INTRONEW DB 0DH,0AH,'Entery new path:$' ;輸入新文件路徑</p><p> NEWNAME DB 50,?,50 DUP(?)
29、 ;輸入的新文件路徑</p><p> HANDLE DW ?</p><p> CHANGDU DB 0DH,0AH,'The length of the content is:$';輸出所指定文件的內(nèi)容長度</p><p> TEXTOLD DB 0DH,0AH,'The content is:' ,0D
30、H,0AH,'$' ;輸入文本內(nèi)容</p><p> TEXTNEW DB 0DH,0AH,'After order, the text is:',0DH,0AH,'$';輸出排序后的文本內(nèi)容</p><p> MAXMSG DB 0DH,0AH,'Maximum:$'
31、 ;輸出最大的字符</p><p> MINMSG DB 0DH,0AH,'Mininum:$' ;輸出最小的字符</p><p> KEYMSG DB 0DH,0AH,'Please input the key word :$' ;輸入要查找的關(guān)鍵字</p><p&
32、gt; CHANGEDMSG DB 0DH,0AH,'Please input the word you want to change:$';輸入想要改變的關(guān)鍵字符</p><p> CHANGETO DB 0DH,0AH,'Changed to:$' ;輸入改變后的關(guān)鍵字符</p><p> CHMSG
33、DB 0DH,0AH,'The changed word is :$' ;輸出改變后的內(nèi)容</p><p> FOUND DB 0DH,0AH,'The number of keyword is:$' ;輸出所要查找的關(guān)鍵字符的個(gè)數(shù)</p><p> INPUT DB 0DH,0AH,'Please input
34、 content:$' ;輸入新建文件的內(nèi)容</p><p> SAVE DB 0DH,0AH,'Saved to a new file?(Y/N)$' ;是否把所修改后的內(nèi)容保存為一個(gè)新的文件</p><p> MAXIMUM DB 0 ;用于保存最大關(guān)
35、鍵字</p><p> MINIMUM DB 0 ;用于保存最小關(guān)鍵字</p><p> keyword DB 0 ;用于保存要查找的關(guān)鍵字</p><p> COUNT1 DB 0
36、 ;要查找的關(guān)鍵字的個(gè)數(shù)</p><p> LENGTHTH DW 0 ;文件字符的總長度 </p><p> EMESS DB 'Error!$' ;表示操作出
37、現(xiàn)錯(cuò)誤</p><p> CRLF DB 0DH,0AH,'Ok!$' ;顯示一個(gè)回車</p><p><b> DATA ENDS</b></p><p> ;**********************代碼段**************************
38、***</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p><b> START: </b></p><p> MOV AX,DATA</p><p><b> MOV DS,AX</b><
39、;/p><p> ;*********************主函數(shù)*******************</p><p> MAINMENU: </p><p> LEA DX,MANU1 ;顯示主菜單</p><p> MOV AH,9 ;字符串輸出&l
40、t;/p><p> INT 21H </p><p> MOV AH,1 ;有回顯的單字符輸入</p><p><b> INT 21H</b></p><p> CMP AL,'1'
41、 ;選擇創(chuàng)建文件</p><p> JZ create </p><p> CMP AL,'2' ;選擇顯示文件</p><p> JZ read </p><p> CM
42、P AL,'3' ;選擇退出</p><p> JZ EXIT </p><p> JMP MAINMENU ;返回主菜單 </p><p><b> EXIT:
43、</b></p><p> MOV AH,4CH </p><p> INT 21H </p><p><b> create: </b></p><p> MOV DX,OFFSET INPUT </p>
44、<p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,DATT </p><p> MOV AH,0AH ;字符串輸入</p
45、><p><b> INT 21H</b></p><p> MOV CL,datt+1 </p><p><b> XOR CH,CH</b></p><p> MOV LENGTHTH,CX ;文件長度</p><
46、;p> CALL newfile ;調(diào)用新建文件子程序</p><p> JMP MAINMENU</p><p><b> read: </b></p><p> CALL open ;調(diào)用打開文件子程序</p><p&
47、gt;<b> read1:</b></p><p> MOV DX,OFFSET MANU2 ; 顯示子菜單</p><p><b> MOV AH,9 </b></p><p><b> INT 21H</b></p><p> MO
48、V AH,1 ;選擇子菜單</p><p><b> INT 21H</b></p><p> CMP AL,'1' </p><p> JZ display ;顯示文件內(nèi)容</p><p>
49、 CMP AL,'2' </p><p> JZ long ;顯示文件中字符的長度</p><p> CMP AL,'3' </p><p> JZ order ;排序,顯示最大值和最小值</p>
50、;<p> CMP AL,'4' </p><p> JZ SEARCH ;搜索關(guān)鍵字</p><p> CMP AL,'5' </p><p> JZ change ;修改關(guān)鍵字<
51、/p><p> JMP MAINMENU ;返回主菜單</p><p><b> EXITT: </b></p><p> MOV DX,OFFSET SAVE ;提示是否要保存修改的文件</p><p><b> MOV AH,9&
52、lt;/b></p><p><b> INT 21H</b></p><p> MOV AH,1 ;是否保存已修改的內(nèi)容</p><p><b> INT 21H</b></p><p> CMP AL,'Y'<
53、/p><p><b> JZ save22</b></p><p> JMP MAINMENU</p><p><b> save22:</b></p><p> CALL newfile1 ;調(diào)用修改文件保存子程序</p><p>
54、; JMP MAINMENU</p><p><b> display:</b></p><p> MOV DX,OFFSET TEXTOLD</p><p> MOV AH,09H</p><p><b> INT 21H </b></p><p> CALL
55、SHOW ;調(diào)用顯示文件內(nèi)容子程序</p><p> JMP read1 </p><p><b> long: </b></p><p> CALL showlength ;調(diào)用顯示文件字符長度子程序</p><p><
56、b> JMP read1</b></p><p><b> order: </b></p><p> CALL select ;調(diào)用文件內(nèi)容排序子程序</p><p> MOV DX,OFFSET TEXTNEW</p><p> MOV AH,09
57、H</p><p><b> INT 21H</b></p><p> CALL SHOW </p><p> MOV DX,OFFSET MAXMSG</p><p> MOV AH,09H</p><p><b> INT 21H&l
58、t;/b></p><p> MOV DL,MAXIMUM</p><p> MOV AH,02H</p><p> INT 21H </p><p> MOV DX,OFFSET MINMSG</p><p> MOV AH,09H</p>
59、<p><b> INT 21H</b></p><p> MOV DL,MINIMUM</p><p> MOV AH,02H</p><p><b> INT 21H</b></p><p><b> JMP EXITT</b></p>
60、<p><b> SEARCH: </b></p><p> CALL SEARCH1 ;調(diào)用查找關(guān)鍵字子程序</p><p> MOV DX,OFFSET FOUND</p><p> MOV AH,09H</p><p><b> INT
61、21H</b></p><p> MOV DL,COUNT1</p><p> MOV AH,02H</p><p><b> INT 21H</b></p><p> JMP read1 </p><p><b> change: </b></p
62、><p> CALL turn ;調(diào)用替換子程序</p><p> MOV DX,OFFSET CHMSG</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><p><b> CALL S
63、HOW</b></p><p><b> JMP EXITT</b></p><p><b> RET</b></p><p> ;*****************創(chuàng)建新文件子程序*********************</p><p> newfile proc</p
64、><p> MOV DX,OFFSET INTRONEW ;輸出"輸入新文件路徑"</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET NEWNAME ;輸入文件路徑<
65、;/p><p> MOV AH,0AH</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET CRLF </p><p> MOV AH,09H</p><p> INT 21H
66、 ;在路徑后面加0</p><p> MOV SI,OFFSET NEWNAME+1 </p><p> MOV BL,[SI] ;得到實(shí)際字節(jié)數(shù)</p><p><b> MOV BH,0</b></p><p> MOV b
67、yte ptr [NEWNAME+BX+2],0 ;建立文件</p><p> MOV DX,OFFSET NEWNAME+2</p><p><b> MOV CX,0</b></p><p> MOV AH,3CH</p><p><b> INT 21H</b></p&g
68、t;<p> MOV SI,OFFSET HANDLE</p><p> MOV [SI],AX ;保存文件代號(hào)</p><p> JC error2 </p><p> ;**********往文件寫內(nèi)容***********</p&g
69、t;<p> MOV BX,[SI] ;文件代號(hào)</p><p> LEA DX,datt+2</p><p> MOV CX,LENGTHTH </p><p> MOV AH,40H</p><p><b> INT 21H</b></p&
70、gt;<p> JC error2 </p><p> ;************關(guān)閉文件**********</p><p><b> exit2:</b></p><p> MOV SI,OFFSET HANDLE</p><p>
71、MOV BX,[SI]</p><p> MOV AH,3EH</p><p><b> INT 21H</b></p><p><b> JC error2</b></p><p><b> RET</b></p><p><b>
72、 error2:</b></p><p> MOV DX,OFFSET EMESS ;出錯(cuò)</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><p><b> RET</b></p><
73、p> newfile ENDP</p><p> ;******************顯示文件內(nèi)容子程序************************</p><p><b> SHOW proc</b></p><p> MOV CX,LENGTHTH</p><p> MOV BX,OFFSET
74、DATABUFF</p><p><b> newchar: </b></p><p><b> MOV AH,2</b></p><p> MOV DL,[BX]</p><p> cmp DL,1AH ;進(jìn)行逐字顯示</p><
75、;p> JE exitshow</p><p><b> INT 21H</b></p><p><b> INC BX</b></p><p> loop newchar</p><p><b> exitshow:</b></p><p&
76、gt;<b> RET</b></p><p><b> SHOW ENDP</b></p><p> ;****************顯示文件內(nèi)容長度子程序*******************</p><p> showlength proc</p><p> MOV DX,OFFS
77、ET CHANGDU</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><p> MOV DX,LENGTHTH</p><p><b> MOV CL,4</b></p><p> SHR DL,CL
78、 ;高低互換</p><p><b> CMP DL,9</b></p><p><b> JBE LP</b></p><p> ADD DL,7 ;a-f的轉(zhuǎn)換</p><p><b> LP:</b>
79、;</p><p> ADD DL,30H ;得到ASCII碼</p><p><b> MOV AH,6</b></p><p><b> INT 21H</b></p><p> MOV DX,LENGTHTH</p><p&g
80、t; AND DL,0FH ;取低位</p><p><b> CMP DL,9</b></p><p><b> JBE LPP</b></p><p> ADD DL,7 ;a-f的轉(zhuǎn)換</p><p>&l
81、t;b> LPP: </b></p><p> ADD DL,30H</p><p><b> MOV AH,6</b></p><p><b> INT 21H</b></p><p> MOV DL,'H'
82、;加入H表示十六進(jìn)制</p><p><b> MOV AH,6</b></p><p><b> INT 21H</b></p><p><b> RET</b></p><p> showlength ENDP</p><p> ;****
83、**********修改文件保存子程序***********************</p><p> newfile1 proc</p><p> MOV DX,OFFSET INTRONEW</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><
84、;p> MOV DX,OFFSET NEWNAME ;輸入文件路徑</p><p> MOV AH,0AH</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET CRLF ;回車換行</p><p> MOV AH,09
85、H</p><p><b> INT 21H</b></p><p> ;************在路徑后面加0**********</p><p> MOV SI,OFFSET NEWNAME+1 </p><p> MOV BL,[SI] ;得到實(shí)
86、際字節(jié)數(shù)</p><p><b> MOV BH,0</b></p><p> MOV BYTE ptr [NEWNAME+BX+2],0</p><p> ;*************建立文件**************</p><p> MOV DX,OFFSET NEWNAME+2</p>&
87、lt;p><b> MOV CX,0</b></p><p> MOV AH,3CH</p><p><b> INT 21H</b></p><p> MOV SI,OFFSET HANDLE</p><p> MOV [SI],AX ;保存
88、文件代號(hào)</p><p> JC errort2</p><p> ;***********往文件寫內(nèi)容*************</p><p> MOV SI,OFFSET HANDLE</p><p> MOV BX,[SI] ;文件代號(hào)</p><p> LEA
89、 DX,DATABUFF</p><p> MOV CX,LENGTHTH </p><p> MOV AH,40H</p><p><b> INT 21H</b></p><p> JC errort2</p><p> ;*************關(guān)閉文件**********
90、**</p><p><b> exitt2:</b></p><p> MOV SI,OFFSET HANDLE</p><p> MOV BX,[SI]</p><p> MOV AH,3EH</p><p><b> INT 21H</b></p>
91、<p> JC errort2</p><p><b> RET</b></p><p><b> errort2:</b></p><p> MOV DX,OFFSET EMESS ;出錯(cuò)</p><p> MOV AH,09H</p>
92、<p><b> INT 21H</b></p><p><b> RET</b></p><p> newfile1 endp</p><p> ;****************排序子程序*********************</p><p> select proc&
93、lt;/p><p> LEA DI,DATABUFF ;di指向要排序的字符的首地址</p><p> MOV CX,LENGTHTH ;bl外循環(huán)次數(shù)</p><p><b> MOV BL,CL</b></p><p><b> pai
94、1: </b></p><p> MOV SI,DI ;si指向當(dāng)前要比較的字符</p><p> MOV CL,BL ;cl內(nèi)循環(huán)次數(shù)</p><p><b> pai2:</b></p><p> MOV
95、AL,[SI] ;取一個(gè)字符</p><p> INC SI ;指向下一字符</p><p> CMP AL,[SI] ;前一字符與下一字符比較</p><p> JNC pai3
96、 ;若大于則不交換</p><p> MOV DL,[SI] ;若小于則前后兩字符交換</p><p> MOV [SI-1],dl </p><p> MOV [SI],al</p><p><b> pai3:</b></p><p>
97、 DEC CL ;內(nèi)循環(huán)是否結(jié)束</p><p> JNZ pai2 ;未結(jié)束則繼續(xù)</p><p> DEC BL ;外循環(huán)是否結(jié)束</p><p> JNZ pai1
98、 ;未結(jié)束則繼續(xù)</p><p> LEA SI,DATABUFF</p><p> MOV AL,BYTE ptr[SI]</p><p> MOV MAXIMUM,AL</p><p> LEA SI,DATABUFF</p><p> MOV BX,LENGTHTH</p><
99、;p><b> DEC BX</b></p><p> MOV AL,BYTE ptr[SI+BX]</p><p> MOV MINIMUM,AL </p><p><b> RET</b></p><p> select endp</p><p> ;*
100、*******************關(guān)鍵字搜索子程序***********************</p><p> SEARCH1 PROC</p><p> MOV DX,OFFSET KEYMSG</p><p><b> MOV AH,9</b></p><p><b> INT 21H<
101、;/b></p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p><b> XOR BX,BX</b></p><p> LEA SI,DATABUFF</p><p> MO
102、V CX,LENGTHTH</p><p><b> SCH: </b></p><p> CMP AL,[SI]</p><p><b> JZ ADD2</b></p><p><b> NET: </b></p><p><b>
103、 INC SI</b></p><p><b> LOOP SCH</b></p><p><b> JMP NEXT2</b></p><p><b> ADD2: </b></p><p><b> INC BX</b></
104、p><p><b> JMP NET</b></p><p><b> NEXT2: </b></p><p> MOV COUNT1,BL</p><p><b> MOV DL,BL</b></p><p><b> MOV CL
105、,4</b></p><p> SHR DL,CL ;高低互換</p><p><b> CMP DL,9</b></p><p><b> JBE LP2</b></p><p> ADD DL,7
106、 ;a-f的轉(zhuǎn)換</p><p><b> LP2: </b></p><p> ADD DL,30H ;得到ASCII</p><p><b> SHL DL,CL</b></p><p> MOV COUNT1,DL</p><
107、;p><b> MOV DL,BL</b></p><p> AND DL,0FH ;取低位</p><p><b> CMP DL,9</b></p><p><b> JBE LP3</b></p><p> ADD D
108、L,7 ;a-f的轉(zhuǎn)換</p><p><b> LP3: </b></p><p> ADD DL,30H</p><p> OR COUNT1,DL ;加入H表示十六進(jìn)制,轉(zhuǎn)換為ASCII碼</p><p><b> RE
109、T </b></p><p> SEARCH1 ENDP</p><p> ;*****************替換關(guān)鍵字子程序**********************</p><p><b> turn proc</b></p><p> MOV DX,OFFSET CHANGEDMSG<
110、/p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p><b
111、> MOV BL,AL</b></p><p> MOV DX,OFFSET CHANGETO</p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p><b> MOV AH,1</b>&
112、lt;/p><p><b> INT 21H</b></p><p> LEA SI,DATABUFF</p><p> MOV CX,LENGTHTH</p><p><b> sch1: </b></p><p> cmp BL,[SI]
113、 ;與放在bl中的字符比較</p><p> JZ add11 ;找到則替換</p><p><b> net1: </b></p><p><b> INC SI</b></p><p> LOOP sch1
114、 ;繼續(xù)尋找</p><p><b> JMP net21</b></p><p><b> add11: </b></p><p> MOV [SI],AL ;替換</p><p><b> JMP net1</b>
115、</p><p><b> net21: </b></p><p><b> RET</b></p><p><b> turn ENDP</b></p><p> ;****************打開讀取文件子程序*********************<
116、/p><p><b> open PROC</b></p><p> openfile: </p><p> MOV DX,OFFSET INTRO</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><
117、p> ;*********讀文件路徑名******************</p><p> MOV DX,OFFSET NAMEBUFF</p><p> MOV AH, 0AH</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET CRLF</p>
118、<p> MOV AH,09H</p><p><b> INT 21H</b></p><p> ;*********將緩沖區(qū)路徑名后面加0********************</p><p> MOV SI,OFFSET NAMEBUFF+1 ;得到實(shí)際字節(jié)數(shù)</p><p>
119、; MOV BL,[SI]</p><p><b> MOV BH,0</b></p><p> MOV BYTE ptr [NAMEBUFF+BX+2], 0</p><p> ;*********打開文件**********</p><p><b> MOV AL,0</b></
120、p><p> MOV DX, OFFSET NAMEBUFF+2 </p><p> MOV AH,3DH</p><p><b> INT 21H</b></p><p><b> MOV BX,AX</b></p><p> MOV HANDLE,AX
121、 ;保存文件號(hào)</p><p><b> JC error1</b></p><p> ;**********讀取文件****************</p><p><b> newbuff: </b></p><p> MOV CX,200
122、 ;一次讀入的字符數(shù)</p><p> MOV DX,OFFSET DATABUFF</p><p> MOV AH,3FH</p><p><b> INT 21H</b></p><p> MOV LENGTHTH,AX </p><p><b> J
123、C error1</b></p><p><b> exit1:</b></p><p> MOV SI,OFFSET HANDLE</p><p> MOV BX,[si]</p><p> MOV AH,3EH</p><p><b> INT 21H</
124、b></p><p><b> JC error1</b></p><p> RET ;返回主程序</p><p><b> error1:</b></p><p> MOV DX,OFFSET EMESS</p><
125、p> MOV AH,09H</p><p><b> INT 21H</b></p><p><b> RET</b></p><p><b> open ENDP</b></p><p><b> CODE ENDS</b></p&
126、gt;<p> END START </p><p><b> 課程設(shè)計(jì)成果</b></p><p><b> 1、創(chuàng)建文件</b></p><p> F盤下有新建的1.txt文件</p><p> 1.txt中的內(nèi)容如下</p><p><b&
127、gt; 2、讀取文件</b></p><p><b> 3、顯示文件內(nèi)容</b></p><p><b> 4、顯示文件長度</b></p><p> 5、排序,輸出最大最小值</p><p><b> 6、搜索關(guān)鍵字</b></p><
128、;p><b> 7、替換關(guān)鍵字</b></p><p><b> 8、退出程序</b></p><p><b> 課程設(shè)計(jì)心得</b></p><p> 通過此次實(shí)驗(yàn),進(jìn)一步了掌握微機(jī)的基本概念、原理和方法,掌握匯編語言,并能夠正確地進(jìn)行基本的計(jì)算機(jī)設(shè)計(jì),編寫相關(guān)的軟件,在完成本課程學(xué)習(xí)
129、后,能夠進(jìn)行微機(jī)應(yīng)用方面的工作,并為其它課程奠定微機(jī)硬件基礎(chǔ)。</p><p> 一開始碰到了很多的問題,調(diào)用DOC的很多功能不是很熟,后來慢慢地熟悉起來了。對(duì)于各種操作可以用子程序來完成。這樣程序就顯得很有結(jié)構(gòu)??梢苑植絹碚{(diào)試他的正確性和實(shí)用性。當(dāng)框架基本上理好以后就簡單多了,然后分步一個(gè)程序一個(gè)程序地解決掉。最后就是完善各個(gè)程序,組裝在一起。然后合成了最終的程序。不過還是有點(diǎn)小問題。變量問題,用了集成環(huán)境就
130、覺得還好了??梢圆槌霾簧俚腻e(cuò)誤。最終還是順利的完成了所有的功能。對(duì)于界面,控制臺(tái)下只能是黑屏,所以只能加一些符號(hào)來襯托一下。</p><p> 此次微機(jī)課程設(shè)計(jì),使我對(duì)主程序和子程序的連接、調(diào)用,有了一個(gè)更加深入的了解,以及根據(jù)不同的要求,在不同程度上對(duì)程序進(jìn)行改動(dòng),以便實(shí)現(xiàn)不同的效果。此次課程設(shè)計(jì)有了收獲很多,可能回家心切,也很有動(dòng)力。本來想做音樂的,但是自己音樂細(xì)胞不夠加上C語言的額文件操作很熟悉了已經(jīng),就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤文件操作
- 微機(jī)原理課程設(shè)計(jì)——txt文件的讀操作
- 數(shù)據(jù)文件.rar
- 數(shù)據(jù)文件.rar
- 數(shù)據(jù)文件.rar
- 匯編語言課程設(shè)計(jì)磁盤文件管理
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度報(bào)告
- 數(shù)據(jù)文件.rar
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)磁盤調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--磁盤調(diào)度算法實(shí)踐
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)-磁盤調(diào)度模擬法
- cscan磁盤調(diào)度算法---操作系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)---操作系統(tǒng)課程設(shè)計(jì)之linux磁盤空間管理
- 磁盤調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告----磁盤管理模塊告
評(píng)論
0/150
提交評(píng)論