键盘输入及数据显示程序设计.docx
《键盘输入及数据显示程序设计.docx》由会员分享,可在线阅读,更多相关《键盘输入及数据显示程序设计.docx(17页珍藏版)》请在冰点文库上搜索。
键盘输入及数据显示程序设计
中北大学
汇编语言程序设计
课程设计说明书
学生姓名:
夏志广学号:
0809014245
学院:
信息与通信工程学院
专业:
自动化
题目:
键盘输入及数据显示程序设计
指导教师:
沈小林安道新职称:
副教授助教
2011年6月25日
中北大学
汇编语言程序设计实验
课程设计任务书
10/11学年第二学期
学院:
信息与通信工程学院
专业:
自动化
学生姓名:
夏志广学号:
0809014245
课程设计题目:
数据显示及键盘输入程序设计
起迄日期:
6月20日~6月25日
课程设计地点:
中北大学
指导教师:
沈小林安道新
系主任:
王忠庆
下达任务书日期:
2011年06月20日
课程设计任务书
1.设计目的:
通过键盘及显示程序设计掌握汇编语言程序在键盘输入及文本显示方面的编程过程。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
1、程序要求
(1)能识别数字键、字母键(能区分大小写);
(2)一次最多字符(含数字)输入不超过80个;
(3)依次显示键盘输入的所有可显示字符。
2、设计内容
(1)根据要求确定解决问题的编程方法;
(2)画出程序框图、设计源程序;
(3)在计算机上汇编、链接所设计的程序;
(4)按照要求调试程序,记录程序运行结果;
(5)写出设计总结报告。
设计报告主要内容包括:
设计目的与要求、系统技术指标或设计要求、程序设计方案、主要参考资料及心得体会等
3.设计工作任务及工作量的要求〔包括课程设计计算说明书、图纸、实物样品等〕:
设计总结;程序清单;程序框图;参考文献等。
【注】装订时依照封面、任务书、设计总结顺序一起装订。
课程设计任务书
4.主要参考文献:
[1]王志军.汇编语言程序设计.大连:
大连理工大学出版社,2003
[2]梁发寅,宗大华.汇编语言程序设计.北京:
人民邮电出版社,2006
[3]王爽.汇编语言.北京:
清华大学出版社,2003
[4]何超.汇编语言程序设计实验与习题解答.北京:
机械工业出版社,2010
[5]黄冰,覃伟年,黄志超.微机原理与应用.重庆:
重庆大学出版社,2003
[6]杨季文.汇编语言程序设计教程.北京:
清华大学出版社,1998
[7]罗万钧,罗方中.汇编语言程序设计.西安:
西安电子科技大学出版社
[8]吴向军,李磊,汇编语言程序设计实验辅导.西安:
西安电子科技大学出版社
[9]杨素行,刘慧银.微型计算机系统原理及应用.北京:
清华大学出版社,1995
[10]冯康.汇编语言.武汉:
武汉大学出版社
5.设计成果形式及要求:
设计总结;参考文献等。
6.工作计划及进度:
6月20日~6月21日
6月22日~6月22日
6月23日~6月24日
6月25日~6月25日
调研、资料收集;
设计方案确定,设计程序
程序调试、程序必须调试通过。
撰写总结、设计报告答辩
系主任审查意见:
签字:
年月日
一、设计目的
1、通过程序设计和调试,加深对字符串程序设计的认识,掌握其调试方法;
2、通过键盘及显示程序设计掌握汇编语言程序在键盘输入及文本显示方面的编程过程;
3、学会DOS中关于显示功能调用的用法;
4、领会修改显存方法显示字符。
二、程序设计要求
(1)能识别数字键、字母键(能区分大小写);
(2)一次最多字符(含数字)输入不超过80个;
(3)依次显示键盘输入的所有可显示字符。
三、编程思路
串(String)即数据串,是指存放在连续内存中的一组数据,通常表现为字节(或字)数组,串操作指令具有以下共性。
1)源串:
地址由DS:
SL表示。
2)目的串:
地址由ES:
DI表示。
3)自动修改地址:
每次数据操作后,SI和DI自动递增或递减,取决于操作的数据类型(字节、字或双字)以及DF的值。
若DF=0,则SI和DI自动增加1、2或4;否则减1、2或4。
可以使用CLD或STD指令设置DF。
4)计数器:
使用重复前缀时,用CX显示数据个数,每重复一次操作,CX减1。
从键盘输入一串字符串,通过指令STRINGDB80DUP(?
)来设置一次最多字符(含数字)输入不超过80个,能识别数字键、字母键。
要使程序能够识别字母键的大小写,必须通过ASCII码来寻址识别。
依次显示键盘输入的所有可显示字符,当用户按回车键时,输入结束。
然后通过显示器显示输入的字符。
三、程序框图
五、程序清单:
DSEGSEGMENT
MAXDB80
ACTDB?
STRINGDB80DUP(?
)
ALPHABETDB
NUMBERDB
OTHERDB
CRLFDB
DSEGENDS
;-----------------------------------------------------------------------------------------------------
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,,DS:
DSEG
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:
MOVBX,0
MOVSI,0
MOVDI,0
INPUT:
MOVAH,1;输入一个字符
INT21H
CMPAL,0DH;是回车符吗?
JEDISP
CMPAL,30H;其值>数字0吗?
JAENEXT1
OTHER:
INCDI;是其他字符?
JMPSHORTINPUT
NEXT1:
CMPAL,39H
JANEXT2
INCSI;是数字字符
JMPSHORTINPUT
NEXT2:
CMPAL,41H;其值<字母A吗
JAENEXT3
JMPSHORTOTHER;是其他字符
NEXT3:
CMPAL,5AH;其他>字母Z吗
JANEXT4
INCBX;是字母字符A~Z
JMPSHORTINPUT
NEXT4:
CMPAL,.61H;其值<字母a吗?
JAENEXT5
JMPSHORTOTHER;是其他字符?
NEXT5:
CMPAL,7AH;其值<字母z吗?
JASHORTOTHER;是其他字符
INCBX;是字母字符a~z
JMPSHORTINPUT
DISP:
LEADX,ALPHABET
CALLDISPLAY
LEADX,NUMBER
MOVBX,SI
CALLDISPLAY
LEADX,OTHER
MOVBX,DI
CALLDISPLAY
RET
MAINENDP
;---------------------------------------------------------------------------------------
DISPLAYPROCNEAR
MOVAH,O9H;显示字符串功能调用
INT21H
CALLBINIHEX
LEADX,CRLF
MOVAH,09H
INT21H
RET
DISPLAYENDP
;--------------------------------------------------------------------------------------------------
BINIHEXPROCNEAR
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVDL,BL
ANDDL,OFH
ADDDL,30H
CMPDL,3AH
JLPRINT_IT
ADDDL,07H
PRINT_IT:
MOVAH,02H
INT21H
DECCH
JNZROTATE
RET
BINIHEXENDP
CSEGENDS
ENDTSTART
六、程序调试及运行结果分析
1.确定源程序的存放目录
建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建:
通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。
2.建立ASM源程序
建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。
在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“EDIT.COMC:
\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。
图1 文本编辑器EDIT的编辑窗口
窗口标题行显示了EDIT程序的完整路径名。
紧接着标题行下面的是菜单行,窗口最下面一行是提示行。
菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。
如果键入EDIT命令时已带上了源程序文件名(C:
\ASM\HELLO.ASM),在编辑窗口上部就会显示该文件名。
如果在键入EDIT命令时未给出源程序文件名,则编辑窗口上会显示“UNTITLED1”,表示文件还没有名字,在这种情况下保存源程序文件时,EDIT会提示输入要保存的源程序的文件名。
编辑窗口用于输入源程序。
EDIT是一个全屏幕编辑程序,故可以使用方向键把光标定位到编辑窗口中的任何一个位置上。
EDIT中的编辑键和功能键符合Windows的标准。
源程序输入完毕后,用Alt-F打开File菜单,用其中的Save功能将文件存盘。
如果在键入EDIT命令时未给出源程序文件名,则这时会弹出一个“Saveas”窗口,在这个窗口中输入你想要保存的源程序的路径和文件名。
3.用MASM.EXE汇编源程序产生OBJ目标文件
源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。
具体操作如下:
方法一:
在Windows中操作
用资源管理器打开源程序目录C:
\ASM,把HELLO.ASM拖到MASM.EXE程序图标上。
方法二:
在DOS命令提示符窗口中操作
选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:
I:
>C:
<回车>
C:
>CD\ASM<回车>
C:
\ASM>MASMHELLO.ASM<回车>
操作时的屏幕显示如图2所示。
图2在DOS命令提示符窗口中进行汇编
不管用以上二个方法中的哪个方法,进入MASM程序后,都会提示让你输入目标文件名(Objectfilename),并在方括号中显示默认的目标文件名,建议输入目标文件的完整路径名,如:
C:
\ASM\HELLO.OBJ〈回车〉。
后面的两个提示为可选项,直接按回车。
注意,若打开MASM程序时未给出源程序名,则MASM程序会首先提示让你输入源程序文件名(Sourcefilename),此时输入源程序文件名HELLO.ASM并回车,然后进行的操作与上面完全相同。
图3有错误的汇编过程例子
如果没有错误,MASM就会在当前目录下建立一个HELLO.OBJ文件(名字与源文件名相同,只是扩展名不同)。
如果源文件有错误,MASM会指出错误的行号和错误的原因。
图3是在汇编过程中检查出两个错误的例子。
在这个例子中,可以看到源程序的错误类型有两类:
警告错误(WarningErrors)。
警告错误不影响程序的运行,但可能会得出错误的结果。
此例中无警告错误。
严重错误(SevereErrors)。
对于严重错误,MASM将无法生成OBJ文件。
此例中有两个严重错误。
在错误信息中,园括号里的数字为有错误的行号(在此例中,两个错误分别出现在第6行和第9行),后面给出了错误类型及具体错误原因。
如果出现了严重错误,你必须重新进入EDIT编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。
4.用LINK.EXE产生EXE可执行文件
在上一步骤中,汇编程序产生的是二进制目标文件(OBJ文件),并不是可执行文件,要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把OBJ文件转换为可执行的EXE文件。
具体操作如下:
方法一:
在Windows中操作
用资源管理器打开源程序目录C:
\ASM,把HELLO.OBJ拖到LINK.EXE程序图标上。
方法二:
在DOS命令提示符窗口中操作
选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入LINK命令:
I:
>C:
<回车>
C:
>CD\ASM<回车>
C:
\ASM>LINKHELLO.OBJ<回车>
操作时的屏幕显示如图4所示。
图4把OBJ文件连接成可执行文件
不管用以上二个方法中的哪个方法,进入LINK程序后,都会提示让你输入可执行文件名(Runfile),并在方括号中显示默认的可执行文件名,建议输入可执行文件的完整路径名,如:
C:
\ASM\HELLO.EXE〈回车〉。
后面的两个提示为可选项,直接按回车。
注意,若打开LINK程序时未给出OBJ文件名,则LINK程序会首先提示让你输入OBJ文件名(ObjectModules),此时输入OBJ文件名HELLO.OBJ并回车,然后进行的操作与上面完全相同。
如果没有错误,LINK就会建立一个HELLO.EXE文件。
如果OBJ文件有错误,LINK会指出错误的原因。
对于无堆栈警告(Warning:
NOSTACKsegment)信息,可以不予理睬,它不影响程序的执行。
如链接时有其它错误。
须检查修改源程序,重新汇编、连接,直到正确。
5.执行程序
建立了HELLO.EXE文件后,就可以直接在DOS下运行此程序,如下所示:
C:
>HELLO〈回车〉
C:
>
程序运行结束后,返回DOS。
如果运行结果正确,那么程序运行结束时结果会直接显示在屏幕上。
如果程序不显示结果,我们如何知道程序是否正确呢?
例如,这里的HELLO.EXE程序并未显示出结果,所以我们不知道程序执行的结果是否正确。
这时,我们就要使用TD.EXE调试工具来查看运行结果。
此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。
七、心得体会
一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程。
“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。
我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过这次课程设计,本人在多方面都有所提高。
通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次汇编程序设计的实际训练从而培养和提高学生独立工作能力,巩固与扩充了汇编语言等设计等课程所学的内容,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。
在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补,以达到最优的学习效果。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,虽然已经做过几次,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后老师的辛勤指导下,终于游逆而解。
同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!