汇编语言课程设计文本方式下字处理程序的设计与实现.docx
- 文档编号:11651421
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:57
- 大小:503.32KB
汇编语言课程设计文本方式下字处理程序的设计与实现.docx
《汇编语言课程设计文本方式下字处理程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计文本方式下字处理程序的设计与实现.docx(57页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计文本方式下字处理程序的设计与实现
学号:
课程设计
题目
文本方式下字处理程序的设计与实现
学院
计算机科学与技术
专业
计算机科学与技术
班级
计算机班
姓名
指导教师
2012
年
1
月
3
日
课程设计任务书
学生姓名:
专业班级:
计算机班
指导教师:
工作单位:
计算机科学与技术学院
题目:
文本方式下字处理程序的设计与实现
初始条件:
理论:
完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:
完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
理解键盘接口的工作原理,掌握BIOS键盘I/O功能,掌握复杂内存数据结构的定义和管理方法。
具体的设计任务及要求:
1)清晰且易于操作的用户界面;动态显示光标的当前位置;
2)在文本编辑区接受并保存输入信息;
3)光标上移,下移,左移,右移;
4)允许删除当前光标后的字符;
5)将编辑文本存盘,读出并显示硬盘中的指定文件。
(任选)
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:
1)《IBM—PC汇编语言程序设计实验教程》3.3节
2)《IBM—PC汇编语言程序设计(第2版)》9.1节
时间安排:
设计安排一周:
周1、周2:
完成系统分析及设计。
周3、周4:
完成程序调试,和验收。
周5:
撰写课程设计报告。
指导教师签名:
2012年1月3日
系主任(或责任教师)签名:
2012年1月3日
课程设计报告书
1.问题描述
1.1问题描述
理解键盘接口的工作原理,掌握BIOS键盘I/O功能,掌握复杂内存数据结构的定义和管理方法;用汇编语言设计一个简单的文本编辑软件。
1.2主要任务
具体的设计任务及要求:
(1).清晰且易于操作的用户界面;动态显示光标的当前位置;
(2).在文本编辑区接受并保存输入信息;
(3).光标上移,下移,左移,右移;
(4).允许删除当前光标后的字符;
(5).将编辑文本存盘,读出并显示硬盘中的指定文件。
1.3测试数据
编写好源代码后,进行调试,主要调试数据有:
新建一个文本,输入适当的内容,保存;打开一个已经保存的文件。
2设计中使用的关键技术和方法
2.1使用的关键技术
编程中主要使用的汇编技术有:
(1).汇编语言的中的各种寻址
(2).存储等命令及BIOS中断和DOS中断调用
(3).窗口的建立
(4).功能键的定义
(5).子程序的调用等。
2.2调试环境
主要用到的调试工具有:
windos环境下的DOS、MASM汇编器、LINK链接软件、DEBUG软件。
3.设计方案说明
包括模块层次图和各模块说明(功能定义、入口参数和出口参数等),详细的算法描述(流程图或伪代码),主要数据结构的定义和说明,程序界面的描述
3.1模块层次图及模块说名
3.1.1模块层次图
3.1.2模块说明
子程序和宏简要说明:
子程序名
功能说明
mainprocfar
主程序
windowprocnear
创建一个编辑窗口
editprocnear
编辑输入的字符
menu_showprocnear
显示菜单,定义各一、级二菜单
newprocnear
新建文件
openprocnear
打开文件
saveprocnear
保存文件
saveasprocnear
文件另存为
fuc_keyprocnear
定义各功能键子程序
win3procnear
显示系统当前日期
savedisplayprocnear
保存输入的文本
fontprocnear
提取系统当前时间
win4procnear
显示行//列
setcolorprocnear
设置编辑区的背景颜色
commandprocnear
显示功能菜单command
helpprocnear
显示帮助信息
quittprocnear
退出前处理程序
宏名
宏功能说明
read_chrmacro
读取字符宏定义,返回的al=字符码,ah=扫描码
stringmacrop1
显示字符串信息
winmacroopr1,opr2,opr3,opr4,opr5,opr6
建立窗口,al=opr1上卷行数、bh=opr2卷入行属性、ch=opr3左上角行号、cl=opr4左上角列号、dh=opr5右下角行号、dl=opr6左下角列号
pos_cursemacroop1,op2,op3
设置光标位置,bh=op1页号、dh=op2行、dl=op3列
pos_getmacro
读取光标位置,bh=页号
3.2算法描述
本次程序流程图如下
3.3数据结构说明
本程序数据结构主要为数据段
程序数据段:
datasegment
datasegment;定义数据段
flagdw?
color_1db19dup(''),'White_to_Black',13,10,'$'
color_2db19dup(''),'White_to_Red',13,10,'$'
color_3db19dup(''),'White_to_Blue',13,10,'$'
menudb'FileOptionsHelp$'
messdb'F1-FileF2-OptionsF10-helpEsc-quit','$'
manu_1db'New',13,10,'$'
manu_2db'Open',13,10,'$'
manu_3db'Save',13,10,'$'
manu_4db'Saveas',13,10,'$'
manu_5db'Exit','$'
manu_6db10dup(''),'Color',13,10,'$'
manu_8db21dup(''),'Command',13,10,'$'
manu_9db21dup(''),'About',13,10,'$'
handledw?
mess1db'Pleaseinputafilename:
','$'
mess2db'Pleaseinputasavingfilename:
','$'
mess3db'Pleaseinputanopenfilename:
','$'
mess4db'Thefilehasnotsaved!
Saveitnow?
(Y/N):
','$'
pathdb50dup(0),'$'
bufferdb2000dup(?
)
bakdb3850dup(0)
linedb?
rowdb?
chardb?
help_mas0db'AboutThisEditor$'
help_mas1db'************************************************$';帮助内容
help_mas2db'*Thanksforusingthiseditor!
*$'
help_mas3db'*----------------------------------------------*$'
help_mas4db'*MS-DOSEditor*$'
help_mas5db'*CopyrightPowerbyPP2012.1*$'
help_mas6db'************************************************$'
com_mess0db'EditCommands$'
com_mess1db'------------------------------------------------------------$'
com_mess2db'Home-Movetothestartofthecurrentline.$'
com_mess3db'End-Movetotheendofthecurrentline.$'
com_mess4db'Delete-Deletethecharacterthatthecursorison.$'
com_mess5db'Backspace-Deletethecharactertotheleftofthecursor.$'
com_mess6db'Ctrl+Up-Scrolluponeline.$'
com_mess7db'Ctrl+down-Scrolldownoneline.$'
com_mess8db'Ctrl+Left-Moveleftoneword.$'
com_mess9db'Ctrl+right-Moverightoneword.$'
com_mess10db'Enter-Startanewline.$'
com_mess11db'Tab-Movethecursortonexttabstop.$'
datedb'DATE:
0000/00/00$';调用日期
hangliedb'Lin:
000/Com:
000$';行//列
timedb'TIME:
00:
00:
00$';调用时间
dataends
3.4程序界面的描述
主程序界面:
3.5程序功能的概述
本程序主要为模拟记事本功能,参考教材8,9,10,11章和实验教程3.3节。
该编辑程序要求具备的功能:
清晰且易于操作的用户界面,在出现的界面,中输入任意文本内容,利用DEL键、BACKSPACE键、HOME键、END键、上下左右光标键对文本进行全屏幕编辑。
按F1键激活菜单FILE,下移光标,选择SAVE,输入文件名,文本的存盘。
按F10激活帮助,按ESC键退出帮助。
可以选择FILE菜单的其他菜单项,完成打开文件,文字的插入、删除、修改文本行、列号的动态显示等功能。
主要使用说明:
进入主界面,在编辑区输入任意的内容,而后按下F1进行功能选择,主要选择功能有:
new、open、save、saveas、exit;new表示新建一个文本,open可以打开硬盘上的一个已经保存的文件,读取该文件,并将内容显示在文本编辑区内,save可以保存当前文件,选择后需输入文件名字,文件可以是绝对和相对路劲,若在文件名字中不输入文件的路径,则默认将文件保存在和程序同一目录下,saveas功能和save差不多,exit退出编辑,若文件还未保存,则提示是否保存,若选择是,则输入相关文件名进行保存,若选择否,则不保存文件退出。
按下F2后,进入options功能选项,主要功能为改变编辑区的背景颜色,选择相关的功能:
White_to_Black可是文本背景颜色变成黑色;White_to_Red可是文本背景颜色变成红色;White_to_Blue可是文本背景颜色变成蓝色。
按下F10后进入此文本编辑器说明,其中command主要是本文本编辑器使用说明,about主要为本文本编辑器作者信息说明。
4.测试及评估
4.1调试中的问题
经过对汇编语言的键盘输入、文件保存、文件打开、编辑窗口的建立、窗口颜色设置等相关知识的研究后,即进行程序的设计和编码;将原程序编好后,经过汇编,有如下几个问题:
Ø最开始在属性栏现实编辑器的功能选项时,功能菜单不能和相关功能名字很好的对其,即功能名字和功能菜单显示的坐标不相对应,经过仔细研究分析,最终通过控制菜单显示的位置控制宏pos_curse,通过控制菜单显示的页号、行号、列号以及标记菜单区大小的winmacroopr1,opr2,opr3,opr4,opr5,opr6,通过控制菜单区开始的位置和结束位置。
控制其显示大小,二者结合控制,最终将菜单显示和功能名称显示对齐。
Ø在激活某个功能菜单时,还未按下enter进行真正的选择时,该功能应该用不同的样式标记,本程序采用的是激活时为黑底黄字,但是由于程序的疏忽和未考虑完善,在激活该功能时其他功能菜单不见了,经过分析,由于程序在激活某个功能时未将其他功能也显示出来,如:
…win0,06h,4,1,4,7
pos_curse0,4,0
stringmanu_4…
此时菜单manu_4被激活,而其他菜单未被显示其中06h控制显示字为黑底黄字,经过自习分析,最终将上述程序改为:
…win0,80h,5,1,5,7
pos_curse0,5,0
stringmanu_5
win0,06h,4,1,4,7
pos_curse0,4,0
stringmanu_4…
这样就可以同时显示其他功能菜单了,其中80h控制文字为灰底黑字。
Ø在修改上述问题之后,随意输入一段文本,保存,当选择save功能后,进入提示输入名子对话框,当此时发现文本编辑区内的内容不见了,经过仔细分析和查阅相关资料,发现由于在进入对话框时,文本内容没有相关程序进行显示,因此最终通过相关资料,在每次提示对话框时,调用backdisplayprocnear子程序以显示背景的文本内容。
4.2主要功能的调试
进入主界面,选择File,即按下F1后的界面:
选择Options功能,即按下F2后并选择Color的界面:
选择相关的功能:
White_to_Black可是文本背景颜色变成黑色;White_to_Red可是文本背景颜色变成红色;White_to_Blue可是文本背景颜色变成蓝色。
选择Help共能后,即按下F10后的界面:
选择help的Commond界面:
选择help的About界面:
运行生成的ppeditor.exe文件,进入上述的主界面;在其中输入:
HelloWorld!
而后点击保存,输入名字:
test.txt,将上述内容保存在当前文件夹下面,主要操作图:
在当前文件夹下有test.txt文件
打开test.txt文件,内容如下:
可见保存的内容与程序输入内容一样!
在当前目录下新建一个test2.txt文件,内容为:
WelcomeToComputerScienceAndTechnologyOfWHUT!
,用其打开:
可见打开的文件与test2.txt文件内容一样!
修改上述打开的文件内容为:
WelcomeToComputerScienceOfWHUT!
,然后保存,结果为:
可见保存后的文件内容与文本编辑区内容不太一样,这也是程序存在的问题之一!
5.设计心得
包括设计中遇到的问题及思考,对该程序进一步改进扩展的设想。
5.1感受和体会
《IBM-PC汇编语言程序设计》这门课程是计算机专业一门基础性学科,重要性可见一斑,学好这门课程对以后学习具有深远的影响。
而课程设计便是对学习效果的检验。
课程设计不仅可以锻炼我们独立思考问题、解决问题的能力,而且可以培养我们的整体性思维的能力;通过课程设计,使我了解了很多汇编语言应用的知识,比如:
键盘输入、中断处理程序BOISINT16H和INT21H、文件打开与保存等。
虽然一开始对于此次课设的题目一头雾水,不知从何下手,但是最后通过查阅课本相关内容和实验手册的相关内容,最后渐渐明白;键盘输入程序的实现依赖于PC机中对键盘盘管理的中断机构和8255可编程控制外围接口芯片,在8255芯片中有两个端口PA(60H)和PB(61H),在这个硬件的基础上,系统在BIOS中一配置了键盘服务功能,因此用户可以实现键盘输入;当在键盘上“按下”或“放开”一个键时,如果键盘的中断允许位(21H端口第一位为0),就会产生一个类型为9的中断,并转入BIOS的键盘中断处理程序,键盘上每个键对应于一个扫描码,从01到83,通过扫描码便可以唯一确定是哪个键改变了状态;中断处理程序BOISINT16H和INT21H有相关的功能实现字符的输入;此外要在显示器上显示输入的内容,就必须了解显示器的工作和控制,主要参数为:
字符显示的行列、显示的颜色等,通过BIOS的显示中断INT10H的相关参数设置,从而达到控制光标的位置,读取光标的位置,选择显示页,清屏和卷屛;写入一个新的文件或者用同一个文件名重写一个旧文件时,首先要建立文件并赋予给它一个属性,如果DOS发现要建立的文件已经存在时,原来的文件将被破坏,通过movah3chleadxpathnmint21h可以实行在硬盘上写入一个文件,其中pathnm为文件的名字缓存区名;打开文件(3DH)要检查文件名是否合法,文件是否有效,利用movah3dhleadxpathnmint21h可以实现读取一个文件,其中pathnm为文件的名字缓存区名。
这次课程设计,我明白了对于编写程序,解题的思路尤为重要。
在编写程序之前,如果没有比较清晰的思路,根本不可能编出好的程序。
就算马马虎虎的编出来,程序的逻辑性、健壮性、完善性、合理性也不会很强。
在编程之前,我们应反复研究题目要求,对题目涉及的情况进行比较充分的分析,以便编写出更加符合题意的程序;其次要充分考虑各种临界情况,对一些错误的输入进行处理。
因此在我们编程序之前一定要做好充分的准备,首先要理清自己的思路,然后再将思路分划成几个模块,逐块的写好算法,最后再将所有的模块有机的联系起来,组成一个完整的程序。
在成功通过编译的情况下,对程序运行的结果进行系统的分析,检验其正确性,如果有错误,应立即去分析源程序的逻辑错误,直到得到正确的结果。
在这次课程设计的过程中,我也遇到了很多难题。
在种种的困难中,我明白了在编写程序时要有耐心。
如果你没有耐心,即使再好的思路也不会得到很好的表达,特别是在调试的过程中,对于各种各样的错误,要特别的有耐心去自习分析原因,特别是一些基本的语法错误,不能一看到错误很多就乱了阵脚,更不能轻易的放弃,半途而废。
通过此次课程设计,再次对汇编语言的基础知识和一些实际操作只是有了一定的了解,对汇编语言这样的直接操作机器硬件感到无比的神奇和浓厚的兴趣。
5.2对程序改进的想法
本程序有很多不完善的地方,例如:
在文本编辑区通过上下键移动光标时,移动后的光标坐标的列并没有改变、删除一个字符时,必须将光标放在该字符上、用delete删除一个字符时,该字符所占的空间依然存在、输入的保存文件名一旦输入不能修改、部分字符保存后存在乱码等等。
对于初学者,存在问题很正常,由于时间有限,不能很好的查阅相关资料来完善程序,修改相关的BUG,因此,在课后争取查阅相关资料来完善这个程序,修改上述BUG,力争实现和记事本相类似的功能。
6.附录源程序
本次源程序如下:
read_chrmacro;读取字符的宏定义
movah,0;返回的al=字符码,ah=扫描码
int16h
endm
;---------------------------------------------------------------------
stringmacrop1;显示字符串信息
movah,9
leadx,p1
int21h
endm
;---------------------------------------------------------------------
winmacroopr1,opr2,opr3,opr4,opr5,opr6;建立窗口宏定义
movah,06h;0pr1=页号,opr2=卷入行属性
moval,opr1;opr3=左上角行号,opr4=左上角列号
movbh,opr2;opr5=右上角行号,opr6=右上角列号
movch,opr3
movcl,opr4
movdh,opr5
movdl,opr6
int10h
endm
;---------------------------------------------------------------------
pos_cursemacroop1,op2,op3;定义光标位置
movah,2;op1=页号,0p2=行号,0p3=列号
movbh,op1
movdh,op2
movdl,op3
int10h
endm
;---------------------------------------------------------------------
pos_getmacro;读取光标位置
movah,03h
movbh,0
int10h
endm
;---------------------------------------------------------------------
;*********************************************************************
datasegment;定义数据段
flagdw?
color_1db19dup(''),'White_to_Black',13,10,'$'
color_2db19dup(''),'White_to_Red',13,10,'$'
color_3db19dup(''),'White_to_Blue',13,10,'$'
menudb'FileOptionsHelp$'
messdb'F1-FileF2-OptionsF10-helpEsc-quit','$'
manu_1db'New',13,10,'$'
manu_2db'Open',13,10,'$'
manu_3db'Save',13,10,'$'
manu_4db'Saveas',13,10,'$'
manu_5db'Exit','$'
manu_6db10dup(''),'Color',13,10,'$'
manu_8db21dup(''),'Command',13,10,'$'
manu_9db21dup(''),'About',13,10,'$'
handledw?
mess1db'Pleaseinputafilename:
','$'
mess2db'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 文本 方式 字处理 程序 设计 实现