1、某某学院微机原理课程设计 2013 级 电气工程及其自动化 专业 班级题 目 字符图形显示 姓 名 学号 指导教师 职称 二一三 年 12 月 13 日摘要3一、字符图形显示的基本原理4二、设计方案4三、硬件设计4四、软件设计54.1 主模块及子模块说明5五、设计体会14参考文献15摘要本课程设计是通过使用汇编语言来完成的,具体实现的方法可以通过在MASM使用环境下运 行,也可以通过在DOS环境下完成。我做的课程设计是通过编写汇编语言程序,实现字符图形的显示。在编写初期,我对字符“SPORT”进行了设计,确定了每个字符所在的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示
2、较好的效果,打下了基础。接着开始编写程序,编写完程序后,对程序进行了注释,最后调试出所要求的字符。本程序可以在DOS环境和MASM环境下运行,要求我们熟悉BIOS中断10的各种功能。整个课程设计的过程,是一个不断学习、不断实践的过程,从而提高了我们的编程能力和程序开发思想,也提高了我们自主学习的能力。关键词:字符显示,10号中断,图形,BIOS一、字符图形显示的基本原理 字符图形显示可以在DOS环境下完成,编写完程序后分析并理解每条程序的意思,并解释主要程序的意思,最后调试出所要求的字符。在程序编写前,我首先对自己显示的图形进行了设计,确定了每个数字相对于前一个数字的位置,以便在编写程序的时候
3、正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。本次实验实验的编写环境是MASM,编译、链接也是在该环境下实现的。程序的运行我使用的是DOS环境。通过参考网上的一些原程序,要编写好该程序,首先应该对BIOS的中断熟悉,因此程序编写前,我先认真学习了该BIOS中断的有关功能。 二、设计方案 在课程设计之前,首先要明确设计的目的。本次课程设计的题目是字符图形显示,要求我们能够编写一个汇编程序,正确的显示所要求的字符。这就需要我们对汇编指令有一定的了解,通过课程设计,我们能更深入的了解汇编程序的基本框架,更熟练的运用汇编指令。设计一个字符图形程序,用汇编语言实现在DOS调用下显示
4、实现字符图形“SPORT”,背景颜色的ASCII码为03H,字符属性为122,纵坐标相对于光标的初始位置为-2,横坐标性对于光标的初始位置为1.;有清屏和延时功能,并能实现按任意键退出。 三、硬件设计首先,定义了一个字符图形表“SPORT”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。显示完整个字符图形表共需要102行代码,设置初始字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表
5、示的是像上移动一位,列坐标的0则表示纵向不发生移动。同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。此为数据段的内容。 然后定义了一个堆栈段,开辟了大小为2000字节的空间。 接下来则是代码段的内容,包括初始化DS的内容、设置图形方式、设置背景颜色、设置彩色调板、清屏、延时、按任意键退出等内容。 四、软件设计 4.1 主模块及子模块说明 一开始,我定义了一个字符图形表“SPORT”,设置的字符的类型为DB即为字节类型,字符的ACSII码为03H,显示出来的图形为心形,设置字符的属性为122。显示完整个字符图形表共需要102行代码,设置初始
6、字符所在的位置为相对于光标位置的(-2,1)位置,前面的-2表示的是列坐标,而后面的1表示的是行坐标。此后的代码的行列坐标都是相对于前一字符的相对位置,如列坐标的1表示的是向下移动一位,列坐标的-1表示的是像上移动一位,列坐标的0则表示纵向不发生移动。同理,横坐标的1表示的是向右移动一位,横坐标的-1表示的是像左移动一位,横坐标的0则表示横向不发生移动。此为数据段的内容,接下来定义了一个堆栈段,开辟了大小为2000字节的空间。 然后设计了代码段的内容。首先定义了一个名为MAIN的段间调用过程,过程中包括初始化了DS的内容,设置300*200彩色图形方式,设置背景颜色为0BH,显示出来的颜色为绿
7、色,设置彩色调板为0BH,显示的颜色为绿色,再调用清屏子程序CLEAR_SCREEN和延时子程序MOVE_SHAPE,以及任意键退出子程序EXIT,MAIN过程结束。然后编写了清屏子程序CLEAR_SCREEN,它是一个段内调用的过程。接着编写了延时子程序MOVE_SHAPE,它也是一个段内调用的过程。再接下来则是一段读取字符图形的程序和一段按任意键即可退出程序的程序,最后整个代码段结束。4.2 各模块详细设计 确定字符的ASCII码确定字符的属性确定字符相对于光标的纵坐标确定字符相对于光标的横坐标完成了字符图形”SPORT”设置图形方式设置背景颜色设置彩色调板设置清屏子程序设置延时子程序设置
8、退出子程序 退 出 开 始确定字符的类型为字节型 源代码分析 源代码如下: DATA SEGMENT CAR DB 102 ;定义字符图形表DB 03H,122,-2,1DB 03H,122,0,1DB 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 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 03
9、H,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,-1DB 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 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,12
10、2,1,0 DB 03H,122,1,0DB 03H,122,1,0 DB 03H,122,1,0 DB 03H,122,0,-1 DB 03H,122,0,-1 DB 03H,122,0,-1DB 03H,122,4,6 DB 03H,122,-1,0DB 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 DB 03H,122,0,1 D
11、B 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 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
12、,122,-1,0DB 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,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,0DB 03H,122,-1,0 DB 03H,122,-1,0 D
13、B 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,1CHAR_CNT DW ? POINTER DW ? LINE_ON DB ? COL_ON DB ? DATA ENDS STACKI SEGMENT DB 2000 DUP (?) STACKI ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKI MAIN PROC
14、 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,0MOV BL,2 INT 10H 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 EX
15、IT JB NEXTNEXT: CMP AL,51H JZ EXIT MAIN ENDP CLEAR_SCREEN PROC NEAR ;清屏子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6MOV AL,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,250
16、00 D12: LOOP D12 DEC DX JNZ D11 POP DX POP CX RETDLY_QRTR ENDP MOVE_SHAPE PROC NEAR ;读取字符图形程序 PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI 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,D
17、IMOV 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 POP AXRET MOVE_SHAPE ENDP EXIT: MOV AH,4CH ;按任意键退出 INT 21H CODE ENDS ;程序结束 END MAIN 4.23 调试过程及分析 编写完程序以后,将此保存为“pic.asm”,编译,显示的如图4-2: 图4-2编译界面 按确定键,生成目标文件pic.obj。执行无错误提示后,连接,显示的如图4-3: 图4-3连接界面按下确认键,生成可执行文件pic.exe。在光标处输入debug pic.exe,回车,显示的效果图如图4-4:图4-4 效果图五、设计体会 回顾起这次的汇编课程设计,至今我忍感慨颇多。的确,从理论到实践,在汇编课程设计的日子里,苦多于甜,但是,实践出真知,在实践中我学习到了很多很多的东西,这是单靠老师课堂上授课和自己私下里看书本所学不到的。在没实践之前,我可能只是仅仅知道这是一句定义字符图形属性的语句,实践之后才知道它代表的意义还具体含义。参考文献1李敬兆.8086/8088和arm核汇编
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2