微机原理.docx

上传人:b****6 文档编号:7091722 上传时间:2023-01-17 格式:DOCX 页数:11 大小:117.84KB
下载 相关 举报
微机原理.docx_第1页
第1页 / 共11页
微机原理.docx_第2页
第2页 / 共11页
微机原理.docx_第3页
第3页 / 共11页
微机原理.docx_第4页
第4页 / 共11页
微机原理.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

微机原理.docx

《微机原理.docx》由会员分享,可在线阅读,更多相关《微机原理.docx(11页珍藏版)》请在冰豆网上搜索。

微机原理.docx

微机原理

 

郑州航空工业管理学院

微机原理课程设计说明书

 

2012级电气工程及其自动化专业1206972班级

 

题目字符图形显示

姓名学号120697226

指导教师王义琴职称讲师

 

二О一二年十二月十三日

摘要

本次课程设计是通过编写汇编语言程序,实现字符图形的显示,具体实现的方法可以通过在MASM使用环境下运行,也可以通过在DOS环境下完成。

元旦即将到来,所以我显示的字符是“元旦”。

在编写初期,我对字符“元旦”进行了设计,确定了每个字符所在的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。

接着开始编写程序,编写完程序后,对程序进行了注释,最后调试出所要求的字符。

本程序可以在DOS环境和MASM环境下运行,要求我们熟悉BIOS中断10的各种功能,因此程序编写前,我先认真学习了该BIOS中断的有关功能。

万事开头难,一旦了解了设计此程序的原理,并在此基础上掌握相关的技术,其他的工作也就跟着展开来。

 

关键词:

字符显示,10号中断,图形,BIOS

一、设计目的

本次设计的目的主要是为了让大家进一步的学会汇编程序的编译,链接,执行操作。

深入了解利用汇编指令是如何实现对存储器及寄存器访问的,并在此基础上学会用汇编指令、伪指令、BIOS中断调用、DOS中断调用及子程序等实现相应的功能。

字符图形程序设计的重点在于加强学生对BIOS中断10的学习,了解该中断的相应功能,感受中断调用给汇编程序带来的方便。

通过编写汇编语言,实现字符图形的显示,让学生加深了对汇编程序理论课程的理解,更加了解汇编语言的应用,并且能够按要求编写程序,从而提高学生的汇编语言知识,更进一步地了解了汇编语言,通过本次设计,可以让学生深刻体会到中断调用的功能,可以提高我们的动手能力,培养我们对编程及学习的兴趣。

通过编写程序使我们对指令的应用更加熟练。

同时,也使我们对MASMDIT软件和DOS命令有了更多的学习和了解。

目的在于培养我们的自主学习能力和动手能力,提高我们的编程水平。

二、字符图形显示的基本原理

本程序是显示由多个字符组成的图形的程序,将多个字符定义在一个字符图形表里。

字符图形表包括每个字符的ASCII码、属性以及在显示图形中的相对位移量,应注意的是,每个字符的位置由前一个字符的位置决定。

这个字符图形表由这4个参数组成。

字符图形表中的第一个字节“94”是组成图形的字符数,编写程序时需要将每个字符的ASCII码和属性以及显示的位置放入相应的寄存器中,然后发出显示命令,94个字符都显示出来后,我们就可以看到“元旦”的图形了。

为了清晰地看到每一个字,需要延时,程序中编写了延时子程序。

此外,程序中还有清屏子程序和移动子程序,通过适当的改变延时时间,可实现图形的移动。

三、软件设计

1、总体设计

首先,定义了一个字符图形表“元旦”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。

显示完整个字符图形表共需要102行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。

此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的0则表示纵向不发生移动。

同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。

此为数据段的内容。

然后定义了一个堆栈段,开辟了大小为2000字节的空间。

接下来则是代码段的内容,包括初始

化DS的内容、设置图形方式、设置背景颜色、设置彩色调板、清屏、延时、按任意键退出等内容。

2、主模块及子模块说明

主模块是一个主程序,在这个程序中首先设置显示方式、背景颜色、调色板,然后调用清屏子程序CLEAR-SCREEN,为接下来的图形显示做好准备,然后设置好初始行列坐标后,再调用移动子程序MOVE-SHAPE来显示字符,然后调用INT21h的7h号中断功能,使得从键盘输入q字符时,退出程序运行。

第一个子模块是CLEAR-SCREEN子程序,他的功能是清理屏幕,为接下来字符显示准备条件,第二个子模块是MOVE-SHAPE,它通过循环和行列坐标的控制来依次显示字符图形,为功能实现部分。

3、程序流程图设计

4、各模块源程序设计

下面是整体的代码,各个子模块在程序中加以注释。

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号功能调用,初始化屏幕

MOVAL,0;清窗口

MOVCH,0;窗口的左上角位置(0,0)

MOVCL,0

MOVDH,120;右下角位置(200,120)

MOVDL,200

MOVBH,7;空白区域的缺省属性

INT10H;10号中断调用

POPDX;恢复现场

POPCX

POPBX

POPAX

RET;返回

CLEAR_SCREENENDP

