汇编语言字符图形程序实验报告Word文档下载推荐.docx
《汇编语言字符图形程序实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言字符图形程序实验报告Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
学生成绩管理
题目六:
打字练习(注:
请在自己选做的题目后打√)
技
术
参
数
1.熟悉汇编指令、宏汇编语言的编程方法
2.BIOS中断调用、系统功能中断调用方法
3.磁盘文件、及文件内容操作
要
求
题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理而设计的,是对所学课程知识较为系统的应用。
由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。
不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。
另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。
工
作
量
1.完成所选题目的软件设计;
2.课程设计说明书1000字(不包括程序源代码)左右。
划
第1次熟悉软件环境。
第2次绘制程序流程图。
第3次用编写程序。
第4次用调试运行程序。
第5次编写课程设计说明书
考
资
料
1.李敬兆8086/8088和arm核汇编语言程序设计中国科技大学出版社
2.沈美明,温冬婵编著IBM—PC汇编语言程序设计(第二版)清华大学出版社出版
3.沈美明,温冬婵,张赤红编著IBM—PC汇编语言程序设计实验教程清华大学出版社出版
指导教师签字
教研室主任签字
2010年12月17日
安徽理工大学课程设计(论文)成绩评定表
指导教师评语:
成绩:
年月日
摘要
本课程设计是通过使用汇编语言来完成的,具体实现的方法可以通过在MASM使用环境下运行,也可以通过在DOS环境下完成。
我做的课程设计是通过编写汇编语言程序,实现字符图形的显示。
元旦即将到来,所以我显示的字符是“元旦”。
在编写初期,我对字符“元旦”进行了设计,确定了每个字符所在的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
接着开始编写程序,编写完程序后,对程序进行了注释,最后调试出所要求的字符。
本程序可以在DOS环境和MASM环境下运行,要求我们熟悉BIOS中断10的各种功能。
整个课程设计的过程,是一个不断学习、不断实践的过程,从而提高了我们的编程能力和程序开发思想,也提高了我们自主学习的能力。
关键词:
字符显示,10号中断,图形,BIOS
目录
1设计目的1
2概要设计2
2.1系统总体分析2
2.2主模块框图及说明2
3详细设计4
3.1主模块及子模块说明4
3.2各模块详细设计4
4.程序调试10
4.1运行界面分析10
4.2算法的分析11
4.3调试过程及分析11
5心得体会12
5.1设计体会12
5.2系统改进12
参考文献13
1设计目的
在课程设计之前,首先要明确设计的目的。
本次课程设计的题目是字符图形显示,要求我们能够编写一个汇编程序,正确的显示所要求的字符。
这就需要我们对汇编指令有一定的了解,通过课程设计,我们能更深入的了解汇编程序的基本框架,更熟练的运用汇编指令。
在本课程设计中,还着重运用了BIOS10号中断调用及其功能,这就要求我们在这一个小模块有更深的学习。
通过课程设计,可以提高我们的动手能力,培养我们对编程及学习的兴趣。
通过编写程序使我们对指令的应用更加熟练。
同时,也使我们对masmedit软件和dos命令有了更多的学习和了解。
目的在于培养我们的自主学习能力和动手能力,提高我们的编程水平。
2概要设计
2.1系统总体分析
本程序是显示由多个字符组成的图形的程序,余姚将多个字符定义在一个字符图形表里。
字符图形表包括每个字符的ASCII码、属性以及在显示图形中的相对位移量,值得注意的是,每个字符的位置由前一个字符的位置决定。
这个字符图形表由这4个参数组成。
字符图形表中的第一个字节“94”是组成图形的字符数,编写程序时需要将每个字符的ASCII码和属性以及显示的位置放入相应的寄存器中,然后发出显示命令,党94个字符都显示出来后,我们就可以看到“元旦”的图形了。
为了清晰地看到每一个字,需要延时,程序中编写了延时子程序。
此外,程序中还有清屏子程序和移动子程序,通过适当的改变延时时间,可实现图形的移动。
2.2主模块框图及说明
字符程序的结构流程图如图2-1所示
图2-1程序流程图
3详细设计
3.1主模块及子模块说明
为了清晰地看到每一个字,需要延时,程序中编写了延时子程序DLY_QRTRPROCNEAR。
此外,程序中还有清屏子程序CLEAR_SCREENPROCNEAR和移动子程序MOVE_SHAPEPROCNEAR,通过适当的改变延时时间,可实现图形的移动。
3.2各模块详细设计
下面是整体的代码,各个子模块在程序中加以注释。
DATASEGMENT
CARDB94;
定义字符
DB02H,122,-5,3
…
DB02H,122,0,-1
CHAR_CNTDW?
POINTERDW?
LINE_ONDB?
COL_ONDB?
DATAENDS
STACKISEGMENT
DB2000DUP(?
)
STACKIENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKI
MAINPROCFAR;
定义过程
PUSHDS
SUBAX,AX;
清0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,0;
0号功能调用,设置显示模式
MOVAL,0;
显示模式的属性为320*2004色
INT10H;
10号中断调用,BIOS對螢幕及顯示器所提供的服務程式
MOVAH,0BH;
0B功能调用,设置调色板,背景色或边框
MOVBH,0;
设置颜色
MOVBL,2;
颜色
INT10H
MOVAH,0BH
MOVBH,01;
选择调色板
MOVBL,00;
调色板00
INT10H
CALLCLEAR_SCREEN;
调用清屏子程序
LEADI,CAR
MOVDH,10
MOVDL,2
CALLMOVE_SHAPE
MOVAH,8;
8号功能调用,无回显的字符的输入
INT21H;
中断21
CMPAL,71H
JZEXIT;
标志位结果为0转移
JBNEXT;
无符号数低于时转移
NEXT:
CMPAL,51H
JZEXIT
MAINENDP
CLEAR_SCREENPROCNEAR;
清屏子程序
PUSHAX;
保护现场
PUSHBX
PUSHCX
PUSHDX
MOVAH,6;
6号功能调用,初始化屏幕
清窗口
MOVCH,0;
窗口的左上角位置(0,0)
MOVCL,0
MOVDH,120;
右下角位置(200,120)
MOVDL,200
MOVBH,7;
空白区域的缺省属性
10号中断调用
POPDX;
恢复现场
POPCX
POPBX
POPAX
RET;
返回
CLEAR_SCREENENDP
DLY_QRTRPROCNEAR;
延时子程序
MOVDX,5000
D11:
MOVCX,25000
D12:
LOOPD12;
循环25000次
DECDX;
DX-1
JNZD11;
结果不为0时转移
POPDX
RET
DLY_QRTRENDP
MOVE_SHAPEPROCNEAR;
擦除子程序
PUSHAX
PUSHDI
MOVAH,0FH;
读取显示器模式
SUBCH,CH;
MOVCL,[DI]
INCDI;
DI+1
MOVCHAR_CNT,CX
MOVPOINTER,DI
MOVLINE_ON,DH
MOVCOL_ON,DL
MOV_CRSR:
ADDDH,[DI+2];
Y坐标
ADDDL,[DI+3];
X坐标
MOVAH,2;
用文本坐标下设置光标位置
MOVAL,[DI];
字符
MOVBL,[DI+1];
属性或颜色
MOVCX,1;
重复输出字符的次数
MOVAH,09;
在当前光标处按指定属性显示字符
ADDDI,4
LOOPMOV_CRSR
POPDI
MOVE_SHAPEENDP
EXIT:
MOVAH,4CH;
终止当前程序并返回调用程序
INT21H
CODEENDS
ENDMAIN
4.程序调试
4.1运行界面分析
本程序可以在masm环境下运行,也可在DOS环境下运行,由于在MASM环境下操作较为简单,因此不做说明。
下面介绍在DOS环境下运行的过程。
(1)用masm命令对程序进行编译,如图4-1所示
图4-1编译程序
(2)用link命令对程序进行连接,如图4-2所示
图4-2连接程序
(3)进入debug,用命令g执行程序,结果如图4-3所示
图4-3字符图形显示
4.2算法的分析
本次设计的思想便是利用字符来拼凑一个图形,调用画图子程序循环的输出不同位置的字符,直到所需的所有字符输出完,图形也就显示出来了。
需要注意的是,每字符的位置由它前一个字符确定。
4.3调试过程及分析
本程序可以在DOS环境和MASM环境下运行,在DOS环境下运行,首先用masm命令将源程序.asm进行编译,生成.obj文件;
其次,用Link命令进行连接,产生.exe文件;
最后进入debug,用-g命令进行调试运行。
值得注意的是,各个阶段产生的目标文件的文件格式不同,因此在输入命令的时候,要注意文件的后缀名。
若是在MASMEDIT软件下运行,则只需点击相应的功能按钮即可。
用MASMEDIT软件运行的界面友好,视觉效果相对于DOS界面要好看。
5心得体会
5.1设计体会
这次课程设计总体来说做得比较顺利。
在设计前期,我翻阅了很多资料,加深了对汇编语言的学习,基本掌握了怎样运用汇编语言去设计字符图形,并制作出相应的流程图。
程序中主要用到显示输出管理10号中断调用及其多种功能。
我就这方面进行了深入的学习,掌握了各个功能的运用。
在设计前期,我查找了相关书记和资料,更加深入的学习了汇编指令和中断调用的知识,能够得以应用,并根据流程图,设计出程序的大概框架;
在设计的中期,我将各个模块细化,并编写了子程序,并将主程序和子程序进行衔接;
在设计的后期,我认真的检查了程序调用和参数传递等细节,保证程序的正确性。
通过课程设计,我领悟到我们应该有一个缜密的编程思想,在编程过程中,首先要对整体程序有一个初步的框架构想,然后根据所学的知识,活用指令,能够使程序更加精简,这就要求我们对指令要熟悉。
在日常生活中,可以通过编写一些小的程序,来熟悉指令的使用和记忆。
在设计过程中也遇到了一些困难,通过和老师、同学的讨论和学习,最终程序得以完成,所以,在完成每一件事情时,不能忽略团队的力量,应当吸取各人的优势,来使自己更加完善。
5.2系统改进
虽然本程序基本满足了本次课程设计的要求,但其中依然有很多需要改进的地方。
可以通过对BIOS10号中断的深入学习,使得界面更加美化。
还有代码的简化,可以从平时的编程或者学习中,找到更好的方法来优化程序。
程序中的子程序只是字符显示的部分功能,可以加以改进,使系统更加完善
参考文献
[1]李敬兆.8086/8088和基于ASM核汇编语言程序设计(第二版).合肥:
中国科学技术大学出版社,2008
[2]沈美明,温冬婵.IBM—PC汇编语言程序设计(第二版).北京:
清华大学出版社出版,2007
[3]沈美明,温冬婵,张赤红.IBM—PC汇编语言程序设计实验教程.北京:
清华大学出版社出版,2007
[4]李敬兆.8086/8088和基于ASM核汇编语言程序设计实验教材及习题解答.合肥:
[5]钱晓捷.新版汇编语言程序设计[M].北京:
电子工业出版社,2006
[6]卜艳萍,周伟.汇编语言程序设计教程.北京:
清华大学出版社,2007
[7]宋人杰,牛斗.汇编语言程序设计.北京:
清华大学出版社,2008
[8]王爽.汇编程序设计语言.北京: