匯編語(yǔ)言課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)學(xué)號(hào):課程設(shè)計(jì)文本方式下字處理程序的設(shè)計(jì)與題目實(shí)現(xiàn)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)計(jì)算機(jī)班2 / 37姓名指導(dǎo)教師2012年1月3日匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)3 / 37目錄1 .問(wèn)題描述錯(cuò)誤!未指定書(shū)簽。L1問(wèn)題描述錯(cuò)誤!未指定書(shū)簽。L2主要任務(wù)錯(cuò)誤!未指定書(shū)簽。1.3測(cè)試數(shù)據(jù)錯(cuò)誤!未指定書(shū)簽。2設(shè)計(jì)中使用的關(guān)鍵技術(shù)和方法錯(cuò)誤!未指定書(shū)簽。2.1 使用的關(guān)鍵技術(shù)錯(cuò)誤!未指定書(shū)簽。2.2 調(diào)試環(huán)境錯(cuò)誤!未指定書(shū)簽。錯(cuò)誤!未指定書(shū)簽。錯(cuò)誤!未指定書(shū)簽。3.設(shè)計(jì)方案說(shuō)明1 .1模塊層次圖及模塊說(shuō)名1.1.1 模塊

2、層次圖錯(cuò)誤!未指定書(shū)簽。1.1.2 模塊說(shuō)明錯(cuò)誤!未指定書(shū)簽。2 .2算法描述錯(cuò)誤!未指定書(shū)簽。3 .3數(shù)據(jù)結(jié)構(gòu)說(shuō)明錯(cuò)誤!未指定書(shū)簽。4 .4程序界面的描述錯(cuò)誤!未指定書(shū)簽。3. 5程序功能的概述.4.測(cè)試及評(píng)估4.1 調(diào)試中的問(wèn)題.4. 2主要功能的調(diào)試.5.設(shè)計(jì)心得5.1 感受和體會(huì)5. 2對(duì)程序改進(jìn)的想法.錯(cuò)誤!未指定書(shū)簽。 錯(cuò)誤!未指定書(shū)簽。 . .錯(cuò)誤!未指定書(shū)簽。 .錯(cuò)誤!未指定書(shū)簽。 錯(cuò)誤!未指定書(shū)簽。 .錯(cuò)誤!未指定書(shū)簽。 -錯(cuò)誤!未指定書(shū)簽。 錯(cuò)誤!未指定書(shū)簽。6. 附錄源程序本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表錯(cuò)誤!未指定書(shū)簽。匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)

3、任務(wù)書(shū)學(xué)生姓名:專(zhuān)業(yè)班級(jí):計(jì)算機(jī)班指導(dǎo)教師:工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院題目:文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)初始條件:理論:完成了匯編語(yǔ)言程序設(shè)計(jì)課程,對(duì)微機(jī)系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語(yǔ)言程序設(shè)計(jì)的基本方法和技巧。實(shí)踐:完成了匯編語(yǔ)言程序設(shè)計(jì)的4個(gè)實(shí)驗(yàn),熟悉了匯編語(yǔ)言程序的設(shè)計(jì)環(huán)境并掌握了匯編語(yǔ)言程序的調(diào)試方法。要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)理解鍵盤(pán)接口的工作原理,掌握BIOS鍵盤(pán)I/O功能,掌握復(fù)雜內(nèi)存數(shù)據(jù)結(jié)構(gòu)的定義和管理方法。具體的設(shè)計(jì)任務(wù)及要求:1)清晰且易于操作的用戶(hù)界而;動(dòng)態(tài)顯示光標(biāo)的當(dāng)前位置:2)在

4、文本編輯區(qū)接受并保存輸入信息:3)光標(biāo)上移,下移,左移,右移;4)允許刪除當(dāng)前光標(biāo)后的字符;將編輯文本存盤(pán),讀出并顯示硬盤(pán)中的指定文件。(任選)在完成設(shè)計(jì)任務(wù)后,按要求撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū):對(duì)課程設(shè)計(jì)說(shuō)明書(shū)的具體要求請(qǐng)見(jiàn)課程設(shè)計(jì)指導(dǎo)書(shū)。閱讀資料:1)IBMPC匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程3.3節(jié)2)IBMPC匯編語(yǔ)言程序設(shè)計(jì)(第2版)9.1節(jié)時(shí)間安排:設(shè)計(jì)安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計(jì)。周3、周4:完成程序調(diào)試,和驗(yàn)收。周5:撰寫(xiě)課程設(shè)計(jì)報(bào)告。指導(dǎo)教師簽名:2012年1月3日系主任(或責(zé)任教師)簽名:2012年1月3日課程設(shè)計(jì)報(bào)告書(shū)1 .問(wèn)題描述1.1 問(wèn)題描述理解鍵盤(pán)接口的工作原理,掌握

5、BIOS鍵盤(pán)I/O功能,掌握復(fù)雜內(nèi)存數(shù)據(jù)結(jié)構(gòu)的定義和管理方法;用匯編語(yǔ)言設(shè)計(jì)一個(gè)簡(jiǎn)單的文本編輯軟件。1.2 主要任務(wù)具體的設(shè)計(jì)任務(wù)及要求:(1) .清晰且易于操作的用戶(hù)界面;動(dòng)態(tài)顯示光標(biāo)的當(dāng)前位置;(2) .在文本編輯區(qū)接受并保存輸入信息;(3) .光標(biāo)上移,下移,左移,右移;(4) .允許刪除當(dāng)前光標(biāo)后的字符;(5) .將編輯文本存盤(pán),讀出并顯示硬盤(pán)中的指定文件。1.3 測(cè)試數(shù)據(jù)編寫(xiě)好源代碼后,進(jìn)行調(diào)試,主要調(diào)試數(shù)據(jù)有:新建一個(gè)文本,輸入適當(dāng)?shù)膬?nèi)容,保存;打開(kāi)一個(gè)已經(jīng)保存的文件。2設(shè)計(jì)中使用的關(guān)鍵技術(shù)和方法2.1 使用的關(guān)鍵技術(shù)編程中主要使用的匯編技術(shù)有:(1) .匯編語(yǔ)言的中的各種尋址(2

6、) .存儲(chǔ)等命令及BIOS中斷和DOS中斷調(diào)用(3) .窗口的建立(4) .功能鍵的定義(5) .子程序的調(diào)用等。2. 2調(diào)試環(huán)境主要用到的調(diào)試工具有:windos環(huán)境下的DOS、MASM匯編器、LINK鏈接軟件、DEBUG軟件。9 / 373.1.2模塊說(shuō)明子程序和宏簡(jiǎn)要說(shuō)明:子程序名功能說(shuō)明mainprocfar主程序windowprocnear創(chuàng)建一個(gè)編輯窗口editprocnear編輯輸入的字符nienu_showprocnear顯示菜單,定義各一、級(jí)二菜單newprocnear新建文件openprocnear打開(kāi)文件saveprocnear保存文件saveasprocnear文件另存

7、為fuc_keyprocnear定義各功能鍵子程序win3procnear顯示系統(tǒng)當(dāng)前日期savedisplayprocnear保存輸入的文本fontprocnear提取系統(tǒng)當(dāng)前時(shí)間4 / 37匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)win4procnear顯示行列setcolorprocnear設(shè)置編輯區(qū)的背景顏色commandprocnear顯示功能菜單commandhelpprocnear顯示幫助信息quittprocnear退出前處理程序宏名宏功能說(shuō)明read_chrmacro讀取字符宏定義,返回的字符碼,ah二掃描碼stringmacropl顯示字符串信息winmacroo

8、prl,opr2,opr3,opr4,opr5,opr6建立窗口,al=oprl上卷行數(shù)、bh=opr2卷入行屬性、ch=opr3左上角行號(hào)、cl=opr4左上角列號(hào)、dh=opr5右下角行號(hào)、dl=opr6左下角列號(hào)pos_cursemacroop1,op2,op3設(shè)置光標(biāo)位置,bh=opl頁(yè)號(hào)、dh=op2行、dl=op3列pos_getmacro讀取光標(biāo)位置,瓶=頁(yè)號(hào)3. 2算法描述本次程序流程圖如下9 / 373.3數(shù)據(jù)結(jié)構(gòu)說(shuō)明本程序數(shù)據(jù)結(jié)構(gòu)主要為數(shù)據(jù)段程序數(shù)據(jù)段:datasegmentdatasegment;定義數(shù)據(jù)段flagdw?color_1db19dup(M)JWhite_to

9、_Black13,10,$color_2db19dup(,r):White.to_Red;l3,10,$color_3db19dup(M)/White_to_Blue13,10,$menudbTileOptionsHelpS,messdb'F1-FileF2-OptionsF10-helpEsc-quit','$'manualdb*Newl3,10,'$'manu_2db,Open13,10,'$'manu_3db,Savel3,10,'$'manu_4dbfSaveas13,10,'$'manu_

