微机原理课程设计 字符显示.docx
- 文档编号:12109154
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:15
- 大小:277.95KB
微机原理课程设计 字符显示.docx
《微机原理课程设计 字符显示.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计 字符显示.docx(15页珍藏版)》请在冰点文库上搜索。
微机原理课程设计字符显示
某某学院
微机原理课程设计
2013级电气工程及其自动化专业班级
题目字符图形显示
姓名学号
指导教师职称
二О一三年12月13日
摘要
本课程设计是通过使用汇编语言来完成的,具体实现的方法可以通过在MASM使用环境下运行,也可以通过在DOS环境下完成。
我做的课程设计是通过编写汇编语言程序,实现字符图形的显示。
在编写初期,我对字符“SPORT”进行了设计,确定了每个字符所在的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
接着开始编写程序,编写完程序后,对程序进行了注释,最后调试出所要求的字符。
本程序可以在DOS环境和MASM环境下运行,要求我们熟悉BIOS中断10的各种功能。
整个课程设计的过程,是一个不断学习、不断实践的过程,从而提高了我们的编程能力和程序开发思想,也提高了我们自主学习的能力。
关键词:
字符显示,10号中断,图形,BIOS
一、字符图形显示的基本原理
字符图形显示可以在DOS环境下完成,编写完程序后分析并理解每条程序的意思,并解释主要程序的意思,最后调试出所要求的字符。
在程序编写前,我首先对自己显示的图形进行了设计,确定了每个数字相对于前一个数字的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
本次实验实验的编写环境是MASM,编译、链接也是在该环境下实现的。
程序的运行我使用的是DOS环境。
通过参考网上的一些原程序,要编写好该程序,首先应该对BIOS的中断熟悉,因此程序编写前,我先认真学习了该BIOS中断的有关功能。
二、设计方案
在课程设计之前,首先要明确设计的目的。
本次课程设计的题目是字符图形显示,要求我们能够编写一个汇编程序,正确的显示所要求的字符。
这就需要我们对汇编指令有一定的了解,通过课程设计,我们能更深入的了解汇编程序的基本框架,更熟练的运用汇编指令。
设计一个字符图形程序,用汇编语言实现在DOS调用下显示实现字符图形“SPORT”,背景颜色的ASCII码为03H,字符属性为122,纵坐标相对于光标的初始位置为-2,横坐标性对于光标的初始位置为1.;有清屏和延时功能,并能实现按任意键退出。
三、硬件设计
首先,定义了一个字符图形表“SPORT”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。
显示完整个字符图形表共需要102行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。
此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的0则表示纵向不发生移动。
同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。
此为数据段的内容。
然后定义了一个堆栈段,开辟了大小为2000字节的空间。
接下来则是代码段的内容,包括初始化DS的内容、设置图形方式、设置背景颜色、设置彩色调板、清屏、延时、按任意键退出等内容。
四、软件设计
4.1主模块及子模块说明
一开始,我定义了一个字符图形表“SPORT”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。
显示完整个字符图形表共需要102行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。
此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的0则表示纵向不发生移动。
同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。
此为数据段的内容,接下来定义了一个堆栈段,开辟了大小为2000字节的空间。
然后设计了代码段的内容。
首先定义了一个名为MAIN的段间调用过程,过程中包括初始化了DS的内容,设置300*200彩色图形方式,设置背景颜色为0BH,显示出来的颜色为绿色,设置彩色调板为0BH,显示的颜色为绿色,再调用清屏子程序CLEAR_SCREEN和延时子程序MOVE_SHAPE,以及任意键退出子程序EXIT,MAIN过程结束。
然后编写了清屏子程序CLEAR_SCREEN,它是一个段内调用的过程。
接着编写了延时子程序MOVE_SHAPE,它也是一个段内调用的过程。
再接下来则是一段读取字符图形的程序和一段按任意键即可退出程序的程序,最后整个代码段结束。
4.2各模块详细设计
源代码分析
源代码如下:
DATASEGMENT
CARDB102;定义字符图形表
DB03H,122,-2,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,1,-4
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,7
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,4,6
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,6
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,0,1
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,1,0
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,1,1
DB03H,122,1,1
DB03H,122,1,1
DB03H,122,1,1
DB03H,122,0,5
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,-1,0
DB03H,122,0,-1
DB03H,122,0,-1
DB03H,122,0,3
DB03H,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
PUSHAX
MOVAX,DATA;初始化DS
MOVDS,AX
MOVAH,0;设置图形方式
MOVAL,3
INT10H
MOVAH,0BH;设置背景颜色
MOVBH,0
MOVBL,2
INT10H
MOVAH,0BH;设置彩色调板
MOVBH,01
MOVBL,00
INT10H
CALLCLEAR_SCREEN;调用清屏子程序
LEADI,CAR
MOVDH,10
MOVDL,2
CALLMOVE_SHAPE;调用延时子程序
MOVAH,8
INT21H
CMPAL,71H
JZEXIT
JBNEXT
NEXT:
CMPAL,51H
JZEXIT
MAINENDP
CLEAR_SCREENPROCNEAR;清屏子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0
MOVDH,120
MOVDL,200
MOVBH,7
INT10H
POPDX
POPCX
POPBX
POPAX
RET
CLEAR_SCREENENDP
DLY_QRTRPROCNEAR;延时子程序
PUSHCX
PUSHDX
MOVDX,5000
D11:
MOVCX,25000
D12:
LOOPD12
DECDX
JNZD11
POPDX
POPCX
RET
DLY_QRTRENDP
MOVE_SHAPEPROCNEAR;读取字符图形程序PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAH,0FH
INT10H
SUBCH,CH
MOVCL,[DI]
INCDI
MOVCHAR_CNT,CX
MOVPOINTER,DI
MOVLINE_ON,DH
MOVCOL_ON,DL
MOV_CRSR:
ADDDH,[DI+2]
ADDDL,[DI+3]
MOVAH,2
INT10H
MOVAL,[DI]
MOVBL,[DI+1]
PUSHCX
MOVCX,1
MOVAH,09
INT10H
POPCX
ADDDI,4
LOOPMOV_CRSR
POPDI
POPDX
POPCX
POPBX
POPAX
RET
MOVE_SHAPEENDP
EXIT:
MOVAH,4CH;按任意键退出
INT21H
CODEENDS;程序结束
ENDMAIN
4.23调试过程及分析编写完程序以后,将此保存为“pic.asm”,编译,显示的如图4-2:
图4-2编译界面
按确定键,生成目标文件pic.obj。
执行无错误提示后,连接,显示的如图4-3:
图4-3连接界面
按下确认键,生成可执行文件pic.exe。
在光标处输入debugpic.exe,回车,显示的效果图如图4-4:
图4-4效果图
五、设计体会
回顾起这次的汇编课程设计,至今我忍感慨颇多。
的确,从理论到实践,在汇编课程设计的日子里,苦多于甜,但是,实践出真知,在实践中我学习到了很多很多的东西,这是单靠老师课堂上授课和自己私下里看书本所学不到的。
在没实践之前,我可能只是仅仅知道这是一句定义字符图形属性的语句,实践之后才知道它代表的意义还具体含义。
参考文献
[1]李敬兆.《8086/8088和arm核汇编语言程序设计》.合肥:
中国科技大学出版社
[2]沈美明,温冬婵编著.《IBM—PC汇编语言程序设计(第二版)》.北京:
清华大学出版社出版
[3]沈美明,温冬婵,张赤红编著.《IBM—PC汇编语言程序设计实验教程》.北京:
清华大学出版社出版
[4]《微型计算机接口技术及应用》,2000.刘乐善,华中科技大学出版社.
[6]《微机原理与接口技术》,2008.钱晓捷主编.第4版,机械工业出版社.
[7]《80X86汇编语言程序设计》,2001.沈美明等编著.清华大学出版社
[8]《微型计算机系统原理及应用》,2004.杨素行等编著.第2版,清华大学出版社.
[9]《微机原理与接口技术》,2010.刘兆瑜主编.国防科技出版社.
指导老师评语:
设计总结:
在编程过程中,首先要对整体程序有一个初步的框架构想,然后根据所学的知识,活用指令,能够使程序更加精简,这就要求我们对指令要熟悉。
在日常生活中,可以通过编写一些小的程序,来熟悉指令的使用和记忆。
虽然本程序基本满足了本次课程设计的要求,但其中依然有很多需要改进的地方。
可以通过对BIOS10号中断的深入学习,使得界面更加美化。
还有代码的简化,可以从平时的编程或者学习中,找到更好的方法来优化程序。
程序中的子程序只是字符显示的部分功能,可以加以改进,使系统更加完善
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理课程设计 字符显示 微机 原理 课程设计 字符 显示