专业:网络工程。
班级学号102055211
姓名:赫前进。
指导老师:郭芸俊。
提交日期:2012/12/30
一、实验目的。
1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知分析问题、解决问题的能力。
2、通过查找、运用设计资料,完成工程设计所必备的基本训练。
3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。
二、实验内容和要求。
利用dos系统功能调用和bios功能调用设计—有菜单栏的编辑窗口,在该窗口中可以实现文本的输入,利用del键、backspace键、home键、end键、上下左右光标键,实现对输入文本的全屏幕编辑。使用彩色组和背景颜色来设计界面颜色,利用dos系统功能调用的磁盘文件存取技术实现文件的“新建”、“打开”、“保存”、“另存为”与“退出”。
三、分析设计。
本次课程设计设计了一个简易的文本编辑器,该编辑器通过利用dos系统功能调用和bios功能调用设计一有菜单栏的编辑窗口,在该窗口中可以实现文本的输入。该文本编辑器利用bios功能调用中的10h中断类型,调用06号功能,实现了设置窗口背景的功能;调用dos功能中的09号功能,实现显示菜单信息字符串的功能;调用bios中的键盘i/o中断调用中的0号功能;从键盘读取字符,通过对上,下,左,右,光标间以及del,ins,backspace,end,home键的扫描码的判断,结合10h中中断的02号,03号功能确定光标的相应移动,从而实现对输入文本的全屏幕编辑;利用dos系统功能调用中的文件管理功能,如建立文件,打开文件,读文件,写文件,实现对文件的操作。
运行可执行文件,输入文本,利用del键、home键、backspace键、home键、上下左右光标键对输入文本的全屏幕编辑,按f1键激活菜单,下移光标,选择保存,输入文件名。也可以选择file菜单的其他菜单项,它们的功能均可实现。按f10键激活帮助,按esc键退出帮助。
实验流程图:
四、部分源程序。
1) 主程序设计模块:该设计模块主要通过调用子程序,创建了初始化界面,更有利于用户操作。
code segment
main proc far ;主程序定义开始。
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
call wind ;用创建窗口子程序
call edit ;调用设置菜单子程序。
retmain endp
2) 创建窗口子程序设计模块:该部分程序**主要实现了创建窗口的功能。在show处调用函数显示菜单等。。
在弹出菜单后再判断是不是方向键或者enter键,跳到相应的地方并做出相应的处理。
wind proc near创建窗口子程序。
win 0,3eh,1,0,24,79 ;定义窗口背景。
win 1,1fh,0,0,0,79 ;定义菜单项背景。
win 0,1fh,24,0,24,79 ;定义状态栏背景。
show显示菜单位置及内容。
pos_curse 0,0,1
mov ah,9
lea dx,menu
int 21h
show_2显示状态栏位置及内容。
pos_curse 0,24,1 ;定义光标位置。
mov ah,9
lea dx,mass_1
int 21h ;状态栏提示信息显示。
call win3;调用设置时间子程序。
call win4;调用设置行列子程序。
pos_curse 0,1,0;置光标位置。
mov row,dh
mov line,dl;保存行列。
wind endp
3)字符宏定义模块:字符定义模块主要定义了字符的读取、输入、从键盘读入等功能。
red_chr macro ;读取字符宏定义。
mov ah,0
int 16h ;中断调用从键盘读入字。
endm string macro p1 ;输入字符串宏定义。
mov ah,9
lea dx,p1
int 21h
endm4) 输入字符串宏定义模块:该部分主要通过调用09号功能,实现了字符串的输入功能以及从键盘输入文字的光标位置等。
string macro p1 ;输入字符串宏定义。
mov ah,9
lea dx,p1
int 21h
endm5) 建立窗口宏定义:该部分主要通过调用06号功能,实现了创建窗口的功能。
win macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口宏定义。
mov ah,06h
mov al,opr1
mov bh,opr2
mov ch,opr3
mov cl,opr4
mov dh,opr5
mov dl,opr6
int 10h
endm6)光标位置宏定义模块:该模块通过调用2号功能,实现了对文本编辑器中光标的定义。
pos_curse macro op1,op2,op3定义光标位置。
mov ah,2
mov bh,op1
mov dh,op2
mov dl,op3
int 10h
endm7)显示光标宏定义:
pos_get macro
显示光标位置。
mov ah,03h
mov bh,0
int 10h
状态栏显示。
manu_2 db ' open ',13,10,'$
manu_3 db ' s**e ',13,10,'$
manu_4 db ' s**e as ',13,10,'$
manu_5 db ' exit
handle dw ?
message1 db ' please input file name:',提示信息。
message2 db ' please input s**e file name:',提示信息。
message3 db ' please input open file name:',提示信息。
message4 db ' the file is not s**e! s**e it now? (y/n提示信息。
path db 50 dup(0),'
buffer db 2000 dup(?)
bak db 3850 dup(0)
line db ?
row db ?
char db ?
help_mas1 db ' welcome use editor帮助内容。
help_mas2 db 'please the first active help! $
help_mas3 db 'good lucky!!
help_mas4 db
help_mas5 db 'press f1 to active file. $
help_mas6 db 'you can use down cursor key to choose the fuction $'
help_mas7 db 'press f10 to show the help esc to quit$'
date db 'today调用日期。
hanglie db行/列。
data ends
8)数据段定义模块设计:
data segment ;定义数据段。
menu db 'file edit help $'标题。
mass_1 b 'f1 active file f10 active help','
五、测试结果。
六、心得体会。
通过这段时间的课程设计,我们学习到很多知识,明白了其实认真学习一门语言并不困难,关键是所追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。查找资料真的很关键,一开始我们一点思路也没,然后在网上参考了人家的设计,也找了很多种设计的办法,最后摸索出一点门道。
这次的程序训练培养了我们实际分析问题、编程和动手能力,使我们掌握了程序设计的基本技能,提高了我们适应实际,实践编程的能力。最后,我们明白了编程是需要细心和耐心的,特别是在调试的时候,查找错误是很麻烦的,所以我们要养成一个良好的编程习惯,注意标明注释。。程序设计是一件很复杂的事情,需要我们耐心的对待。
在程序设计过程中有一些我们没学过的知识,但大部分我们学过,那些没学过的知识我们只要看下书就很容易弄懂。本次课程设计,提高了我用汇编理论分析问题和解决问题的能力,还有更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。
本组成员共三人:102055204 王永超,102055210 高华,102055211 赫前进)
汇编课程设计报告
课程设计。目录。一概述 1 1.1课程设计的目的 4 1.2课程设计的要求 5 1.3小结 6 二总体方案设计 7 2.1主要设计思想 7 2.2程序设计思想及流程图 7 2.3 datedisplay子程序流程图 8 2.4 timedisplay子程序流程图 9 2.5小结 10 三详细设计 1...
汇编课程设计报告
汇编语言与接 术课程设计报告。题目计时器。系部计算机学院。专业计算机科学与技术年级 10级 学生姓名钟霖。学号 100510119 目录。1 设计目的 1 2 总体设计 5 3 详细设计 6 3.1 程序具体功能 6 3.2 函数功能 6 3.3 调试分析 7 4 源程序和运行结果 8 4.1 源程...
中南大学汇编课程设计报告
中南大学。微机原理课程设计报告。信号发生器功能程序设计。第一章设计题目 要求及目的 3 1.设计题目要求3 2.设计目的3 第二章总体设计方案3 1.设计思想3 2.设计方案4 3.总体设计流程图5 第三章硬件设计5 1.硬件环境要求5 2.所用芯片及其功能说明6 3.硬件接线图9 第四章程序设计1...