10、5db,Exit7$,manu_6db1Odup(H)/Colorl3,10,'$'manu_8db21dup("),'Command',13,10/$,manu_9db21dup(H);About;13/0,'$'handledw?mess1db,Pleaseinputafilename:,$,mess2db,Pleaseinputasavingfilename:V$,mess3db,Pleaseinputanopenfilename:,$,mess4db'Thefilehasnotsaved!Saveitnow?(Y/N):

11、V$,pathdb50dup(0)/$,bufferdb2000dup(?)bakdb3850dup(0)linedb?rowdb?chardb?help_masOdb,AboutThisEditor$,helpmas1db'*$'幫助內(nèi)容help_mas2db,*Thanksforusingthiseditor!*$,help_mas3db,*help_mas4db1*MS-DOSEditor*$,help_mas5db,*CopyrightPowerbyPP2012.1*$'helpmas6db'*$'$'com_messOdb,EditCo

12、mmands$,commessldb*com_mess2db,Home-Movetothestartofthecurrentline.5,com_mess3db,End-Movetotheendofthecurrentline.$,com_mess4db,Delete-Deletethecharacterthatthecursorison.S,com_messSdbBackspace-Deletethecharactertotheleftofthecursor.S1commess6db,Ctrl+Up-Scrolkiponeline.5,com_mess7db,Ctrl+down-Scroll

13、downoneline.5,com_mess8db,Ctrl+Left-Moveleftoneword.$,com_mess9db,Ctrl+right-Moverightoneword.$,com_mess1Odbnter-Startanewline.S*com_mess11dbTab-Movethecursortonexttabstop.S1datedb'DATE:0000/00/00S'ffl日期hangliedb'Lin:000/Com:000$'行列timedbTIME:00:00:00$'調(diào)用時(shí)間dataends3 .4程序界面的描述主程序界

14、面:4 .5程序功能的概述本程序主要為模擬記事本功能,參考教材8,9,10,11章和實(shí)驗(yàn)教程3.3節(jié)。該編輯程序要求具備的功能:清晰且易于操作的用戶(hù)界面,在出現(xiàn)的界面,中輸入任意文本內(nèi)容,利用DEL鍵、BACKSPACE鍵、HOME鍵、END鍵、上下左右光標(biāo)鍵對(duì)文本進(jìn)行全屏幕編輯。按F1鍵激活菜單FILE,下移光標(biāo),選擇SAVE,輸入文件名,文本的存盤(pán)。按F10激活幫助,按ESC鍵退出幫助??梢赃x擇FILE菜單的其他菜單項(xiàng),完成打開(kāi)文件,文字的插入、刪除、修改文本行、列號(hào)的動(dòng)態(tài)顯示等功能。主要使用說(shuō)明:進(jìn)入主界面,在編輯區(qū)輸入任意的內(nèi)容,而后按下F1進(jìn)行功能選擇,主要選擇功能有:new、ope

15、n、save%saveas%exit;new表示新建一個(gè)文本,open可以打開(kāi)硬盤(pán)上的一個(gè)已經(jīng)保存的文件,讀取該文件,并將內(nèi)容顯示在文本編輯區(qū)內(nèi),save可以保存當(dāng)前文件,選擇后需輸入文件名字,文件可以是絕對(duì)和相對(duì)路勁,若在文件名字中不輸入文件的路徑,則默認(rèn)將文件保存在和程序同一目錄下,saveas功能和save差不多,exit退出編輯,若文件還未保存,則提示是否保存,若選擇是,則輸入相關(guān)文件名進(jìn)行保存,若選擇否,則不保存文件退出。按下F2后,進(jìn)入。ptions功能選項(xiàng),主要功能為改變編輯區(qū)的背景顏色,選擇相關(guān)的功能:White_to_Black可是文本背景顏色變成黑色;Whiteo_Red可

16、是文本背景顏色變成紅色;Whiteo_Blue可是文本背景顏色變成藍(lán)色。按下F10后進(jìn)入此文本編輯器說(shuō)明,其中command主要是本文本編輯器使用說(shuō)明,about主要為本文本編輯器作者信息說(shuō)明。5 .測(cè)試及評(píng)估5.1 調(diào)試中的問(wèn)題經(jīng)過(guò)對(duì)匯編語(yǔ)言的鍵盤(pán)輸入、文件保存、文件打開(kāi)、編輯窗口的建立、窗口顏色設(shè)置等相關(guān)知識(shí)的研究后,即進(jìn)行程序的設(shè)計(jì)和編碼;將原程序編好后,經(jīng)過(guò)匯編,有如下兒個(gè)問(wèn)題:最開(kāi)始在屬性欄現(xiàn)實(shí)編輯器的功能選項(xiàng)時(shí),功能菜單不能和相關(guān)功能名字很好的對(duì)其,即功能名字和功能菜單顯示的坐標(biāo)不相對(duì)應(yīng),經(jīng)過(guò)仔細(xì)研究分析,最終通過(guò)控制菜單顯示的位置控制宏pos.curse,通過(guò)控制菜單顯示的頁(yè)號(hào)、

17、行號(hào)、列號(hào)以及標(biāo)記菜單區(qū)大小的winmacrooprl,opr2,opr3,opr4,opr5,opr6,通過(guò)控制菜單區(qū)開(kāi)始的位置和結(jié)束位置。控制其顯示大小,二者結(jié)合控制,最終將菜單顯示和功能名稱(chēng)顯示對(duì)齊。在激活某個(gè)功能菜單時(shí),還未按下enter進(jìn)行真正的選擇時(shí),該功能應(yīng)該用不同的樣式標(biāo)記,本程序采用的是激活時(shí)為黑底黃字,但是由于程序的疏忽和未考慮完善,在激活該功能時(shí)其他功能菜單不見(jiàn)了,經(jīng)過(guò)分析,由于程序在激活某個(gè)功能時(shí)未將其他功能也顯示出來(lái),如:winO,06h,4,1,4,7pos_curseO,4,0匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)11 / 37選擇相關(guān)的功能:Whit

