微機(jī)課程設(shè)計(jì)--磁盤無符號(hào)字節(jié)數(shù)據(jù)文件操作_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論