编辑: 学冬欧巴么么哒 2019-07-17
课程设计报告 ( 2009--2010年度第二学期) 名称: 汇编语言课程设计 题目:模拟实现WORD中"查找/替换"功能 院系控制与计算机工程学院 班级: 计算0803 学号:

1081220329 学生姓名: 周琳 指导教师: 苏林萍 设计周数: 一周 成绩: 日期:2010年 7月9日 课程设计的目的与要求

1、目的: 提高汇编能力 进一步掌握和利用汇编语言进行程序设计 初步学会使用汇编软件 更加深刻的了解汇编语言 掌握书写程序设计开发文档的能力

2、题目要求 程序结构的主要功能有三个: 文件的打开与读写 文件中单词的查找 文件中单词的替换 设计正文 需求分析 使用汇编语言实现 需要文件的打开,读写等操作 字符串的查找 字符串的替换 输入输出的界面提示 总体设计 设计思路 总体上设计三个大的子程序,包括文件的打开与读入、字符串的查找、字符串的替换 系统功能结构 总体上能够实现文件的各种操作(打开、读入显示、重写、关闭),以及字符串的查找替换 技术路线或实现方法 文件操作:利用Dos 系统功能21h中断 功能号:2h(读写打开) 3fh(读文件)42h(文件指针的移动) 40h(写文件)3eh(关闭文件) 字符串查找:文件中的内容读入缓存,通过缓存中字符的比较与记录来实现 字符串替换:在查找基础上实现 详细设计 模块划分、流程图 总流程图 图1 总流程图 查找流程图 图2 查找流程图 替换流程图 图3 替换流程图 数据分析与定义 cr equ 0dh lf equ 0ah ;

回车换行的重定义 n equ

24 dup(' ') l1 byte n,MENU ',cr,lf;

把整个菜单作为一个字符串 byte n,cr,lf byte n,1,OPEN FILE *',cr,lf byte n,2,SEARCH WORD *',cr,lf byte n,3,REPLACE WORD *',cr,lf byte n,0,EXIT *',cr,lf byte n,cr,lf byte n,' Enter your choice(0-3): $' go db 'Please strike any key',cr,lf,'$' j_tab word ch0,ch1,ch2,ch3 ;

地址表,每个表2字节,为语句标号 message1 db 'Please input the file name: $' message2 db 0dh,0ah,'Enter the word you want to replace: $' message6 db 0dh,0ah,'Choice Wrong!$' message7 db 0dh,0ah,'Enter the word you want to search: $' ;

查询提示 message8 db 0dh,0ah,'The number of word you searched is $' ent db 0dh,0ah,'$' filename db 50,?,50 dup(?) len dw 所读文件的实际长度 haddle dw ? buffer db 1024h dup(读缓冲区 error1 db 0dh,0ah,'Can not open file',0dh,0ah,'$' error2 db 0dh,0ah,'Reading error!',0dh,0ah,'$' schword db 10,?,10 dup(查询字符串 foundcount dw 查询处数 rpword db 10,?,10 dup(?) ;

替换字符串 differnum db 记录两个字符串的大小差别 pos dw ? 界面设计 图4 菜单 编码实现(源程序,有必要注释) start proc far ;

主程序 mov ax,data mov ds,ax mov es,ax mov ax,2 ;

bios屏显功能调用,黑白文本显示方式 int 10h again:clear 00,00,18h,4fh menudisp 05,00,l1;

宏调用显示菜单 mov ah,1 int 21h ;

接受用户选择 and al,3 xor ah,ah mov bx,ax shl bx,1 jmp j_tab[bx] ;

利用跳转表 ch0: call close mov ah,4ch int 21h ch1: lea dx,ent call disp lea dx,message1 call disp lea dx,filename ;

接收文件名 从第三个字节开始 DS:DX指向缓冲区第一个字节 mov ah,0ah int 21h call file mov ah,7 ;

等待按键操作 int 21h ;

call keydisp mov ah,7 int 21h jmp again ch2: lea dx,ent call disp call search lea dx,ent call disp lea dx,buffer call disp mov ah,7 ;

等待按键操作 int 21h jmp again ch3: lea dx,ent call disp call replace clear 00,00,24h,79h scursor 00,00 lea dx,buffer call disp mov ah,7 ;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题