《汇编语言字符图形程序实验报告-.pdf》由会员分享,可在线阅读,更多相关《汇编语言字符图形程序实验报告-.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要本程序需要将多个字符定义在一个字符表里,字符图形表包括每个字符的ASCII 码、属性及显示图形的相对位移量(前一个字符和当前要显示的字符之间的行距和列距)4 个参数,显示出“SPORT”字样。关键词:SPORT,字符,图形,中断调用I 目录1 设计目的.12 概要设计.22.1 系统总体分析.2 2.2 主模块框图及说明.2 3 详细设计.33.1 主模块及子模块说明.3 3.2 各模块详细设计.3 4程序调试.124.1 运行界面分析.12 4.2 算法的分析.12 4.3 调试过程及分析.13 5 心得体会.155.1 设计体会.15 5.2 系统改进.15 参考文献.16洛阳理工学院
2、微机原理课程设计报告-1-1 设计目的熟练掌握汇编语言程序的设计、调试方法,熟悉字符图形的显示原理及其功能;了解 PC 机显示模式的分类及特点,掌握利用汇编语言在图形方式下编程的方法。熟悉8086/8088CPU组成的危机系统中的BIOS 和 DOS 中断调用功能,掌握一些常用的 BIOS和 DOS 中断调用。如显示输出管理(INT 10H)等。洛阳理工学院微机原理课程设计报告-2-2 概要设计2.1 系统总体分析设计一个字符图形程序,用汇编语言实现在DOS 调用下显示实现字符图形“SPORT”,背景颜色的 ASCII 码为 03H,字符属性为 122,纵坐标相对于光标的初始位置为-2,横坐标
3、性对于光标的初始位置为1.;有清屏和延时功能,并能实现按任意键退出。2.2 主模块框图及说明图 2-1 主模块框图首先,定义了一个字符图形表“SPORT”,设置的字符的类型为DB 即为字节类型,字符的 ACSII 码为 03H,显示出来的图形为心形,设置字符的属性为122。显示完整个字符图形表共需要102 行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2 表示的是列坐标,而后面的 1 表示的是行坐标。此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1 表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的 0 则表示纵向不发生移动。同理,横坐标
4、的 1 表示的是向右移动一位,横坐标的-1 表示的是像左移动一位,横坐标的 0 则表示横向不发生移动。此为数据段的内容。然后定义了一个堆栈段,开辟了大小为2000 字节的空间。接下来则是代码段的内容,包括初始化 DS 的内容、设置图形方式、设置背景颜色、设置彩色调板、清屏、延时、按任意键退出等内容。代码段堆栈段数据段洛阳理工学院微机原理课程设计报告-3-3 详细设计3.1 主模块及子模块说明一开始,我定义了一个字符图形表“SPORT”,设置的字符的类型为DB 即为字节类型,字符的 ACSII 码为 03H,显示出来的图形为心形,设置字符的属性为122。显示完整个字符图形表共需要102 行代码,
5、设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2 表示的是列坐标,而后面的1 表示的是行坐标。此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的 1 表示的是向下移动一位,列坐标的-1 表示的是像上移动一位,列坐标的0 则表示纵向不发生移动。同理,横坐标的1表示的是向右移动一位,横坐标的-1 表示的是像左移动一位,横坐标的 0 则表示横向不发生移动。此为数据段的内容。接下来我定义了一个堆栈段,开辟了大小为2000 字节的空间。然后我设计了代码段的内容。首先定义了一个名为MAIN的段间调用过程,过程中包括初始化了 DS 的内容,设置 300*200 彩色图形方式,设
6、置背景颜色为0BH,显示出来的颜色为绿色,设置彩色调板为0BH,显示的颜色为绿色,再调用清屏子程序CLEAR_SCREEN和延时子程序 MOVE_SHAPE,以及任意键退出子程序EXIT,MAIN过程结束。然后编写了清屏子程序CLEAR_SCREEN,它是一个段内调用的过程。接着编写了延时子程序 MOVE_SHAPE,它也是一个段内调用的过程。再接下来则是一段读取字符图形的程序和一段按任意键即可退出程序的程序,最后整个代码段结束。3.2 各模块详细设计3.2.1 流程图(如图 3-1)洛阳理工学院微机原理课程设计报告-4-开始确定字符的类型为字节型确定字符的 ASCII 码确定字符的属性确定字
7、符相对于光标的纵坐标确定字符相对于光标的横坐标完成了字符图形“SPORT”设置背景颜色设置图形方式Yes No 洛阳理工学院微机原理课程设计报告-5-图 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 DB 03H,122,1,-4 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 设置清屏子程序设置彩色调板设置延时子程序设置退出子程序结束
8、洛阳理工学院微机原理课程设计报告-6-DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,7 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB
9、 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,4,6 DB 03H,122,-1,0 洛阳理工学院微机原理课程设计报告-7-DB 03H,122,-1,0 DB 03H,122,-1,0 DB 0
10、3H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0
11、,-1 DB 03H,122,0,6 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,0,1 DB 03H,122,0,1 DB 03H,122,0,1 洛阳理工学院微机原理课程设计报告-8-DB 03H,122,0,1 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,0,-
12、1 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,1,1 DB 03H,122,1,1 DB 03H,122,1,1 DB 03H,122,1,1 DB 03H,122,0,5 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,-1,0 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,3 DB 03H,122,0,1 C
13、HAR_CNT DW?POINTER DW?LINE_ON DB?COL_ON DB?DATA ENDS STACKI SEGMENT DB 2000 DUP(?)STACKI ENDS CODE SEGMENT 洛阳理工学院微机原理课程设计报告-9-ASSUME CS:CODE,DS:DATA,SS:STACKI MAIN PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATA;初始化 DS MOV DS,AX MOV AH,0;设置图形方式MOV AL,3 INT 10H MOV AH,0BH;设置背景颜色MOV BH,0 MOV BL,2 INT 1
14、0H MOV AH,0BH;设置彩色调板MOV BH,01 MOV BL,00 INT 10H CALL CLEAR_SCREEN;调用清屏子程序LEA DI,CAR MOV DH,10 MOV DL,2 CALL MOVE_SHAPE;调用延时子程序MOV AH,8 INT 21H CMP AL,71H JZ EXIT JB NEXT NEXT:CMP AL,51H JZ EXIT MAIN ENDP CLEAR_SCREEN PROC NEAR;清屏子程序PUSH AX PUSH BX 洛阳理工学院微机原理课程设计报告-10-PUSH CX PUSH DX MOV AH,6 MOV AL,
15、0 MOV CH,0 MOV CL,0 MOV DH,120 MOV DL,200 MOV BH,7 INT 10H POP DX POP CX POP BX POP AX RET CLEAR_SCREEN ENDP DLY_QRTR PROC NEAR;延时子程序PUSH CX PUSH DX MOV DX,5000 D11:MOV CX,25000 D12:LOOP D12 DEC DX JNZ D11 POP DX POP CX RET DLY_QRTR ENDP MOVE_SHAPE PROC NEAR;读取字符图形程序PUSH AX PUSH BX PUSH CX PUSH DX P
16、USH DI 洛阳理工学院微机原理课程设计报告-11-MOV AH,0FH INT 10H SUB CH,CH MOV CL,DI INC DI MOV CHAR_CNT,CX MOV POINTER,DI MOV LINE_ON,DH MOV COL_ON,DL MOV_CRSR:ADD DH,DI+2 ADD DL,DI+3 MOV AH,2 INT 10H MOV AL,DI MOV BL,DI+1 PUSH CX MOV CX,1 MOV AH,09 INT 10H POP CX ADD DI,4 LOOP MOV_CRSR POP DI POP DX POP CX POP BX PO
17、P AX RET MOVE_SHAPE ENDP EXIT:MOV AH,4CH;按任意键退出INT 21H CODE ENDS;程序结束END MAIN 洛阳理工学院微机原理课程设计报告-12-4程序调试4.1 运行界面分析4.1.1汇编语言的硬件环境目前 8086 汇编语言程序一般多在IBM PC/XT 及其兼容机上运行,要求极为具备基本配置就可以了。4.1.2汇编语言的软件环境主要是指支持汇编语言程序运行和帮助建立汇编语言源程序的一些软件,主要包括:(1)DOS 操作系统(2)编辑程序 EDIT.COM(3)宏汇编程序 MASN.EXE(4)连接程序 LINK.EXE(5)调试程序 DE
18、BUG.COM 4.1.3运行汇编语言程序的步骤(1)用编辑程序 EDIT.COM 建立扩展名为.ASM 的汇编语言源程序文件;(2)用汇编程序 MASN.EXE 将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为.OBJ;(3)若在汇编过程中出现语法错误,根据错误信息提示(如位置、类型、说明),用编辑软件重新调入源程序进行修改。无错误时采用连接程序LINK.EXE 把目标文件转化成可执行文件,其扩展名为.EXE;(4)生成可执行文件后,在DOS 命令状态下直接键入文件名就可执行该文件。4.2 算法的分析(1)开始算法;(2)定义字符的类型;(3)定义字符的 ASCII 码;(4
19、)定义字符的属性;(5)定义字符的纵坐标;(6)定义字符的横坐标;(7)判断,若未完成“SPORT”的构造则返回(2),开始下一个字符的定义;(8)若完成了“SPORT”的构造则继续执行下一步;(9)设置图形方式;洛阳理工学院微机原理课程设计报告-13-(10)设置背景颜色;(11)设置彩色调板;(12)设置清屏子程序;(13)设置延时子程序;(14)设置退出子程序;(15)算法结束。4.3 调试过程及分析编写完程序以后,将此保存为“pic.asm”,编译,显示的如图4-1:图 4-1 编译界面按确定键,生成目标文件pic.obj。执行无错误提示后,连接,显示的如图4-2:洛阳理工学院微机原理
20、课程设计报告-14-图 4-2 连接界面按下确认键,生成可执行文件pic.exe。在光标处输入 debug pic.exe,回车,显示的效果图如图 4-3:图 4-3 效果图洛阳理工学院微机原理课程设计报告-15-5 心得体会5.1 设计体会回顾起这次的汇编课程设计,至今我忍感慨颇多。的确,从选题到实施,从理论到实践,在汇编课程设计的日子里,苦多于甜,但是,实践出真知,在实践中我学习到了很多很多的东西,这是单靠老师课堂上授课和自己私下里看书本所学不到的。譬如简简单单的一句程序“DB 03H,122,-2,1”,换在没实践之前,我可能只是仅仅知道这是一句定义字符图形属性的语句,03H 代表字符的
21、 ASCII 码,122 表示字符属性,-2 是纵坐标,1 代表横坐标,但当自己亲手实践了以后,我对此有了更深刻的认识,知道03H 代表了心形,若改其值为04H 则是菱形,05H 显示的是四叶形状。-2 和 1 纵横坐标代表的是相对于光标的位置,是一个相对值而不是绝对值。通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只要把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的为社会服务,从而提高自己的时间动手能力和独立思考能力。5.2 系统改进本系统只是简答的显示出了背景颜色,字符图形,及其颜色等单调的,静态的东西,若要改进的话,我希望做出一个动态的东西,譬如,字符图形进行有规则的移动,甚至跳动,字符的颜色也可以随时间变化的程序,还可以使背景颜色采用自己选定的图片等。让界面看起来更美观,更能吸引人。洛阳理工学院微机原理课程设计报告-16-参考文献1李敬兆.8086/8088和 arm 核汇编语言程序设计.合肥:中国科技大学出版社2沈美明,温冬婵编著.IBM PC 汇编语言程序设计(第二版).北京:清华大学出版社出版3沈美明,温冬婵,张赤红编著.IBM PC 汇编语言程序设计实验教程.北京:清华大学出版社出版
限制150内