DLY_QRTRPROCNEAR;延时子程序

PUSHCX

PUSHDX

MOVDX,5000

D11:

MOVCX,25000

D12:

LOOPD12;循环25000次

DECDX;DX-1

JNZD11;结果不为0时转移

POPDX

POPCX

RET

DLY_QRTRENDP

MOVE_SHAPEPROCNEAR;擦除子程序

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI

MOVAH,0FH;读取显示器模式

INT10H

SUBCH,CH;清0

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;用文本坐标下设置光标位置

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

四、程序调试

本程序可以在MASM环境下运行,也可在DOS环境下运行,由于在MASM环境下操作较为简单,因此不做说明。

下面介绍在DOS环境下运行的过程。

1、用MASM命令对程序进行编译

2、用link命令对程序进行连接

3、进入debug,用命令g执行程序

本次设计的思想便是利用字符来拼凑一个图形,调用画图子程序循环的输出不同位置的字符,直到所需的所有字符输出完,图形也就显示出来了。

需要注意的是,每字符的位置由它前一个字符确定。

本程序可以在DOS环境和MASM环境下运行,在DOS环境下运行,首先用MASM命令将源程序.ASM进行编译,生成.OBJ文件;其次,用Link命令进行连接,产生.exe文件;最后进入debug,用-g命令进行调试运行。

值得注意的是,各个阶段产生的目标文件的文件格式不同,因此在输入命令的时候,要注意文件的后缀名。

若是在MASMEDIT软件下运行,则只需点击相应的功能按钮即可。

用MASMEDIT软件运行的界面友好,视觉效果相对于DOS界面要好看。

五、心得体会

选择这个题目时,第一感觉是不知道从哪里下手。

以前所做的汇编实验,多是对存储器,寄存器的内容进行处理,而这次字符图形显示。

看着老师给的提示,我也不是很明白这个程序的最终成果到底是什么样子的。

定义字符列表是干什么用的呢?

以前从没有碰到过关于定义列表的东西啊?

带着这些疑问,我先是问了老师,老师说用很多个字符拼成一个图形,所以要定义一个字符列表来存放组成图形的每个字符,及其相应的属性。

有了一个大概的框架,了解了程序设计的目的,我着手就容易多。

利用网络资源我搜到了一个显示“中国北京”的源程序。

通过对该程序的分析,了解了这个程序实现字符图形显示的大概流程,及设计的相关功能模块。

这样,我在写某些功能模块时,就借鉴了网上下下来的源程序。

通过课程设计,我领悟到我们应该有一个缜密的编程思想,在编程过程中,首先要对整体程序有一个初步的框架构想,然后根据所学的知识,活用指令,能够使程序更加精简,这就要求我们对指令要熟悉。

在日常生活中,可以通过编写一些小的程序,来熟悉指令的使用和记忆。

在设计过程中也遇到了一些困难,通过和老师、同学的讨论和学习,最终程序得以完成,所以,在完成每一件事情时,不能忽略团队的力量,应当吸取各人的优势,来使自己更加完善。

对于本次课程设计我受益匪浅,很感谢老师和同学的帮助。

参考文献

1、李敬兆.《8086/8088和arm核汇编语言程序设计》.合肥:

中国科技大学出版社

2、沈美明,温冬婵编著.《IBM—PC汇编语言程序设计(第二版)》.北京:

清华大学出版社出版

3、沈美明,温冬婵,张赤红编著.《IBM—PC汇编语言程序设计实验教程》.北京:

清华大学出版社出版

4、钱晓捷.新版汇编语言程序设计[M].北京:

电子工业出版社,2006

5、卜艳萍,周伟.汇编语言程序设计教程.北京:

清华大学出版社,2007

6、宋人杰,牛斗.汇编语言程序设计.北京:

清华大学出版社,2008

7、王爽.汇编程序设计语言.北京:

清华大学出版社,2008

设计总结:

从选择课题开始,经历了收集资料,总体设计,详细设计,调试等阶段。

在每个阶段都要求的阶段性成果,同时也深深感到书本知识和实践的差距,如果没有这实践的经历,书本知识永远都只是书本知识,会因为没有实践的验证和巩固而渐渐遗忘。

只有将学到的知识用到实践,知识才能真正意义上被掌握,被发挥作用。

总的来说,在知道本次设计要实现什么功能后,目标还是很明确的。

在咨询老师的帮助下,以及在网上查看相关资料,这次课程设计做得比较顺利。

通过本次课程设计,我基本掌握了怎样运用汇编语言去设计字符图形,并制作出相应的流程图。

此外,加强了我对MASM软件的熟悉与使用。

另外,因为我的笔记本系统不支持doc全屏显示,但是通过对中断及显示方式的进一步查阅和了解,我解决了这个问题。

很感谢老师,在图形坐标的制作上我遇到了点困难,但通过研究所查找的资料和对源程序的分析,基本上可以定义正确的字符图形表。

整个课程设计的过程,是一个不断学习、不断实践的过程,从而提高了我们的编程能力和程序开发思想,也提高了我们自主学习的能力。

指导教师评语:

 

课程设计成绩:

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1