《2022年2022年汇编语言实现文本编辑器 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言实现文本编辑器 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、创建时间: 2010-1-14 21:50:00 汇编语言课程设计题目文本方式下字处理程序的设计与实现学院计算机科学与技术学院专业计算机科学与技术班级计算机科学与技术0705课程设计任务书题目: 文本方式下字处理程序的设计与实现初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和80 系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4 个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。要求完成的主要任务 :(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)理解键盘和显示器接口的工作原理,掌握 BIOS 键
2、盘和显示器中断调用的使用方法,掌握复杂内存数据结构的定义和管理方法。具体的设计任务及要求:1)清晰且易于操作的用户界面;动态显示光标的当前位置;2)在文本编辑区接受并保存输入信息;3)光标上移,下移,左移,右移;4)允许删除当前光标前的字符;5)将编辑文本存盘,读出并显示硬盘中的指定文件。(任选)在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。阅读资料:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - -
3、- - - - 创建时间: 2010-1-14 21:50:00 1) IBMPC 汇编语言程序设计实验教程3.3 节2) IBMPC 汇编语言程序设计(第2 版) 9.1 节时间安排:设计安排一周:周1、周 2:完成系统分析及设计。周 3、周 4:完成程序调试,和验收。周 5:撰写课程设计报告。指导教师签名:年月日系主任(或责任教师)签名:年月日一、 系统描述1、目的(1)掌握计算机汇编语言的使用。学完汇编课程,理解和掌握键盘和显示器接口的工作原理,掌握 BIOS 键盘和显示器中断调用的使用方法,掌握复杂内存数据结构的定义和管理方法。(2)通过设计、编制、调试一个文本方式下字处理程序。实现一
4、个简单的文本编辑器的基本功能2、设计内容1)清晰且易于操作的用户界面;2)动态显示光标的当前位置;3)在文本编辑区可以输入字符信息;4)光标上移,下移,左移,右移,还可以回车,使用home键、end键退格键;5)允许删除当前光标前的字符;6)将编辑文本存盘,读出并显示硬盘中的指定文件。3、开发平台所使用的系统: Windows XP 程序开发工具: Masn for Windows 6.0 集成实验开发环境序设计语言: IBM-PC 汇编语言二、 文本编辑译系统的概要设计文本编辑程序要实现简单的文本编辑器基本功能。1. 设计一个友好,易于操作的界面,界面可仿照windows记事本,但 wind
5、ows 记事本的菜单项不好制作,所以将主要功能说明制作到边框,方便使用即可。并且实现在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 某一固定区域内可以显示当前光标的坐标。2. 实现用键盘上的功能键制编辑文本,例如:按一下 BackSpace键可以删除当前光标以前的字符;按一下 Delete 键可以删除当前光标之后的字符;按一下 Home 键可以使光标跳转到当前行的第一列;按一
6、下 End 键可以使光标跳转到当前行的最后一列;按一下 F1 键可以激活 File的五个功能键( new,open,save ,save as,exit) ;按一下 Enter 键可以使光标跳转到下一行的第一列;按一下 F1 键可以显示帮助信息用 上下左右 键 使光标在文本框内任意移动3. 根据程序思想设计程序流程图,按照程序流程图完成实现各个模块的功能三、 详细的算法描述1、本程序主要使用的数据结构如下: path db 40 dup(0),$ ;保存文件路径 buffer db 1840 dup(0) ,$ ;保存文本内容,作为一个缓存区 line db ? ;保存列号 row db ?
7、;保存行号bak db 3850 dup(0) ;保存缓冲区的内容2、本程序主要使用的子程序说明Wind ; 创建窗口的子程序edit ;进行文本文本编辑win4 ; 动态显示光标位置,先保存光标位置,最后一行输出行列数 改变了光标位置Open ;输出文本内容Save ;保存文本内容clean_path ;清除保存路径的内容3、函数调用关系:主函数 main WindeditWin3和 wind4 各个键的 curs_get menu_show func_key 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
8、- - - - - - 第 3 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 功能模块new open save save_as exit home end backspace delete F10 help win4 4、程序中主要使用的宏汇编以及出口、入口的参数说明read_chr macro ;读取字符宏定义 mov ah,0 int 16h endm huixian macro mov ah,1 int 21h endm xianshi macro mov ah,2 int 21h endm readf macro mov ah
9、,3fh int 21h endm openf macro mov ah,3dh mov al,0 int 21h endm jianlif macro mov ah,3ch mov cx,00 int 21h endm writef macro mov ah,40h int 21h endm closef macro mov ah,3eh int 21h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 创建时间: 2010-
10、1-14 21:50:00 endm string macro p1 ;输入字符光标 mov ah,9 lea dx,p1 int 21h endm win macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口 mov ah,07h ; 初始化 mov al,opr1 ; 上或下卷的行数 mov bh,opr2 ; 卷入行属性 mov ch,opr3 ; 左上角行号 mov cl,opr4 ; 左下角列号 mov dh,opr5 ; 右上角行号 mov dl,opr6 ; 右下角列号 int 10h endm curs_locate macro op1,op2,o
11、p3 ;定光标位置 mov ah,2 mov bh,op1 ; 页号 mov dh,op2 ; 行号 mov dl,op3 ; 列号 int 10h endm curs_get macro ;读光标位置 mov ah,03h mov bh,0 int 10h ; 页号ch/cl :开始/ 结束行; dh/dl 当前行endm buffer_locate macro rrow,ccol ; 坐标定位 r*80+c 坐标在 ax 中; 即行列数对应的缓冲区偏移地址 ax 中 push bx mov ah,0d dec rrow mov bl,rrow mov al,80d ;r * 80 mul
12、bl add al,ccol ;+ c adc ah,0 pop bx endm 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 edit的程序流程图:N Y Y N Y N Y N Y N Y N Y Y N Y N 开始键盘输入字符判断键值是功能键录入字符保存,保存字符up光标上移row - 1 down光标下移Row + 1 光标左移line - 1 光标右移line +
13、 1 光标移到本行首位line =0 光标移到本行首位line =79 删除光标前的字符row+1 光标移到下行首位row +1 ; line =0 leftrightHomeEndEnterBackspace刷屏,重新显示文本界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 Y N Y N Y N Y N Y N Y N 四、 软件的测试方法和测试结果经过测试实现用键盘上的
14、功能键制文本编辑程序,1、测试用例:1. 按一下 BackSpace键可以删除当前光标以前的字符;2. 按一下 Delete 键可以删除当前光标之后的字符;3. 按一下 Home 键可以使光标跳转到当前行的第一列;4. 按一下 End 键可以使光标跳转到当前行的最后一列;5. 按一下 Enter 键可以使光标跳转到下一行的第一列;6. 用 上下左右键 使光标在文本框内任意移动2、文件操作1. 按一下 new 键可以创建新文件2. 按一下 open 键可以打开已有的文件;F1 newDeleteF2 openF3 saveF4 save_asF5 exit删除光标后的字符row+1 创建新文件r
15、ow+1 Path = 输入的文件路径打开文件Path = 输入的文件路径保存文件Path = 输入的文件路径另存文件Path = 输入的文件路径保存文件结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 3. 按一下 save 键可以保存当前文件4. 按一下 saveas 键可以另存为当前文件5. 按一下 exit 键可以正常退出文本编辑器Path = 完整的文件名(默认路径
16、)或 Path = 完整的路径 +文件名程序运行结果如图:运行界面如下:输入字符后如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 按 F1 键后如下:选择 exit ,如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - -
17、 - - - - 创建时间: 2010-1-14 21:50:00 按 ENTER 后如下:同意保存,输入y;然后输入文件名:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 确定,按 enter 后退出:五、 小结与体会通过本次汇编课程设计,加深了对汇编理论知识的理解,真正地把汇编的理论知识应用于实践,更好的掌握了汇编技术的基本方法。在掌握基本指令的基础上,更加了解子程序结构
18、设计、宏汇编设计、I/O 中断、显示器的控制、基本的文件操作。子程序设计:把程序模块化,完成独立的功能宏汇编设计:更像高级语言中的函数设计INT 21H :强大的 DOS 功能调用(包括文件操作)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 创建时间: 2010-1-14 21:50:00 INT 10H :显示操作,进行显示控制INT 16H :键盘中断,控制键盘,完成对应的操作本程序最大特点功能比较完善,由于使用较多的
19、宏汇编是的代码量大大降低,宏汇编从分体现代码的重用。实现: BackSpace删除当前光标以前的字符;Delete 键删除当前光标之后的字符;Home 键使光标跳转到当前行的第一列;End 键使光标跳转到当前行的最后一列;Enter 键使光标跳转到下一行的第一列;用 上下左右键 使光标在文本框内任意移动可以保存文件,以及打开指定路径文件,基本是一个简单的文本编辑器文本的内容是由 buffer定义的缓冲区保存,所以就把光标的位置换算为数组的下标,(坐标定位公式 r*80+c )进行定位操作。 是每个元素都对应文本框内的一个位置起到保存文本内容的作用。但是,文本的大小也就固定了;同时:当插入时就会覆盖原有的字符。这样就很难实现插入操作。为此我想:只要略微改变一下当前的数据结构就可以实现插入和扩充文本,或者专门为插入计算一个插入的函数也可实现。六、 参考文献1、IBM-PC 汇编语言程序设计(第2 版)清华大学出版社沈美明温冬婵 著2/、IBM-PC 汇编语言程序设计实验教程(第 2 版)清华大学出版社沈美明温冬婵张赤红 著名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -
限制150内