18、e.to_Black可是文本背景顏色變成黑色;White_to_Red可是文本背景顏色變成紅色;White_to_Bkie可是文本背景顏色變成藍(lán)色。選擇Help共能后,即按下F10后的界面:選擇help的Commond界面:*MS-DOSEditor* Copyright: Pov/erby PP 2012.1 *12 / 37Fl-FileF2-0ptionsFID-helpEsc-quitLin:091/Coms000運(yùn)行生成的ppeditor.exe文件,進(jìn)入上述的主界面;在其中輸入:HelloWorld!而后點(diǎn)擊保存,輸入名字:test.txt,將上述內(nèi)容保存在當(dāng)前文件夾下面,主要操作

19、圖:國(guó)名令提樂(lè)符-ppeditor口!回"與FileOptionsHeIpDATE:2012/01/02NewId?OpenSaueSaueasExit一匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)在當(dāng)前文件夾下有test.txt文件擔(dān)織 鼻打開(kāi) 打印新應(yīng)件先臟 Da籟名程修改E期型大小下我.temp2012/1/2 23:33文件夾工融尸 link.exe2011/10/19 17:43應(yīng)用程后39 K出層近訪(fǎng)問(wèn)的位目EZ masm.EXE2011/9/30 12:52城®?101 K1 ppcditor.osm2012/1/2 2LL7ASM文件27 KC庫(kù)記 P

20、PEDnOR.EXE2012/1/2 21:20述胡12 M叫宕風(fēng)衫Witi 1 PPED1TOR.OBJ2012/1/2 2L20OBJ文件8 KQ TEST.TXT2012/1/2 23:34文本文檔2K打開(kāi)15 / 37test.txt文件,內(nèi)容如下:|7ESI.TXT-3$區(qū)文償也輻格式(O)查石IV)幫助(H)HelloWorldl-可見(jiàn)保存的內(nèi)容與程序輸入內(nèi)容一樣!在當(dāng)前目錄下新建一個(gè)test2.txt文件,內(nèi)容為:WelcomeToComputerScienceAndTechnologyOfWHUT!,用其打開(kāi):可見(jiàn)打開(kāi)的文件與test2.txt文件內(nèi)容一樣!修改上述打開(kāi)的文件內(nèi)

21、容為:WelcomeToConiputerScienceOfWHUT!,然后保存,結(jié)果為:可見(jiàn)保存后的文件內(nèi)容與文本編輯區(qū)內(nèi)容不太一樣,這也是程序存在的問(wèn)題之一!6 .設(shè)計(jì)心得包括設(shè)計(jì)中遇到的問(wèn)題及思考,對(duì)該程序進(jìn)一步改進(jìn)擴(kuò)展的設(shè)想。5.1感受和體會(huì)IBMPC匯編語(yǔ)言程序設(shè)計(jì)這門(mén)課程是計(jì)算機(jī)專(zhuān)業(yè)一門(mén)基礎(chǔ)性學(xué)科,重要性可見(jiàn)一斑,學(xué)好這門(mén)課程對(duì)以后學(xué)習(xí)具有深遠(yuǎn)的影響。而課程設(shè)計(jì)便是對(duì)學(xué)習(xí)效果的檢驗(yàn)。課程設(shè)計(jì)不僅可以鍛煉我們獨(dú)立思考問(wèn)題、解決問(wèn)題的能力,而且可以培養(yǎng)我們的整體性思維的能力;通過(guò)課程設(shè)計(jì),使我了解了很多匯編語(yǔ)言應(yīng)用的知識(shí),比如:鍵盤(pán)輸入、中斷處理程序B0ISINT16H和INT21H、

22、文件打開(kāi)與保存等。雖然一開(kāi)始對(duì)于此次課設(shè)的題目一頭霧水,不知從何下手,但是最后通過(guò)查閱課本相關(guān)內(nèi)容和實(shí)驗(yàn)手冊(cè)的相關(guān)內(nèi)容,最后漸漸明白;鍵盤(pán)輸入程序的實(shí)現(xiàn)依賴(lài)于PC機(jī)中對(duì)鍵盤(pán)盤(pán)管理的中斷機(jī)構(gòu)和8255可編程控制外圍接口芯片,在8255芯片中有兩個(gè)端口PA(60H)和PB(61H),在這個(gè)硬件的基礎(chǔ)上,系統(tǒng)在BIOS中一配置了鍵盤(pán)服務(wù)功能,因此用戶(hù)可以實(shí)現(xiàn)鍵盤(pán)輸入;當(dāng)在鍵盤(pán)上“按下”或“放開(kāi)”一個(gè)鍵時(shí),如果鍵盤(pán)的中斷允許位(21H端口第一位為0),就會(huì)產(chǎn)生一個(gè)類(lèi)型為9的中斷,并轉(zhuǎn)入BIOS的鍵盤(pán)中斷處理程序,鍵盤(pán)上每個(gè)鍵對(duì)應(yīng)于一個(gè)掃描碼,從01到83,通過(guò)掃描碼便可以唯一確定是哪個(gè)鍵改變了狀態(tài):中

