微机原理课程设计-字符显示..doc

上传人:wj 文档编号:67844 上传时间:2023-04-28 格式:DOC 页数:15 大小:255KB
下载 相关 举报
微机原理课程设计-字符显示..doc_第1页
第1页 / 共15页
微机原理课程设计-字符显示..doc_第2页
第2页 / 共15页
微机原理课程设计-字符显示..doc_第3页
第3页 / 共15页
微机原理课程设计-字符显示..doc_第4页
第4页 / 共15页
微机原理课程设计-字符显示..doc_第5页
第5页 / 共15页
微机原理课程设计-字符显示..doc_第6页
第6页 / 共15页
微机原理课程设计-字符显示..doc_第7页
第7页 / 共15页
微机原理课程设计-字符显示..doc_第8页
第8页 / 共15页
微机原理课程设计-字符显示..doc_第9页
第9页 / 共15页
微机原理课程设计-字符显示..doc_第10页
第10页 / 共15页
微机原理课程设计-字符显示..doc_第11页
第11页 / 共15页
微机原理课程设计-字符显示..doc_第12页
第12页 / 共15页
微机原理课程设计-字符显示..doc_第13页
第13页 / 共15页
微机原理课程设计-字符显示..doc_第14页
第14页 / 共15页
微机原理课程设计-字符显示..doc_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理课程设计-字符显示..doc

《微机原理课程设计-字符显示..doc》由会员分享,可在线阅读,更多相关《微机原理课程设计-字符显示..doc(15页珍藏版)》请在冰点文库上搜索。

微机原理课程设计-字符显示..doc

某某学院

微机原理课程设计

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

题目字符图形显示

姓名学号

指导教师职称

二О一三年12月13日

摘要 3

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

二、设计方案 4

三、硬件设计 4

四、软件设计 5

4.1主模块及子模块说明 5

五、设计体会 14

参考文献 15

摘要

本课程设计是通过使用汇编语言来完成的,具体实现的方法可以通过在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各模块详细设计

确定字符的ASCII码

确定字符的属性

确定字符相对于光标的纵坐标

确定字符相对于光标的横坐标

完成了字符图形”SPORT”

设置图形方式

设置背景颜色

设置彩色调板

设置清屏子程序

设置延时子程序

设置退出子程序

退出

开始

确定字符的类型为字节型

源代码分析

源代码如下:

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核汇编

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2