微型计算机原理课程设计-简易文本编辑器.doc_第1页
微型计算机原理课程设计-简易文本编辑器.doc_第2页
微型计算机原理课程设计-简易文本编辑器.doc_第3页
微型计算机原理课程设计-简易文本编辑器.doc_第4页
微型计算机原理课程设计-简易文本编辑器.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机原理及应用课程设计任务书题 目: 简易文本编辑器 学生姓名: XX 学 号: 班 级: 网络技术 题目类型:软件工程(R) 指导教师: XXX 一 微型计算机原理及应用课程设计内容汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率低,但其运行效率高、速度快。因此掌握汇编语言是学好微机原理和接口设计的第一步。设计一个功能较完备的文本编辑器,文本编辑器大小为24行80列,界面提供编辑菜单、文件操作菜单及简单帮助。二 微型计算机原理及应用课程设计目的1、学习磁盘文件的建立、打开、关闭和读写等操作功能调用;2、实现对磁盘文件的存取;3、熟练掌握BIOS、DOS的系统功能调用;三 微型计算机原理及应用课程设计的要求1、利用DOS系统功能调用和BIOS功能调用设计一个有菜单栏的编辑窗口。在该窗口中可以实现文本的输入;可以利用“Del”键、“BackSpace”键、“Home”键、“End”键、“”、“”、“”、“”方向移动键实现对输入文本的全屏编辑。使用彩色组和背景颜色来设计界面颜色,利用DOS系统功能调用的磁盘文件存取技术实现文件的“信件”、“打开”、“保存”、“另存为”与“退出”功能。2、查阅文献资料,一般在5篇以上;3、完成算法设计和程序设计、调试;4、撰写课程设计说明书;5、做好答辩工作。四 微型计算机原理及应用课程设计思路DOS提供了一组完成磁盘文件的建立、打开、关闭和读写等操作的功能调用。利用DOS和BIOS功能调用,汇编语言可实现对磁盘文件的存取。利用BIOS功能调用中的10H中断类型,可以设置显示模式,设置窗口背景、字符颜色等。调用DOS系统功能中的09号功能,可以实现显示菜单信息字符串。调用BIOS中的键盘I/O中断调用(16H中断)中的0号功能,可以从键盘读取字符,通过对“”、“”、“”、“”方向键以及“Del”、“BackSpace”、“Home”、“End”键的扫描码的判断,结合10H中断中的02号、03号功能确定光标的相应移动,从而实现对输入文本的全屏幕编辑。利用DOS系统功能调用中的文件管理功能,如建立文件(16H)、打开文件(0FH)、读文件(3FH)、写文件(40H)等,可以实现对文件的操作。五 微型计算机原理及应用课程设计提交的成果1. 设计说明书一份,内容包括:1) 中文摘要100字;关键词3-5个;2) 前言;3) 设计内容;4) 设计目的;5) 设计要求;6) 设计思路(包含程序流程图);7) 软件使用说明书(核心界面说明);8) 设计总结、参考文献、致谢等。2. 刻制光盘一张。六 设计的主要参考文献1 宋杰,汪志宏,江敏,微机原理与接口技术课程设计,机械工业出版社,2005.42 周明德,微型计算机系统原理及应用习题集、习题解答与实验指导,清华大学出版社,2005.73 张开成,微型计算机原理,西南师范大学出版社,2006.84 沈美明,温冬婵, IBM-PC汇编语言程序设计第2版,清华大学出版社,2006.55 戴梅萼,史嘉权, 微型机原理与技术-习题、实验和综合训练题集,清华大学出版社,2009.4七 各阶段时间安排(共1周):周次日期内容地点完成情况教师签字第1周星期一教师讲解设计要求,准备参考资料,分析系统,方案设计教室星期二编程教室星期三编程实验室星期四调试程序实验室星期五写设计书,答辩实验室2010年7月13日目录前言1正文2【设计内容】2【设计目的】2【设计要求】2【设计分析】3【软件使用说明书】5源程序5设计总结24参考文献24致谢24前言汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率低,但其运行效率高、速度快。 不但要求有较高的理论水平,而且还要求有实际的动手能力。因此掌握汇编语言是学好微机原理和接口设计的第一步。 本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力,长期以来,注重书本知识,轻视实际动手设计能力是教学中普遍存在的现象。进行课程设计的目的就是要改变这种状况,使学习者既具有完备的理论知识,也能够解决在实际学习,生活工作中遇到的问题。学生应该能够把学习到的理论知识运用到实际中去,将知识转变为实际的能力,同时通过这些理论知识和实际的应用推动理论和实践的发展。 正文【设计内容】设计一个功能较完整的文本编辑器,文本编辑器大小为24行80列。【设计目的】学习磁盘文件的建立,打开,关闭和读写等操作的功能调用,实现对磁盘文件的存取。熟练掌握BIOS,DOS的系统功能调用。【设计要求】利用DOS系统功能调用和BIOS功能调用设计一个有菜单栏的编辑窗口。再该窗口中可以实现文本的输入;可以利用“Del”键,“BackSpace”键,“Home”键,“End”键,“”,“”,“”,“”键以及“Del”,“Ins”,“BackSpace”,“End”,“Home”键的扫描码的判断,结合10H中断中的02号,03号功能确定光标的相应方向移动键实现对输入文本的全屏幕编辑。使用彩色组合背景颜色来设计界面颜色,;利用DOS系统功能调用的磁盘文件存取技术实现文件的“新建”,“打开”,“保存”,“另存为”与“退出”功能。【设计分析】本案例充分应用了DOS和BIOS的中断功能。DOS提供了一组完成磁盘文件的建立,打开,关闭和读写等操作的功能调用。利用DOS和BIOS的功能调用,汇编语言可实现对磁盘文件的存取。对磁盘文件的管理有文件代号方式下的管理和文件控制块方式下的管理两种方式。利用BIOS功能调用中的10H中断类型,可以设置显示模式,设置窗口背景,字符颜色等。调用DOS系统功能中的09号功能,可以实现显示菜单信息字符串。调用BIOS中的键盘I/O中断调用(16H中断)中的0号功能,可以从键盘读取字符,通过对“”,“”,“”,“”方向移动移动,从而实现对输入文本的全屏幕编辑。利用DOS系统功能调用中的文件管理功能,如建立文件(16H),打开文件(0FH),读文件(3FH)写文件(40H)等,可以实现对文件的操作。整个程序的结构如图4-3所示。【操作说明】运行可执行文件TEXTEDIT.EXE,输入文本,利用Del键,BackSpace键,Home键,End键,上下左右方向移动键对文本进行全屏幕编辑。编辑完成后,按F1键激活菜单,下移光标,选择SAVE,输入文件名。也可以选择File菜单的其他菜单项,它们的功能均可实现。按F10键激活帮助,按Esc键退出帮助。要指出的是,本案例要产生的只是示范性的简易的文本编辑器,其中包含的只有基本的框架,很多方面考虑并不全面,尚需完善。例如没有实现编辑菜单,在编辑状态下用退格或删除键删除字符时,后面的字符不会自动前移等。对于这些不足的地方读者可以自行考虑补充,再加以改进使其更正确,全面。 【课程设计】(流程图)如图:入口 N是“F1”? YNEW选项 N是“ ” 是“ ” Y Y N N 是回车? 恢复编辑界面调用NEW子程序 YOPEN选项 是“ ” N 是“ ” Y YSAVE选项 是回车? N 恢复编辑界面 Y 调用OPEN子程序 是“ ” N 是“ ”? Y N Y 是回车? N 恢复编辑界面 Y 调用SAVE子程序SAVEAS选项是“ ”? N 是“ ”? Y Y NEXIT选项 是回车? N 恢复编辑界面 Y 调用SAVEAS子程序 Y是“ ” N 是“ ”? Y N 是回车? N 恢复编辑界面 Y Y 保存?调用QUITT子程序 N 回到编辑状态 返回DOS 等待键盘输入【软件使用说明书】双击可执行文件wbbjq.exe,在出现的界面中输入任意文本容,利用DEL键、BACKSPACE键、HOME键、END键、上下左右光标键对文本进行全屏幕编辑,按f1键激活菜单file,下移光标,选择save,输入文件名。也可以选择FILE菜单的其他菜单项,他们的功能均可实现。按f10激活帮助,按ESC键退出帮助。 源程序red_chr macro ;读取字符宏定义mov ah,0int 16hendmstring macro p1 ;输入字符光标mov ah,9lea dx,p1int 21hendmwin macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口 mov ah,06h mov al,opr1 mov bh,opr2 mov ch,opr3 mov cl,opr4 mov dh,opr5 mov dl,opr6 int 10hendmpos_curse macro op1,op2,op3 ;定义光标位置 mov ah,2 mov bh,op1 mov dh,op2 mov dl,op3 int 10hendmpos_get macro ;显示光标位置 mov ah,03h mov bh,0 int 10hendmdata segment ;定义数据段 menu db File Edit Help $ mass_1 db F1 Active file F10 Active help,$ manu_1 db New ,13,10,$ manu_2 db Open ,13,10,$ manu_3 db Save ,13,10,$ manu_4 db Save as ,13,10,$ manu_5 db Exit ,$ handle dw ? message1 db Please input file name:,$ message2 db Please input save file name:,$ message3 db Please input open file name:,$ message4 db *The file is not save! Save it now? (Y/N)*: ,$ path db 50 dup(0),$ buffer db 2000 dup(?) bak db 3850 dup(0) line db ? row db ? char db ?help_mas1 db welcome use editor! $ ;帮助内容help_mas2 db please the first active help! $help_mas3 db good lucky! $help_mas4 db =$help_mas5 db Press F1 to active file. $help_mas6 db You can use DOWN cursor key to choose the fuction $help_mas7 db Press F10 to show the help massage.Press Esc To Quit$date db today ?/?/,$;调用日期hanglie db ?/?,$ ;行/列data endscode segment main proc far ;主程序 assume cs:code,ds:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax call wind call edit retmain endpwind proc near ;创建窗口子程序 win 0,3eh,1,0,24,79 ;定义窗口背景 win 1,1fh,0,0,0,79 win 0,1fh,24,0,24,79show: ;显示菜单位置及内容 pos_curse 0,0,1 mov ah,9 lea dx,menu int 21hshow_2: ;显示状态栏位置及内容 pos_curse 0,24,1 mov ah,9 lea dx,mass_1 int 21h call win3 call win4 pos_curse 0,1,0 mov row,dh mov line,dlwind endpedit proc nearchar_get: ;读字符call comcom proc near ;定义功能鍵pos_getmov row,dhmov line,dlfirst:pos_curse 0,row,linej00: mov ah,0int 16h ;从键盘读字符 ah=扫描码 al=字符码push axlea dx,buffermov bufferbx,alinc bxcmp ah,48h ;上jz up_1cmp ah,50h ;下jz down_1cmp ah,4bh ;左jz leftcmp ah,4dh ;右jz rightcmp ah,1ch ;回车jz enter_1call fuc_keymov ah,2mov dl,alint 21hpop axcall menu_showjmp j6down_1:jmp downenter_1:jmp enter_2up_1: jmp upleft: ;光标左移pos_getmov row,dhmov dl,linecmp line,0jnz directmov line,79dec rowcmp row,0je stop2 jmp firststop2:mov row,1jmp firstdirect: dec linecall win4 ;显示光标位置jmp firstright: ;光标右移pos_getmov row,dhmov dl,linecmp line,79jnz direct2mov line,0inc rowcmp row,24je returns1 jmp firstdirect2:inc linecall win4jmp firstenter_2:jmp enterup: ;上移光标pos_getmov row,dhmov dl,linedec rowcmp row,0je stop1call win4jmp firststop1: mov row,1jmp firstdown: ;下移光标pos_getmov row,dhmov dl,line inc rowcmp row,24je stop3call win4jmp firststop3: mov row,23jmp firstreturns1:jmp returnsenter: ;回车换行pos_getmov row,dhmov line,dlinc rowcmp row,24je returnsmov line,0call win4jmp firstreturns:mov row,24mov line,0jmp firstj6: retcom endpfuc_key proc near ;功能键子程序 next: cmp ah,47h ;homejz homecmp ah,4fh ;endjz _endcmp ah,0eh ;backspacejz bak_spcmp ah,53hjz delcmp ah,44h ;F10jz help_0rethelp_0: call helphome: ;HOME键的功能pos_getmov row,dhmov line,0call win4jmp first _end: ;END键的功能pos_getmov row,dhmov line,79call win4jmp firstbak_sp: ;退格键的功能pos_getmov row,dhmov line,dlcmp line,0je stopdec linejmp abstop: mov line,0ab: pos_get 0,row,linemov ah,2mov dl,00int 21hcall win4jmp firstdel: ;DEL删除pos_getmov row,dhmov line,dldec linepos_get 0,row,linemov ah,2mov dl,00int 21hinc linecall win4jmp firstcm: cmp line,00jz pos_cmpos_cm:pos_curse 0,0,0jmp firsthelp proc near ;显示帮助信息call savedisplay ;显示帮助信息每行的位置pos_getpush dxwin 0,57h,4,5,21,70pos_curse 0,6,25string help_mas1pos_curse 0,8,11string help_mas2pos_curse 0,10,11string help_mas3pos_curse 0,12,11string help_mas4pos_curse 0,14,11string help_mas5pos_curse 0,16,11string help_mas6pos_curse 0,18,11string help_mas7pop dxpos_curse 0,dh,dlmov ah,0int 16hcmp ah,36h ;F10 active helpjnz clscall helpcls: win 0,1eh,9,10,13,70 ;清屏call backdisplayhelp endpfuc_key endpmenu_show proc near ;显示菜单call savedisplaypush cxcmp ah,3bh ;F1功能jz menu_shjmp char_getmenu_sh: ;定义菜单的背景字体颜色pos_getpush dxwin 0,06h,2,1,7,11win 0,65h,1,0,6,10pos_curse 0,1,0string manu_1string manu_2string manu_3string manu_4string manu_5pop dxdec dlpos_curse 0,dh,dlcopmar: red_chrcmp ah,50h jz manu_njmp manu_hidmanu_hid: ;菜单隐藏win 0,1eh,1,1,7,11call backdisplayjmp char_getmanu_n: ;开始定义各个菜单项win 0,65h,5,1,5,8pos_curse 0,5,0string manu_5win 0,15h,1,1,1,8pos_curse 0,1,0string manu_1red_chrcmp ah,48hje manu_ncmp al,0dhjz new_1cmp ah,50hje manu_ojmp manu_hidmanu_n0:jmp manu_nmanu_o:win 0,65h,1,1,1,8pos_curse 0,1,0string manu_1win 0,15h,2,1,2,8pos_curse 0,2,0string manu_2red_chrcmp ah,48hje manu_ocmp al,0dhjz open_1cmp ah,50hje manu_sjmp manu_hidnew_1: jmp new_2manu_s:win 0,65h,2,1,2,8pos_curse 0,2,0string manu_2win 0,15h,3,1,3,8pos_curse 0,3,0string manu_3red_chrcmp al,0dhjz save_1cmp ah,48hje manu_scmp ah,50hje manu_ajmp manu_hidopen_1: jmp open_2manu_n1:jmp manu_nmanu_a:win 0,65h,3,1,3,8pos_curse 0,3,0string manu_3win 0,15h,4,1,4,8pos_curse 0,4,0string manu_4red_chrcmp ah,1chjz save_2cmp ah,48hje manu_acmp ah,50hje manu_ejmp manu_hidmanu_n2:jmp manu_n1new_2: jmp newsave_1: call savesave_2: call saveasmanu_e:win 0,65h,4,1,4,8pos_curse 0,4,0string manu_4win 0,15h,5,1,5,8pos_curse 0,5,0string manu_5red_chrcmp ah,50hje manu_n2cmp ah,48hje manu_ecmp ah,1chje exitjmp manu_hidexit:call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message4mov ah,9 int 21hmov ah,1int 21hcmp al,79h jnz qcall quittq: cmp al,6ehjz quitquit: win 0,07h,0,0,24,79pos_curse 0,0,0mov ah,4chint 21hretmenu_show endpnew proc near ;新建文件pos_getpush dxcall backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message1cmp al,0dhmov ah,9int 21hmov bx,0all:mov ah,1int 21hcmp al,0dhje alllmov pathbx,alinc bxjmp allalll:win 0,3eh,15,9,17,61pop dxpos_curse 0,dh,dllea dx,pathmov ah,3chmov cx,00int 21hmov handle,axmov bx,axmov ah,3ehint 21hwin 0,3eh,1,0,23,79mov dh,1mov dl,0mov bh,0mov ah,2int 10hjmp char_getnew endpopen_2: jmp opensaveas proc near ;另存为文件 ;win 0,3eh,1,0,6,10call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message2mov ah,9int 21hmov bx,0bll:mov ah,1int 21hcmp al,0dhje blllmov pathbx,alinc bxjmp bllblll:pos_getpush dxwin 0,3eh,1,0,23,79call backdisplaypop dxpos_curse 0,dh,dllea dx,pathmov ah,3chmov cx,00int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,40hint 21hmov bx,handlemov ah,3ehint 21hcall backdisplayjmp char_getsaveas endpopen proc near ;打开文件call backdisplaywin 0,07h,15,10,17,61 win 0,24h,14,9,16,60mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message3mov ah,9int 21hmov bx,0cll:mov ah,1int 21hcmp al,13je clllmov pathbx,alinc bxjmp cllclll:win 0,3eh,1,0,23,79lea dx,pathmov ah,3dhmov al,0int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,3fhint 21hwin 0,3eh,1,23,1,79mov dh,1mov dl,0mov bh,0mov ah,2int 10hmov cx,1000sub bx,bxreplay:mov dl,bufferbxinc bxmov ah,2int 21hloop replaymov bx,handlemov ah,3ehint 21hmov dh,1mov dl,0mov bh,0mov ah,2int 10hmov cx,10mov bx,0cleapath_3:mov bl,0mov pathbx,blloop cleapath_3jmp char_getopen endpsave proc near ;保存文件pos_getpush dxwin 0,3eh,1,0,6,10call backdisplaymov ah,pathcmp ah,21hjl j_3jmp j_4j_3:win 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message2mov ah,9int 21hmov bx,0dll:mov ah,1int 21hcmp al,0dhje dlllmov pathbx,alinc bxjmp dlldlll:win 0,3eh,1,0,23,79pop dxpos_curse 0,dh,dlj_4: lea dx,pathmov ah,3chmov cx,00int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,40hint 21hmov bx,handlemov ah,3ehint 21hcall backdisplayjmp char_getsave endpsavedisplay proc nearpush axpush bxpush cxpush dxpush dsmov ax,0002hint 33hmov bx,0dmov cx,3840dloop1:mov ax,0b800hmov ds,axmov dl,ds:bxmov ax,datamov ds,axmov bakbx,dlinc bxloop loop1mov ax,0001hint 33hpop dspop dxpop cxpop bxpop axsavedisplay endpbackdisplay proc nearpush axpush bxpush cxpush dxpush dsmov bx,0dmov cx,3840dloop11:mov ax,datamov ds,axmov dl,bakbxmov ax,0b800hmov ds,axmov ds:bx,dlinc bxloop loop11pop dspop dxpop cxpop bxpop axretbackdisplay endpquitt proc near ;退出call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message2mov ah,9int 21hmov bx,0qll:mov ah,1int 21hcmp al,0dhje qlllmov pathbx,alinc bxjmp qllqlll:win 0,07h,15,10,17,61win 0,3eh,14,9,16,60call backdisplaylea dx,pathmov ah,3chmov cx,00int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,40hint 21hmov

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论