汇编语言实现文本编辑器
bak
db 3850 dup(0) ;保存缓冲区的内容
2、本程序主要使用的子程序说明
Wind ;创建窗口的子程序
edit ;进行文本文本编辑
win4 ;动态显示光标位置,先保存光标位置,最后一行输出 行列数 改变了光标位置
Open
;输出文本内容
Save
;保存文本内容
clean_path ;清除保存路径的内容
read_chr macro
;读取字符宏定义
mov ah,0
int 16h
endm
win4
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书
huixian macro mov ah,1 int 21h endm xianshi macro mov ah,2 int 21h endm readf macro mov ah,3fh int 21h endm openf macro mov ah,3dh
N down
N
Y
光标下移 Row + 1
left N
right
N Home
Y
光标左移
line - 1
Y
光标右移
line + 1
Y
光标移到本行首位
line =0
N End
Y光标移到本行首位
line =79
Enter N
Backspace N
Delete N
F1 new N
F2 open N
F3 save
三、 详细的算法描述
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书
1、本程序主要使用的数据结构如下:
path db 40 dup(0),'$' ;保存文件路径
buffer db 1840 dup(0) ,'$'
;保存文本内容,作为一个缓存区
line db ?
;保ቤተ መጻሕፍቲ ባይዱ列号
row
db ? ;保存行号
课程设计任务书
学生姓名: 黄威 专业班级:计算机科学与技术 0705
指导教师: 李春林
工作单位:计算机科学与技术学院
题目: 文本方式下字处理程序的设计与实现
初始条件:
理论:完成了《汇编语言程序设计》课程,对微机系统结构和 80 系列指令系统有了 较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的 4 个实验,熟悉了汇编语言程序的设计环境并 掌握了汇编语言程序的调试方法。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等
具体要求) 理解键盘和显示器接口的工作原理,掌握 BIOS 键盘和显示器中断调用的使用方
法,掌握复杂内存数据结构的定义和管理方法。具体的设计任务及要求: 1)清晰且易于操作的用户界面;动态显示光标的当前位置; 2)在文本编辑区接受并保存输入信息; 3)光标上移,下移,左移,右移; 4)允许删除当前光标前的字符; 5)将编辑文本存盘,读出并显示硬盘中的指定文件。(任选)
3、函数调用关系:
主函数 main
Wind
Win3 和 wind4
各个键的 功能模块
curs_get
edit
menu_show
func_key
new open save save_as exit
home end backspace delete F10 help
4、程序中主要使用的宏汇编以及出口、入口的参数说明
本科生课程设计成绩评定表
班级:计算机 0705 班
序 号
姓名:黄威 学号:0120710340522
评分项日
満分
实得分
1 学习态度认真,遵守纪律。
20
2 设计结果。
40
3 设计报告规范(包括设计图、设计代码)
另存文件
N F5 exit
N
Y Path = 输入的文件路径
保存文件
结束
四、 软件的测试方法和测试结果
经过测试实现用键盘上的功能键制文本编辑程序, 1、测试用例:
1. 按一下 BackSpace 键可以删除当前光标以前的字符; 2. 按一下 Delete 键可以删除当前光标之后的字符; 3. 按一下 Home 键可以使光标跳转到当前行的第一列; 4. 按一下 End 键可以使光标跳转到当前行的最后一列; 5. 按一下 Enter 键可以使光标跳转到下一行的第一列; 6. 用 上下左右 键 使光标在文本框内任意移动
mov al,80d ;r * 80
mul bl
add al,ccol
;+ c
adc ah,0
pop bx
endm
edit 的程序流程图:
开始
键盘输入字符
判断键值 是功能键
Y up
N
录入字符保存,
保存字符
Y
光标上移
row - 1
刷屏,重新显示 文本界面
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书
子程序设计:把程序模块化,完成独立的功能 宏汇编设计:更像高级语言中的函数设计 INT 21H :强大的 DOS 功能调用(包括文件操作) INT 10H :显示操作,进行显示控制 INT 16H :键盘中断,控制键盘,完成对应的操作 本程序最大特点功能比较完善,由于使用较多的宏汇编是的代码量大大降 低,宏汇编从分体现代码的重用。 实现:BackSpace 删除当前光标以前的字符;
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书
学 号: 0120710340522
武汉理工大学
汇编语言课程设计
题 目 文本方式下字处理程序的设计与实现
学院
计算机科学与技术学院
专业
计算机科学与技术
班级
计算机科学与技术 0705
姓名
黄威
指导教师
李春林
2010 年 1 月 15 日
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书
(2)通过设计、编制、调试一个文本方式下字处理程序。实现一个简单的文本编辑器 的基本功能
2、 设计内容
1)清晰且易于操作的用户界面; 2)动态显示光标的当前位置; 3)在文本编辑区可以输入字符信息; 4)光标上移,下移,左移,右移,还可以回车,使用 home 键、end 键退格键; 5)允许删除当前光标前的字符; 6)将编辑文本存盘,读出并显示硬盘中的指定文件。
2、文件操作 1.按一下 new 键可以创建新文件 2.按一下 open 键可以打开已有的文件; 3.按一下 save 键可以保存当前文件 4.按一下 saveas 键可以另存为当前文件 5.按一下 exit 键可以正常退出文本编辑器 Path = 完整的文件名(默认路径) 或 Path = 完整的路径+文件名
;输入字符光标
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
;建立窗口 ;初始化 ;上或下卷的行数 ;卷入行属性 ;左上角行号 ;左下角列号 ;右上角行号 ;右下角列号
Delete 键删除当前光标之后的字符; Home 键使光标跳转到当前行的第一列; End 键使光标跳转到当前行的最后一列; Enter 键使光标跳转到下一行的第一列; 用 上下左右 键 使光标在文本框内任意移动 可以保存文件,以及打开指定路径文件,基本是一个简单的文本编辑器 文本的内容是由 buffer 定义的缓冲区保存,所以就把光标的位置换算为数组的下标, (坐标定位公式 r*80+c)进行定位操作。是每个元素都对应文本框内的一个位置起到保存 文本内容的作用。但是,文本的大小也就固定了;同时:当插入时就会覆盖原有的字符。 这样就很难实现插入操作。为此我想:只要略微改变一下当前的数据结构就可以实现插入 和扩充文本,或者专门为插入计算一个插入的函数也可实现。
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 endm string macro p1 mov ah,9 lea dx,p1 int 21h endm
int 10h endm
;读光标位置 ;页号 ch/cl:开始/结束行;dh/dl 当前行
buffer_locate macro rrow,ccol
;坐标定位 r*80+c 坐标在 ax 中;即行列数对应的缓冲区偏移地址 ax 中
push bx
mov ah,0d
dec rrow
mov bl,rrow
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求 请见课程设计指导书。
阅读资料: 1)《IBM—PC 汇编语言程序设计实验教程》3.3 节 2)《IBM—PC 汇编语言程序设计(第 2 版)》9.1 节
时间安排:
设计安排一周:周 1、周 2:完成系统分析及设计。 周 3、周 4:完成程序调试,和验收。 周 5:撰写课程设计报告。
光标移到下行首位
Y
row +1; line =0
Y
删除光标前的字符
row+1
Y
删除光标后的字符 row+1
Y
创建新文件
row+1
Y
Path = 输入的文件路径
打开文件
Y
Path = 输入的文件路径 保存文件
武汉理工大学计算机科学与技术学院《汇编语言》课程设计报告书