23、斷處理程序BOISI'T16H和IT21H有相關(guān)的功能實(shí)現(xiàn)字符的輸入:此外要在顯示器上顯示輸入的內(nèi)容,就必須了解顯示器的工作和控制,主要參數(shù)為:字符顯示的行列、顯示的顏色等,通過(guò)BIOS的顯示中斷INT10H的相關(guān)參數(shù)設(shè)置,從而達(dá)到控制光標(biāo)的位置,讀取光標(biāo)的位置,選擇顯示頁(yè),清屏和卷屏;寫(xiě)入一個(gè)新的文件或者用同一個(gè)文件名重寫(xiě)一個(gè)舊文件時(shí),首先要建立文件并賦予給它一個(gè)屬性,如果DOS發(fā)現(xiàn)要建立的文件已經(jīng)存在時(shí),原來(lái)的文件將被破壞,通過(guò)movah3chleadxpathnmint21h可以實(shí)行在硬盤(pán)上寫(xiě)入一個(gè)文件,其中pathnm為文件的名字緩存區(qū)名;打開(kāi)文件(3DH)要檢查文件名是否合法

24、,文件是否有效,利用movah3dhleadxpathnmint21h可以實(shí)現(xiàn)讀取一個(gè)文件,其中pathnm為文件的名字緩存區(qū)名。這次課程設(shè)計(jì),我明白了對(duì)于編寫(xiě)程序,解題的思路尤為重要。在編寫(xiě)程序之前,如果沒(méi)有比較清晰的思路,根本不可能編出好的程序。就算馬馬虎虎的編出來(lái),程序的邏輯性、健壯性、完善性、合理性也不會(huì)很強(qiáng)。在編程之前,我們應(yīng)反復(fù)研究題目要求,對(duì)題目涉及的情況進(jìn)行比較充分的分析,以便編寫(xiě)出更加符合題意的程序;其次要充分考慮各種臨界情況,對(duì)一些錯(cuò)誤的輸入進(jìn)行處理。因此在我們編程序之前一定要做好充分的準(zhǔn)備,首先要理清自己的思路,然后再將思路分劃成幾個(gè)模塊,逐塊的寫(xiě)好算法,最后再將所有的模

25、塊有機(jī)的聯(lián)系起來(lái),組成一個(gè)完整的程序。在成功通過(guò)編譯的情況下,對(duì)程序運(yùn)行的結(jié)果進(jìn)行系統(tǒng)的分析,檢驗(yàn)其正確性,如果有錯(cuò)誤,應(yīng)立即去分析源程序的邏輯錯(cuò)誤,直到得到正確的結(jié)果。匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)在這次課程設(shè)計(jì)的過(guò)程中,我也遇到了很多難題。在種種的困難中,我明白了在編寫(xiě)程序時(shí)要有耐心。如果你沒(méi)有耐心,即使再好的思路也不會(huì)得到很好的表達(dá),特別是在調(diào)試的過(guò)程中,對(duì)于各種各樣的錯(cuò)誤,要特別的有耐心去自習(xí)分析原因,特別是一些基本的語(yǔ)法錯(cuò)誤,不能一看到錯(cuò)誤很多就亂了陣腳,更不能輕易的放棄,半途而廢。通過(guò)此次課程設(shè)計(jì),再次對(duì)匯編語(yǔ)言的基礎(chǔ)知識(shí)和一些實(shí)際操作只是有了一定的了解,對(duì)匯編

26、語(yǔ)言這樣的直接操作機(jī)器硬件感到無(wú)比的神奇和濃厚的興趣。5 .2對(duì)程序改進(jìn)的想法本程序有很多不完善的地方,例如:在文本編輯區(qū)通過(guò)上下鍵移動(dòng)光標(biāo)時(shí),移動(dòng)后的光標(biāo)坐標(biāo)的列并沒(méi)有改變、刪除一個(gè)字符時(shí),必須將光標(biāo)放在該字符上、用delete刪除一個(gè)字符時(shí),該字符所占的空間依然存在、輸入的保存文件名一旦輸入不能修改、部分字符保存后存在亂碼等等。對(duì)于初學(xué)者,存在問(wèn)題很正常,由于時(shí)間有限,不能很好的查閱相關(guān)資料來(lái)完善程序,修改相關(guān)的BUG,因此,在課后爭(zhēng)取查閱相關(guān)資料來(lái)完善這個(gè)程序,修改上述BUG,力爭(zhēng)實(shí)現(xiàn)和記事本相類(lèi)似的功能。6 ,附錄源程序本次源程序如下:read_chrmacro;讀取字符的宏定義mov

27、ah,0;返回的al=字符碼,ah=掃描碼inti6hendm _stringmacrop1;顯示字符串信息movah,9leadx.plint21hendmwinmacrooprl,opr2,opr3,opr4,opr5,opr6;建立窗口宏定義movah,06h:0pr1=頁(yè)號(hào),opr2二卷入行屬性moval,oprl;opr3二左上角行號(hào),opr4=左上角列號(hào)movbh,opr2;opr5=右上角行號(hào),opr6=右上角列號(hào)movch,opr3movcl,opr4movdh,opr5movdLopr6intiOhendmpos_cursemacroop1,op2,op3;定義光標(biāo)位置mov

