匯編語言課設文本編輯器_第1頁
匯編語言課設文本編輯器_第2頁
匯編語言課設文本編輯器_第3頁
匯編語言課設文本編輯器_第4頁
匯編語言課設文本編輯器_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

題目:文本編輯器 ... 1.2 .2.1開發(fā)背景...........................................3.3數(shù)據(jù)定義............................................4模塊設計.......................................... 4.1運行結(jié)果...........................................4.2結(jié)果分析.............................................1程序測試..............................................................................摘要文本編輯器在我們的日常生活中使用非常頻繁,是我們工作當1.2設計的內(nèi)容的界面;2.在文本編輯區(qū)可以隨意輸入字符;4.實現(xiàn)了光標上移、下移、左移、右移;5.實現(xiàn)了下拉菜單以及彈出式菜單;6.可以實現(xiàn)屏幕的上卷和下卷;.1開發(fā)背景本次開發(fā)主要是在《微機原理與接口技術(shù)》這門課學習完成之2.2程序設計的意義本程序主要利用BIOS功能調(diào)用設計編輯器的菜單和編輯窗口,3.1總體設計方案程序利用模塊化設計方法,對每個要實現(xiàn)的功能都設計成子程序,方便使用。程序中具體模塊如圖3-1。主程序繪制界面按鍵判斷子菜單繪功能的實displaydis_edit3.2實現(xiàn)過程display(顯示菜單欄);dis_edit(顯示編輯窗口);dis_file(顯示文件菜單);dis_text(顯示文本菜單);key_down(光標向下);key_left(光標向左);key_up(光標向上);key_right(光標向右);key_pgup(菜單的循環(huán)選擇);ok_exit(退出);open(子菜單顯示及控制);.3數(shù)據(jù)定義好了,由于功能調(diào)用的需要所以把數(shù)據(jù)定義在了數(shù)據(jù)段和附加段中。以下是程序中用到數(shù)據(jù)的定義:datasegmentsdb'FileViewTextAbout$'f1db'Open',10,13,'Exit',10,13,'$'f2db'Clear$'idb0bdb0buffdb1200dup(?),'$'printfdb"Can'topentheFile$"mssdb'Massage$'ab1db'AboutEdit$'ab2db'GaoHaiFeng$'ab3db'C1141$'ab4db'2013-6-22$'dataendseatasegments1db'File$'s2db'View$'s3db'Text$'s4db'About$'s5db'Open$'s6db'Exit$'s7db'Clear$'eorrdb'eorr:$'okdb5bh,'OK',5dh,'$'designdb'Design:$'classdb'Class:$'datedb'Date:$'qqdb'QQ:$'eataends事先定義好數(shù)據(jù)的結(jié)構(gòu)可以減少程序設計中很多的麻煩。塊設計開開始繪制編輯繪制菜單返回3.4.2檢測按鍵開始AH=0?是否返回3.4.3子菜單繪制該模塊同樣采用了BIOS功能調(diào)用設置子菜單,具體操作見圖制返回4.1運行結(jié)果4.2結(jié)果分析選擇、光標的移動、5.1程序測試通過本次課程設計可以說收獲頗多,雖然在程序設計的過程中七、參考文獻月datasegmentsdb'FileViewTextAbout$'f1db'Open',10,13,'Exit',10,13,'$'f2db'Clear$'idb0bdb0buffdb1200dup(?),'$'printfdb"Can'topentheFile$"mssdb'Massage$'ab1db'AboutEdit$'ab2db'GaoHaiFeng$'ab3db'C1141$'ab4db'2013-6-22$'dataendseatasegments1db'File$'s2db'View$'s3db'Text$'s4db'About$'s5db'Open$'s6db'Exit$'s7db'Clear$'eorrdb'eorr:$'okdb5bh,'OK',5dh,'$'designdb'Design:$'classdb'Class:$'datedb'Date:$'qqdb'QQ:$'eataendsstacksegmentdw1000dup(?)stackendscodesegmentassumeds:data,cs:code,ss:stack,es:eatamovds,axmovax,eatamoves,axmovah,0moval,3int10hcalldisplay;顯示菜單欄calldis_edit;顯示編輯區(qū)movah,4chthdisplayprocnear;顯示菜單欄movah,6moval,0movch,0movcl,0movdh,0movdl,79movbh,70hmovmovmovmovmovmovmovmovmovmovmovmovretdisplayah,6al,1hlhdl,79bh,70hah,2bh,0hlah,09hsdis_editprocnear;顯示編輯區(qū)movmovmovmovmovmovmovmovintmovmovmovmovmovmovmovpgup_r:di,0;作為緩存指針ah,6al,0hldh,24dl,79bh,1ehah,6al,1hldh,24dl,79bh,1ehmovah,2movbh,0movdh,1movdl,0int10hnext:movah,00h;從鍵盤讀取字符int16hcmpal,1bh;判斷輸入的字符是否是ESCjzexitcmpal,0dhjzentercmpah,48h盤掃描碼jzdi_upcmpah,4bhjzdi_leftcmpah,4dhjzdi_rightcmpah,50h;判斷輸入的字符是否是回車;判斷按鍵是否是上,ah中存放的是特殊鍵jzdi_downjzdi_pgupcmpah,0ehjzdi_backmovbuff[di],al;每次接收一個字符時都存放到BUFF中imovbuff[di],'$'movah,2thloopnextjmpnext1;這里相當于無限循環(huán),CX的值不起作用ffdiimovbuff[di],13imovah,3;獲取光標位置movbh,0int10hcmpdh,24;判斷回車之后是否是行尾jzgo_againmovmovincmovintah,2bh,0lnext1jmpnext1di_left:callkey_left;調(diào)用左移子程序jmpnext1di_right:callkey_right;調(diào)用右移子程序jmpnext1di_down:callkey_down;調(diào)用下移子程序jmpnext1jmppgup_rdi_back:callkey_backjmpnext1go_again:calldis_loop;上卷一行定位到行尾jmpnext1exit:movah,6moval,0movch,0movcl,0movdh,24movdl,79int10hretdis_editendpdis_loopprocnear;編輯區(qū)上卷一行光標定位到行尾movah,6moval,1movch,1movcl,0movdh,24movdl,79movbh,1ehint10hmovah,2movbh,0movdh,24movdl,0int10hretdis_loopendpkey_upprocnearmovah,3;讀取光標位置movbh,0int10hcmpdh,1jzrodownmovah,2;定位光標位置decdhint10hreturn:retrodown:callroll_downjmpreturnkey_upendproll_downprocnear;屏幕下卷movah,7moval,1movch,1movcl,0movdh,24movdl,79movbh,1ehint10hmovah,3;讀取光標位置movbh,0int10hmovah,2;定位光標位置int10hretroll_downendpkey_leftprocnearmovah,3;讀取光標位置movbh,0int10hcmpdl,0;判斷是否到了第一列jzgo_left;是的話移到上一行行尾movah,2movbh,0decdlint10hjmpret1go_left:cmpdh,1jnzroll_upmovah,6moval,1movch,1movcl,0movdh,24movdl,79movbh,1ehmovmovmovmovintah,2bh,0dl,79hret1roll_up:movah,2;移到上一行行尾movbh,0decdhmovdl,79int10hret1:retkey_leftendpkey_rightprocnearmovah,3;讀取光標位置movbh,0dl,79go_rightdh,24on_okmovah,6moval,1movhmovlmovdh,24movdl,79movbh,1ehmovah,2movbh,0movdh,24movljmpret2movbh,0movret2go_right:movah,2movbh,0lint10hret2:retkey_rightendpkey_downprocnearmovah,3movbh,0dh,24m_downmovah,6moval,1movhmovlmovdh,24movdl,79movbh,1ehmovah,3movbh,0movah,2movbh,0movdh,24ret3m_down:movah,2movbh,0hint10hret3:retkey_downendpkey_pgupprocnear;按下pgup鍵的處理過程st_pgdn:calldisplaycmpi,0jnznt;判斷當前的菜單項是第幾個movah,6;菜單項處清屏moval,0movbh,1fhmovch,0movcl,0movdh,0movdl,3int10hmovah,13hmoval,0movcx,4movdh,0movmovmovleaintjmpnt:cmpjnzmovmovmovmovmovmovmovintmovmovmovlbl,0a5hbh,0bp,s1ret0nt1bh,1fhah,6al,0hlhdl,12ah,al,0xmovmovmovmovleaintjmpnt1:jnzmovmovmovmovmovmovmovintmovmovhlbl,0a5hbh,0bp,s2ret0cmpi,2nt2bh,1fhah,6;小菜單清屏al,0hcl,18hdl,21ah,13hal,0movmovmovmovmovleaintjmpnt2:jnzmovmovmovmovmovmovmovintmovxhdl,18bl,0a5hbh,0bp,s3ret0cmpi,3nt1bh,1fhah,6al,0hcl,27hdl,30ahhbios輸出字符串movmovmovmovmovmovleaintret0:cmpjnzmovrtt:al,0xhdl,27bl,0a5hbh,0bp,s4incirttmovah,0hah,49hst_pgdnal,0dh;判斷是否是回車rt0jnzlolcalldis_aboutjmprt0lol:cmpi,1jnzqqqcalldis_filejmprt0qqq:cmpi,3jnzrtt;不確定calldis_textrt0:cmpi,1jnzntfmovah,6;菜單項處清屏moval,0movbh,70hmovch,0movcl,0movdh,0movdl,3movmovmovmovmovmovmovleaintjmpntf:jnzmovmovmovmovmovmovah,13hal,0xhlbl,70hbh,0bp,s1rrrcmpi,2ntf1bh,70hah,6al,0hlhmovintmovmovmovmovmovmovmovleaintjmpntf1:jnzmovmovmovmovmovdl,12ah,al,0xhlbl,70hbh,0bp,s2rrrcmpi,3ntf2bh,70hah,6;小菜單清屏al,0hcl,18movmovintmovmovmovmovmovmovmovleaintjmpntf2:jnzmovmovmovmovhdl,21ah,al,0xhdl,18bl,70hbh,0bp,s3rrrcmpi,0rrrbh,70hah,6al,0hmovcl,27movdh,0movdl,30int10hmovah,13hmoval,0movcx,5movdh,0movdl,27movbl,70hmovbh,0leabp,s4int10hrrr:movi,0retkey_pgupendpdis_fileprocnear;顯示File菜單movah,6moval,0movbh,70hmovhmovlmovhmovlmovah,6moval,1movbh,70hmovhmovlmovhmovlmovah,2movbh,0movhmovlmovleaintmovintcmpjnzan_don:jnzmovleamovmovmovmovmovmovintmovah,09hdx,f1ah,00hah,50h;如果按方向鍵下cmpb,0hahaah,13hbp,s6al,0xhlbh,0bl,70hah,13hmovmovmovmovmovmovhaha:movmovmovmovmovmovmovbp,s5al,0xhlbh,0bl,05ahcmpb,1ah,13hbp,s5al,0xhlbh,0bl,70hint10hmovah,13hleabp,s6moval,0movcx,4movdh,2movdl,0movbh,0movbl,05ahint10hcmpb,2jnzeeemovb,0eee:movah,00int16hcmpah,50h;判斷是否是方向鍵下jzan_doncmpah,01h;判斷是否是ESCjzrrr1cmpal,0dh;判斷是否是回車jnzeeecmpb,1jnzcexitcallopenjmprrr1rrr1:movah,6moval,0movch,1movcl,0movdh,24movdl,79movbh,1ehint10hmovah,6moval,1movch,1movcl,0movdh,24movdl,79movbh,1ehint10hcalldis_buffretdis_fileendpdis_buffprocnearmovah,2movbh,0movhmovlmovah,9dx,buffretdis_buffendpopenprocnearcalldisplaymovah,6moval,0movch,1movcl,0movdh,24movdl,79movbh,1ehint10hcalldis_buff;顯示緩存數(shù)據(jù)movah,6moval,0movbh,70hmovch,6movcl,19movdh,6movdl,59int10hmoval,1movbh,70hmovch,6movcl,19movdh,6movdl,59int10hmovah,2movbh,0movdh,6movdl,34int10hmovah,9leadx,mssthmovah,6moval,0movbh,5ehmovhmovcl,19movdh,14movdl,59movah,6moval,1movbh,5ehmovhmovcl,19movdh,14movdl,59movbp,eorrmoval,0movxmovbh,0movbl,52hmovdh,10movdl,24int10hmovah,2movbh,0movdh,10movdl,32int10hmovah,9leadx,printfthmovah,13hleabp,okmoval,0movcx,4movbh,0movbl,70hmovdh,12movdl,37int10hsure:movah,00hal,0dhmovah,6moval,0movhmovlmovdh,24movdl,79movbh,1ehlretdis_buffopenendpok_exitprocprocmovah,6movbh,0moval,0movch,0movcl,0movdh,24movdl,79int10hmovah,4chthretok_exitendpdis_textprocnearmovah,6moval,0movbh,70hmovch,1movcl,18movdh,1movdl,24int10hmovah,6moval,1movbh,70hmovhmovcl,18movhmovdl,24movah,2movbh,0movhmovdl,18movah,09hdx,f2movah,13hbp,s7moval,0movcx,5movdh,1movdl,18movbh,0movbl,05ahint10hint16hcmpah,01hjzr121cmpal,0dhjnzr121movbuff,'$'r121:movah,6moval,0movch,1movcl,0movdh,24movdl,79movbh,1ehint10hcalldis_buffretdis_textendpdis_aboutprocnearmovah,6moval,0movbh,70hmovch,6movcl,19movdh,6movdl,59int10hmovah,6moval,1movbh,70hmovch,6movcl,19movmovintmovmovmovmovhdl,59ah,2bh,0hdl,34int10hdx,ab1movah,6moval,0movbh,3ehmovhmovcl,19movdh,14movdl,59movmovmovmovmovmovmovintmovah,6al,1bh,3ehhcl,19dh,14dl,59ah,13hleabp,designmovcx,7movdh,8movdl,30movbh,0movbl,30hint10hmoval,0movbh,30hmovch,9movcl,30movdh,9movdl,38int10hmovah,13hmovcx,5movdh,9movdl,30movbh,0movbl,31hint10hmoval,0movbh,3ehmovch,10movcl,30movdh,10movdl,38int10hmovah,13hleabp,date;顯示日期movcx,5movdh,10movdl,30movbh,0movbl,30hint10hmoval,0movbh,3ehmovch,11movcl,30movdh,11movdl,38int10hmovah,13hmovcx,3movdh,11movdl,30movbh,0movbl,

溫馨提示

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

評論

0/150

提交評論