《汇编语言课设文本编辑器》由会员分享,可在线阅读,更多相关《汇编语言课设文本编辑器(55页珍藏版)》请在金锄头文库上搜索。
1、汇编语言课程设计 说明书学 院: 软件学院 专 业: 软件工程 学生姓名: 马江涛 学 号: 13314011744 题 目: 文本编辑器 指导教师: 陈够喜 潘广贞 杨剑 马巧梅 2016 年 1 月目录目录摘 要 .I一、课程设计的目的 - 1 -11设计的目的- 1 -1.2 设计的内容 - 1 -二、设计方案的论证 - 2 -2.1 开发背景 - 2 -2.2 程序设计的意义 .- 2 -2.3设计思路 .- 2 -三、设计的实现过程 - 3 -3.1 总体设计方案 .- 3 -3.2 实现过程 .- 3 -3.3 数据定义 - 4 -3.4模块设计 .- 6 -四、调试运行及结果分析
2、 - 9 -4.1 运行结果 - 9 -4.2 结果分析 .- 12 -五、测试及问题探讨 .- 13 -5.1程序测试 - 13 -六、课设总结与体会 .- 16 -七、参考文献 .- 17 -附录 .- 18 -摘摘 要要文本编辑器在我们的日常生活中使用非常频繁,是我们工作当中不可或缺的工具。我们经常使用的文本编辑器有微软的记事本和 Microsoft Word。但是本次课程设计我使用了 8086 汇编语言实现了 DOS 下的简易文本编辑器,虽然与平时使用的文本编辑器相比功能比较简单,也不够完善。但是旨在考察汇编语言的运用以及软件的实现过程。本次设计以设计思路为主介绍简易文档编辑器的设计实
3、现程,对其设计原理进行一定的阐述,并且分模块对其中较为重要的子程序进行讲解,并且附上运行结果及汇编源程序。关键字关键字: 文本编辑器、汇编语言、DOS 一、课程设计的目的一、课程设计的目的1 11 1设计的目的设计的目的掌握汇编语言的使用,掌握 BIOS、DOS 功能调用的使用方法,以及对汇编语言程序设计的过程有较深刻的理解。1.21.2 设计的内容设计的内容本次设计主要包括一下内容:1. 美观且易于操作的界面;2. 在文本编辑区可以随意输入字符;3. 可以使用 Backspace 键对光标的前一个字符删除;4. 实现了光标上移、下移、左移、右移;5. 实现了下拉菜单以及弹出式菜单;6. 可以
4、实现屏幕的上卷和下卷;11 二、二、设计方案的论证设计方案的论证2.12.1 开发背景开发背景本次开发主要是在微机原理与接口技术这门课学习完成之后,通过做一些实用的小软件考察自己的学习情况。并且熟悉汇编语言开发程序的过程。2.22.2 程序设计的意义程序设计的意义由于信息化的普遍,所以文本编辑器在我们工作中也是必不可少的,所以我选择了开发文本编辑器,不只为人们带来了便利,同时也能锻炼自己开发思路,熟悉汇编语言开发过程,以及提高软件开发水平。常见的有 Windows 下的记事本,Mac OS X 下的文本编辑,Linux 下的 vi、emacs、gedit、DOS 下的 edit 等。本次设计类
5、似于 DOS 下的 edit。2.32.3 设计思路设计思路本程序主要利用 BIOS 功能调用设计编辑器的菜单和编辑窗口,以及光标的定位与获取。利用 DOS 功能调用实现字符的读取与输出,以及对按键的识别。通过对光标以及字符输出来控制删除以及上下左右键的控制。三、设计的实现过程三、设计的实现过程3.13.1 总体设计方案总体设计方案程序利用模块化设计方法,对每个要实现的功能都设计成子程 序,方便使用。程序中具体模块如图 3-1。主程序绘制界面按键判断子菜单绘制功能的实现displaydis_edit图 3-1 程序关系3.23.2 实现过程实现过程程序通过对 BIOS 和 DOS 的功能调用实
6、现了对窗口、菜单、字 符输入输出、按键识别等功能。程序整体利用了模块化的程序设 计方法,把每个功能模块都分成子程序来分别调用。程序中主要 用到了以下子程序: display(显示菜单栏); dis_edit(显示编辑窗口); dis_file(显示文件菜单); dis_text(显示文本菜单); key_back(backspace 删除字符); key_down(光标向下); key_left(光标向左); key_up(光标向上); key_right(光标向右); key_pgup(菜单的循环选择); ok_exit(退出); open(子菜单显示及控制);3.33.3 数据定义数据定义
7、程序中要显示的字符串都事先在数据段 DS 和附加段 ES 中定义 好了,由于功能调用的需要所以把数据定义在了数据段和附加段 中。以下是程序中用到数据的定义: data segment s db File View Text About$f1 db Open,10,13,Exit,10,13,$ f2 db Clear$ i db 0 b db 0 buff db 1200 dup(?),$ printf db “Cant open the File$“ mss db Massage$ ab1 db About Edit$ ab2 db GaoHaiFeng$ ab3 db C1141$ ab4
8、 db 2013-6-22$ q1 db 543589796$ data endseata segment s1 db File$ s2 db View$ s3 db Text$ s4 db About$ s5 db Open$ s6 db Exit$ s7 db Clear$ eorr db eorr:$ok db 5bh,OK,5dh,$ design db Design:$ class db Class:$ date db Date:$ qq db QQ:$eata ends 事先定义好数据的结构可以减少程序设计中很多的麻烦。3.43.4模块设计模块设计3.4.13.4.1 绘制界面绘制
9、界面主要利用了 BIOS 功能调用绘制了两个窗口,一个是编辑区,一个是菜单栏。实现过程见图 3-4-1。开始绘制编辑区绘制菜单栏返回 主程序图 3-4-1 绘制界面3.4.23.4.2 检测按键检测按键这个模块主要是利用了 AL=0,INT 16H 来实现的,其中 AH 中 存放的是按键的扫描码,AL 中存放的是按键的 ascii 码。具体实 现过程见图 3-4-2。开始等待输入AH=0?按键处理输出字符返回 主程序否是图 3-4-2 检测按键3.4.33.4.3 子菜单绘制子菜单绘制该模块同样采用了 BIOS 功能调用设置子菜单,具体操作见图 3-4-3。开始绘制 File 子菜单绘制 Vi
10、ew 子菜单绘制 Text 子菜单绘制 About 子菜单返回 主程序图 3-4-3 绘制子菜单四、调试运行及结果分析四、调试运行及结果分析4.14.1 运行结果运行结果程序的主界面,包含有 File,View,Text,About 菜单,如图 4-1 所示。图 4-1 程序主界面按下 PgUp 键对菜单进行循环选择,绿色光带显示当前选中菜单,按任意除 PgUp 之外的按键切换到编辑区,如图 4-2 所示。图 4-2 选择菜单File 菜单包括 Open 和 Exit 子菜单,如图 4-3 所示。图 4-3 下拉菜单当光带选中 Open 或者 Exit 时按下回车键,将执行光带所选中的子菜单项
11、所对应的程序,图中为选中 Open,如图 4-4 所示。图 4-4 选择 OpenText 菜单下只有一个 Clear,用来清屏,如图 4-5 所示。图 4-5text 子菜单About 主要用来显示作者以及开发的相关信息,如图 4-6.图 4-6 选中 About4.24.2 结果分析结果分析本程序主要仿照 DOS 下的 Edit 文本编辑器,但是由于时间的关系有些功能未实现,主要实现了菜单的弹出、选择、光标的移动、文本的删除、屏幕上卷等功能。五、测试及问题探讨五、测试及问题探讨5.15.1程序测试程序测试首先是测试文本编辑区,如图 5-1.图 5-1 编辑测试然后是测试菜单弹出后文本区的内
12、容是否被抹掉,如图 5-2 和 5-3 所示。图 5-2 文本区保存图 5-3 文本区回复接下来是测试清屏菜单项,如图 5-4 和 5-5 所示。图 5-4 选中 Clear图 5-5 文本清屏六、课设总结与体会六、课设总结与体会通过本次课程设计可以说收获颇多,虽然在程序设计的过程中遇到很多问题,其中想过放弃,也曾因此彻夜不眠过,甚至有思路就立马把程序写出来。但最终都在老师的帮助和自己的努力下走过来了。做完了这个程序之后感觉对汇编的理解更加深刻了,也似乎懂得了开发底层软件的原理。虽然汇编和其它程序设计语言相比麻烦很多,但是汇编是通过对计算机底层硬件的控制来达到人机交互的效果或者是实现了人们需要
13、的功能。可以说了解了计算机大体的工作过程,为以后学习嵌入式系统以及计算机底层方面做了铺垫。七、参考文献七、参考文献1吕林涛. 微型计算机原理与接口技术.科学出版社.2011 年 5 月2王延松.微机原理与接口技术实践教程.2011 年 9 月3沈美明.IBM-PC 汇编语言程序设计.清华大学出版社.2001 年 8月附录附录源程序:源程序:data segment s db File View Text About$f1 db Open,10,13,Exit,10,13,$ f2 db Clear$ i db 0 b db 0 buff db 1200 dup(?),$ printf db “
14、Cant open the File$“ mss db Massage$ ab1 db About Edit$ ab2 db GaoHaiFeng$ ab3 db C1141$ ab4 db 2013-6-22$ q1 db 543589796$ data endseata segment s1 db File$ s2 db View$ s3 db Text$ s4 db About$ s5 db Open$ s6 db Exit$ s7 db Clear$ eorr db eorr:$ ok db 5bh,OK,5dh,$ design db Design:$ class db Class:
15、$ date db Date:$ qq db QQ:$eata ends stack segment dw 1000 dup(?) stack ends code segment assume ds:data,cs:code,ss:stack,es:eata start:mov ax,data mov ds,ax mov ax,eata mov es,ax mov ah,0 mov al,3 int 10hcall display;显示菜单栏 call dis_edit;显示编辑区mov ah,4ch int 21hdisplay proc near;显示菜单栏mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,0 mov dl,79 mov bh,70h int 10hmov ah,6 mov al,1 mov ch,0 mov cl,0 mov dh,0 mov dl,79mov bh,70h int 10hmov ah,2 mov bh,0 mov dh,0 mov dl,0 int 10hmov ah,09h