28、ah20Pl=頁(yè)號(hào),0p2二行號(hào),0p3二列號(hào)16 / 37匯編語(yǔ)言課程設(shè)計(jì)-文本方式下字處理程序的設(shè)計(jì)與實(shí)現(xiàn)movbh.oplmovdh,op2movdl,op3intiOhendmhelp_masOdb,AboutThisEditor$,helpmas1db'*$;幫助內(nèi)容help_mas2db1*Thanksforusingthiseditor!*$,helpnas3db'*一4>help_mas4db'*MS-DOSEditor*$'pos_getmacro;讀取光標(biāo)位置movah,03hmovbh,0intiOhendmhelp_mas5db1*

29、CopyrightPowerbyPP2012.1*$'helpmas6db'*$com_messOdb,EditConimands$,com-messldb*木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木木datasegment;定義數(shù)據(jù)段flagdw?colordb19dup(M)JWhite_to_Black13/0/$'color_2db19dup(M):White-to_Red;13,10,$color_3db19dup(M)/White_to_Blue13,10,'$'menudbTileOptionsHelpS1m

30、essdb'F1-FileF2-OptionsF10-helpEsc-quit,manualdb,New:13,10,'$'manu_2dbfOpenl3,10,'$'manu_3dbsave',13/0,'$'manu_4dbfSaveas13,10,'$'manu_5db,Exit,$,manu_6db10dup(H)/Color13J0,$manu_8db21dup("),'Command;13J0,$manu_9db21dup(M);About;13/0,'$'handle

31、dw?mess1db,Pleaseinputafilename:V$,mess2db,Pleaseinputasavingfilename:V$*mess3db,Pleaseinputanopenfilename:7$,4>com_mess2db,Home-Movetothestartofthecurrentline.S1com_mess3db'End-Movetotheendofthecurrentline.S1com_mess4db,Delete-Deletethecharacterthatthecursorison.$,com-messSdb'Backspace-D

32、eletethecharactertotheleftofthecursor.$,com_mess6db,Ctrl+Up-Scrolkiponeline.5,com_mess7db'Ctrl+down-Scrolldownoneline$com-messSdbtrl+Left-Moveleftoneword.Scom_mess9db'Ctrl+right-Moverightoneword$com_mess1Odb'Enter-Startanewline$com_mess11dbTab-Movethecursortonexttabstop$datedbDATE:0000/0

33、0/00$,調(diào)用日期hangliedb'Lin:000/Com:000$'行列timedbTIME:00:00:00$t調(diào)用時(shí)間dataendsmess4db,Thefilehasnotsaved!Saveitnow?(Y/pathdb50dup(0)/$,bufferdb2000dup(?)bakdb3850dup(0)linedb?rowdb?chardb? 木木東木木東木木東木木東木木 ,木木木木木木5C木木木木5C木木木木5C木木木codesegmentmainprocfar;主程序 assumecs:code,ds:datastart:movax,data movds

34、,ax callwindow;創(chuàng)建窗口子程序 calledit;編輯輸入的字符retmainendpmenu_sho wprocnear;顯 示菜單 callsavedisplaypushexcmpah,3bhjzmenu_filel;Fl 功能 File cmpahJchjzmenu_optionsl ;F2 功能 Options cmpah,44hjzmenu_helpl;F10 功能 Help jmpchar_getwindowprocnear;倉(cāng)ij建窗口子程序 win0,70h,l ,0,24,79;定義窗 口背景 winl,3fh,0,0,0,79win0,3fh,24,0,24,

35、79pos_curse0,0,1 ;顯示菜單位置及內(nèi)容 stringmenupos_curse0,24,1 ;顯示狀態(tài)欄位置及內(nèi)容 stringmesscallwin3;顯示日期pos_curseO, 1,0callwin4;顯示行/列pos-curseO, 1.0 movrow,dh:dh=l movline,dl;dl=0 ret windowendpmenu_filel:jmpmenu_file menu_optionsl: jmpmenu_options menu_helpl: jmpmenu_helpmenu_file:;定義菜單的背景字體顏色 pos_getpushdxwin0,8

36、0h,l,0,6,8;建立菜單子窗口pos_curseO, 1,0 stringmanu-l stringmanu_2 stringmanu-S stringmanu_4 stringmanu_5 popdx decdlpos_curseO,dh,dlcopmar:read_chr;從I/O讀取字符cmpah,50h;向下jzmanu_njmpmanujiideditprocnear;編輯輸入的字符char_get:;讀字符callcomreteditendpmanu_hid:;菜單隱藏winOJehJ,1,7,50callbackdisplayjmpchar_getmanu_n:;開(kāi)始定義各

37、個(gè)菜單項(xiàng)win0,80h51,5,7pos_curse0,5,0stringmanu_5win0,80h,2,l,2,7pos_curse0,2,0stringmanu_2win0,06h,l,l,l,7pos_curseO,1,0stringmanu_lread-chrcmpah,48h;向上jemanu_ee;exitcmpal,Odh;按回車(chē)鍵選中jznew_l;newcmpah,50h;向下jemanu_o;openjmpmanu_hidmanu_ee:jmpmanu_e;newtoexitnew:callnewmanu_nn:jmpmanu_n;opentonewmanu_o:jmp

38、manujiid open: jmpopen manu_oo: jmpmanu_o;savetoopen manu-s:win0,80h,2,1,2,7 pos_curse0,2,0 stringmanu_2 win0,80h,4,l,4,7 pos_curse0,4,0 stringmanu_4 win0,06h,3,l,3,7 pos_curse0,3,0 stringmanu_3 read_chr cmpaLOdh jzsave_l;save cmpah,48h jemanu_oo;open cmpah,50h jemanu_a;saveas jmpmanujiid save: call

39、savemanu_ss: jmpmanu_s;saveastosave manuka:win0,80h,3,l,3,7 pos_curseO,3,0 stringmanu_3 win0,80h,5,5,7 pos_curse0,5,0 stringmanu_5 win0,06h,4,1,4,7 pos_curse0,4.0 stringmanu_4 read_chr cmpahJch jzsave_2;saveas cmpah,48h jemanu_ss;save cmpah,50h jemanu e;exitwin0,80h,l,l,l,7pos_curseO,1,0stringmanu_l

40、win0,80h,3,l,3,7pos_curse0,3,0stringmanu_3win0,06h,2,1,2,7pos_curse0,2,0stringmanu_2read_chrcmpah48hjemanu_nn;newcmpaLOdhjzopen_l;opencmpah,50hjemanus;savejmpmanu_hidmanu_n2:jmpmanu_nmanu_as:jmpmanu_asave_2:callsaveasmanure:win0,80h,4,1,4,7pos_curse0,4,0stringmanu_4win0,80h,l,l,l,7pos_curseO,1,0stri

41、ngmanu_lwin0,06h,5,l,5,7pos_curseO,50stringmanu_5read_chrcmpah,50hjemanu_n2;newcmpah,48hjemanu_as;saveascmpahjchjeexit;exitjmpmanu_hidexit:movah,4chint21hret;結(jié)束,退出程序menu_options:pos_getpushdxwin0,80h,l,10,2,18pos_curseO,150stringmanu_6popdxdecdlpos_curseO,dh,dlread_chr;從I/O讀取字符cmpah,50h;向下jzmanu_col

42、orjmpmanu_hidmanu_color:win0,06h,1,10,1,16pos_curseO,1,0stringmanu_6read_chrcmpah,4dh;向右jzmanu_colorl;colorcmpaLOdh;按回車(chē)鍵選中jzmanu_colorl;color需要調(diào)用color二級(jí)子callbackdisplaywinOQfh,14,9,16,60pos_curseO/5,9movdh,15movdl.9movbhJOhmovah,2intiOhstringmess4movah,1int21hcmpaL79hjnzqcallquittq:cmpaL6ehjzquitqui

43、t:win0,07h,0,0,24,79pos_curse0,0,0菜單jmpmanu_hidmanu-colorl:jmpmanu_.subcolormanu_colorl1:jmpmanu.colormanu-subcolor:pos_getpushdxwin0,80h,l,19,4,34pos_curseO,1,0stringcolor_lstringcolor_2stringcolor_3win0,80h,l,10,2,18pos_curseO,1,0stringmanu_6popdx33 / 37decdlpos_curseO,dh,dlread_chr;從I/O讀取字符cmpah,

44、50h;向下jzmanu_subcolorlcmpah,4dhjzmanu_subcolorljmpmanu_hidmanu_subcolorl:win0,80h,3,19,3,34pos_curse0,3,0stringcolor_3win0,80h,2,19,2,34pos_curse0,2,0stringcolor_2win0,06h,1,19,1,34pos_curseO,1,0stringcolorwin0,80h,1,10,2,18pos_curse0J,0stringmanu_6read_chrcmpah,48h;向上jemanu_subcolor33;cmpal,0dh;按回車(chē)

45、鍵選中jzmanu_chcolorl;cmpah,50h;向下jemanu_subcolor2;jmpmanu_hidmanu_subcolor33:jmpmanu_subcolor3manu_chcolorl:movflag,1callsetcolormanu_subcolor2:win0,80h,3/9,3,34pos_curse0,3,0stringcolor_3win0,80h1,19,l,34pos_curseO,1,0stringcolorwin0,06h,2,19,2,34pos_curse0,2,0stringcolor_2win0,80h1,10,2,18pos_curse0

46、,150stringmanu_6read_chrcmpah,48h;向上jemanu_subcolorl1;cmpalQdh;按回車(chē)鍵選中jzmanu_chcolor2;cmpah,50h;向下jemanu_subcolor3;jmpmanu_hidmanu-subcolorl1:jmpmanu_subcolorlmanu_chcolor2:movflag,2callsetcolormanu-subcolorS:win0,80h,2,19,2,34pos_curse020stringcolor_2win0,80h,l,19,l,34pos_curse0,1,0stringcolorwin0,0

47、6h,3,19,3,34pos_curse0,3,0stringcolor_3win0,80h,10,2,18pos_curse0,1,0stringmanu_6read_chrcmpah,48h;向上jemanu_subcolor22;cmpalQdh;按回車(chē)鍵選中jzmanu_chcolor3;cmpah,50h;向下jemanu_subcolorl11;jmpmanujiidmanu_subcolor22:jmpmanu_subcolor2manu_subcolorl11:jmpmanu_subcolorlmanu-chcolorS:movflag,3callsetcolormenuhe

48、lp:jmpmanujiid manu-command 1: jmpmanu_command manu_aboutO:callhelp;調(diào)用about子菜單 jmpmanu_hid menu-showendpcomprocnear;定義功能鍵pos_get;根據(jù)鍵盤(pán)的輸入,確定文本編輯的 各種功能movrowjh movlineJl first:pos_c u rseO,rowJ i nej00:movah,0intl6h;從鍵盤(pán)讀字符ah=掃描碼al二字符碼 pushax leadx,buffer movbufferbx,alincbxcmpah,48h;上jzupcmpah,50h;下jz

49、down_lcmpah,4bh;左 jzleftcmpah,4dh;右jzrightcmpahjch;回車(chē)jzenter_lcallfuc_key;調(diào)用功能子鍵movah,2 movdLal int21hpopaxcallmenu_showjmpj6;結(jié)束down: jmpdownpos_getpushdxwin0,80h,1,22,2,29;建立菜單子窗口pos_curseO,1,0stringmanu_8stringmanu_9popdxdecdlpos_curse0,dhjlread_chr:從I/O讀取字符cmpah,50h;向下jzmanu_commandjmpmanu_hidnia

50、nu_conimand:win0,80h,2,22,2,28pos_curse0,2,0stringmanu_9win0,06h,1,22,1,28pos_curseO,l,0stringmanu_8read_chrcmpah,48hjzmanu_about;aboutcmpaLOdhjzmanu_conimandO;commandcmpah,50hjzmanu_about;aboutjmpmanu_hidnianu_conimandO:callcommand;Hcommand子菜單jmpmanu_hidmanu_about:win0,80h,1,22,1,28pos_curseO,1,0st

51、ringmanu_8win0,06h,2,22,2,28pos_curse0,2,0stringmanu_9read_chrcmpah48hjzmanu_conimand1;conimandcmpaLOdhjzmanu_aboutO;aboutcmpah,50hjzmanuconimand1;commandenter:jmpenter_2up:jmpupleft:;光標(biāo)左移pos_getmovrow,dhmovdljinecmpline,。jnzdirectmovline,79decrowcmprow,0jestop2jmpfirststop2:jestop1callwin4jmpfirsts

52、topl:movrow,1jmpfirstdown:;下移光標(biāo)pos_getmovrowjhmovdlJineincrowcmprow,24jestop3callwin4jmpfirststop3:movrow,1jmpfirstdirect:declinecallwin4;顯示光標(biāo)位置jmpfirstright:;光標(biāo)右移pos_getmovroudhmovdljinecmpline,79jnzdirect2movline,。incrowcmprow,24jereturnsljmpfirstdirect2:inclinecallwin4jmpfirstenter_2:jmpenterup:;

53、上移光標(biāo)pos_getmovrow.dhmovdljinedecrowcmprow,0movrow,23jmpfirstreturns1:jmpreturnsenter:;回車(chē)換行pos_getmovrowjhmovline.dlincrowcmprow,24jereturnsmovline?0callwin4jmpfirstreturns:movrow,24movline,0jmpfirstj6:retcomendpfuc_keyprocnear;功能鍵子程序next:cmpah,01hjzescape;esccmpah,47h;homejzhomecmpah,4fh;endjz_endcm

54、pah,Oeh:backspacejzbak_spcmpah,53hjzdehdeljmpoverescape:callquitthome:;home鍵的功能,回到一行的開(kāi)始pos_getmovrow.dhmovline,0callwin4;修改屏幕上行列的顯示值jmpfirst_end:;end鍵的功能,回到一行的結(jié)尾pos_getmovrowjhmovline,79callwin4jmpfirstbak_sp:;退格鍵的功能pos_getmovrow.dhmovline,dlcmpline,0jestopdeclinejmpabstop:movline50ab:pos_getOjowJin

55、emovah,2movdLOOint21hcallwin4jmpfirstdel:;del刪除pos_getmovrow.dhmovline.dldeclinepos_get0,rowjinemovah,2movdLOOint21hinclinecallwin4jmpfirstcm:cmpline,00jzpos_cmpos_cm:pos_curse0,0,0jmpfirstover:retfuc.keyendpsavedisplayprocnear;保存輸入的文本pushaxpushbxpushexpushdxpushdsmovax,0002hint33hmovbx,0dmovcx,3840dloopl:movax,0b800h;顯示緩沖區(qū)的起始地址movds,axmovdLds:bxmovax,datamovds,axmovbakbx5dlinebxlooploop1movax.OOOlhint33hpopdspopdxpopexpopbxpopaxretsavedisplayendpint21hcmpal,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論