匯编语言字符图形程序实验报告.doc
文本预览下载声明
摘要
本程序需要将多个字符定义在一个字符表里,字符图形表包括每个字符的ASCII码、属性及显示图形的相对位移量(前一个字符和当前要显示的字符之间的行距和列距)4个参数,显示出“SPORT”字样。
关键词:SPORT,字符,图形,中断调用
目录
1设计目的 1
2概要设计 2
2.1 系统总体分析 2
2.2 主模块框图及说明 2
3 详细设计 3
3.1 主模块及子模块说明 3
3.2 各模块详细设计 3
4.程序调试 12
4.1 运行界面分析 12
4.2算法的分析 12
4.3 调试过程及分析 13
5心得体会 14
5.1 设计体会 14
5.2 系统改进 14
参考文献 15
1设计目的
熟练掌握汇编语言程序的设计、调试方法,熟悉字符图形的显示原理及其功能;了解PC机显示模式的分类及特点,掌握利用汇编语言在图形方式下编程的方法。熟悉8086/8088CPU组成的危机系统中的BIOS和DOS中断调用功能,掌握一些常用的BIOS和DOS中断调用。如显示输出管理(INT 10H)等。
2概要设计
2.1 系统总体分析
设计一个字符图形程序,用汇编语言实现在DOS调用下显示实现字符图形“SPORT”,背景颜色的ASCII码为03H,字符属性为122,纵坐标相对于光标的初始位置为-2,横坐标性对于光标的初始位置为1.;有清屏和延时功能,并能实现按任意键退出。
2.2 主模块框图及说明
图2-1 主模块框图
首先,定义了一个字符图形表“SPORT”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。显示完整个字符图形表共需要102行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的0则表示纵向不发生移动。同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。此为数据段的内容。
然后定义了一个堆栈段,开辟了大小为2000字节的空间。
接下来则是代码段的内容,包括初始化DS的内容、设置图形方式、设置背景颜色、设置彩色调板、清屏、延时、按任意键退出等内容。
3 详细设计
3.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,它也是一个段内调用的过程。再接下来则是一段读取字符图形的程序和一段按任意键即可退出程序的程序,最后整个代码段结束。
3.2 各模块详细设计
3.2.1流程图(如图3-1)
图3-1 程序流程图
3.2.2源代码分析
源代码如下:
DATA SEGMENT
CAR DB 102 ;定义字符图形表
DB 03H,122,-2,1
DB 03H,122,0,1
DB 03H,122,0,1
DB 03H,122,0,1
DB 03H,122,0,1
显示全部