1、武汉理工大学华夏学院课程设计报告书课程名称: 汇编语言程序设计 题 目: 显示对称图形1、图形2(第6组) 系 名: 信息工程系 专业班级: 计算机1131 姓 名: 雷云龙 学 号: 10210413104 指导教师: 李 捷 年 月 日课程设计任务书学生姓名: 雷云龙 专业班级: 计算机1131 指导教师: 李 捷 工作单位: 信息工程系 设计题目:在显示器上显示对称图形1、图形2初始条件:PC机上实现课程设计要求完成的主要任务:*2*12345*54321*32*23456*65432*43212345634567*765435432123454567876544321234567876
2、532*678762*787*8第六组图1图2主要任务:1按”Esc”退出程序;2能有2种图形显示,2种色彩方案;3按“1 , 2” 黑白,基本显示图形1,基本图形2 ;4按“3 , 4”色彩方案,显示图形1,图形2(颜色自定) ;5按“5 , 6”色彩缺损方案,显示图形1,图形2(颜色自定) ;设计报告撰写格式要求:题目:2、设计目的:2、设计内容:写出简要的程序功能描述、程序运行条件-所需工具软件、输入/输出描述等。3、程序结构: 主要的段定义说明; 用到的子程序(宏)的功能说明、调用关系说明、参数传送方式说明等; 主要算法描述等(各模块功能实现及典型指令的应用)。4、设计步骤(注明时间安
3、排)5、程序流程图、源程序(程序必须有简单注释,源程序若太长,可作为附录)6、实验结果(输出)7、其他值得说明的内容(1)程序结构设计特点;(2)设计、调试程序心得、体会或不足。附录:源程序代码(必须有简单注释) 参考文献指 导 教 师 签 字:2015年 9 月10日系 主 任 签 字:年 月 日第1章 需求分析1.1课程设计题目 在显示器上显示对称的图1,图2图像*2*12345*54321*32*23456*65432*43212345634567*765435432123454567876544321234567876532*678762*787*8第六组图1图21.2课程设计目的 1
4、.2.1 巩固和加深课堂所学知识,熟练掌握编写汇编语言程序的基本方法和基本框架;将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力,学会编写顺序结构,分支结构和循环结构和子程序的汇编程序,掌握宏定义与宏调用的方法。 1.2.2 通过对汇编语言程序代码的阅读,修改,设计以及理解,掌握复杂的汇编语言能力应用程序的编程,提高实践编程能力。掌握程序中数据的产生与输入输出的方法,使学生能够较为全面的巩固和应用课堂中学到的基本理论和程序设计方法,能够熟练的完成汇编语言的设计和调试。1.3 程序运行环境及开发工具运行环境:Windows7/Windows8/Windows10/W
5、indowsXP/DOS系统等;开发工具:Masm for Windows集成实验环境/tddebug等。1.4 课程设计任务及要求 1.4.1设计任务1.按”Esc”退出程序;能有2种图形显示,2种色彩方案(见上图基本图形)2.按“1 , 2”黑白-基本显示图形1,基本图形23.按“3 , 4”色彩-显示图形1,图形2(颜色自定)4.按“5 , 6”色彩缺损-显示图形1,图形2(颜色自定)1.4.2 设计要求程序结构中要求至少包含数据段,代码段,有子程序应用,系统功能调用。屏幕最终输出如下图:*2*12345*54321*32*23456*65432*43212345634567*76543
6、5432123454567876544321234567876532*678762*787*8第六组图1图2第2章设计步骤(1)收到老师步骤的题目,确定小组各个成员的任务,各个成员查找相关资料,并研究图形的规律,与相关程序的编写。(2)与小组成员们一起讨论题目,并绘制相关的程序运行流程图,写出关键步骤的代码与相关程序的编写。(3)调试并编译所写的程序代码,并按照题目的要求,一次次的调试程序,直到达到课程设计的要求。(4)程序通过老师的检查,并回答老师的答辩问题。第3章详细设计3.1 主要段定义说明(1) 数据段定义字符输出属性colcol DB 00000100b,00000110b,0000
7、1110b,00000010b,00000011b DB 00000001b,00000101b,00000000b,00001111b,00001100b 学生信息stu stu DB 10210413104 Lei Yun Long$提示信息promptpromptDB Input,Esc$程序指针变量outxoutx DW 0光标的坐标coordxDB0coordyDB0按键值KEYDB7闪烁控制TwinDB0(2) 堆栈定义DW 100H DUP(?)3.2 子程序说明(1) ShowStu子程序,功能:显示学号姓名和提示信息。(2) contorl子程序,功能:判断按键的值,并执行相
8、应的操作。(3) kbtest子程序,功能:监控键盘是否有操作。(4) A3PRN子程序,功能:显示对称图形1。(5) B3PRN子程序,功能:显示对称图形2。(6) WriteCC子程序,功能:色彩字符输出子程序。(7) Clrscr子程序,功能:清标准屏子程序。(8) CRLF子程序,功能:输出回车换行。(9) cursor子程序,功能:置光标位置。(10) SPACE子程序,功能:输出一个空格。(11) printx子程序,功能:输出一个*号。(12) daily1和daily2子程序,功能:延迟。3.3模块设计(1) 按键控制模块。汇编语言的判断条件相当于C语言中的IF语句,当满足按键
9、条件的时候,程序执行下面功能,不满足条件,跳到下一个判断条件。Int 16h中的1号功能调用用了监控键盘是否按下。Int 21h中的7号功能调用, AH=07H,功能:键盘输入一个字符到AL中,AL中为该字符的ASCII码。(屏幕上不会显示输入的结果)先比较输入的结果是不是1号键的ASCII码值,相等就往下运行,然后显示1号键的功能模块,显示完之后程序会无条件跳转到等待输入指令那里,等待下一个输入按键;不相等则跳转到CMP AL,2 指令,比较输入的结果是否等于2号键的ASCII码值,然后重复上面的操作,知道比较完为止;当输入的键不是要显示的功能时,不会有任何反应,依然等待输入按键;最后就是程
10、序退出指令,按ESC键程序退出。(2) 基本图形模块。用来显示基本的图形,判断光标的位置应该输出什么。其显示要依赖于输出颜色和缺损控制模块。(3) 输出颜色和缺损控制模块。先写一个子程序,功能是所有颜色的分配跟调用,然后再写子程序通过调用这个着色子程序来对按要求图形进行着色通过判断条件来对一片区域进去着色,不同地方满足条件不一样,着的颜色也就不一样。21H中的2号功能调用,AH=02H,功能:被输出显示的字符或者字符ASCII码送到DL寄存器中。调用输出颜色和缺损控制模块子程序,就可以对图形进行着色,如果改变图形的样式,调用这个子程序,也可以对其进行着色。outx是定义的一个程序指针变量,MO
11、V DX,OFFSET AOUT2X指令是获取AOUT2X的位置,然后通知MOV outx,DX送给这个outx变量,在图形样式里面调用这个outx变量;这样只需要改变着色子程序AOUT2X就可以改变不同的着色方案了。(4)光标定位模块Masm for Windows集成实验环境的运行结果显示只有25行,而且它只是纵向输出,不会横向排列,所以要想在一个屏幕上输出全部的等腰三角形,就必须定位光标,讲光标定位到屏幕的右边,使得右边可以显示等腰三角形;光标的定位是一个10H功能里面的调用,它可以将光标定位到屏幕任何一个位置。10H中的2号功能调用,AH=02H, 功能:是设定光标位置,位置用 DH、
12、DL 表示,DH 表示列号,DL 表示行号。由左至右称之为列,屏幕最上面一列为第零列,紧靠第零列的下一列称为第一列;由上而下称之为行,屏幕最左边一行称之为第零行,紧靠 第零行右边的一行为第一行。故最左边,最上面的位置为 DH=0 且 DL=0;最左边第二列,DH=1,DL=0。如果是文字模式时,BH 为欲改变光标位置的显示页,如果是图形模式,BH 要设为 0。以行列来说明 DH、DL 之意义,学生常常搞混,底下以座标方式解释。在文字模式下,字符的位置类似数学直角座标系的座标,但是 Y 轴方向相反,Y 轴是以屏幕最上面为零,越下面越大,直到 24 为止,存于 DH 内。X 轴和直角座标系相同,越
13、右边越大,存于 DL 内,其最大值视显示模式而变。第4章 程序流程图开始等待键盘输入判断按键值123456基本图形1基本图形2黑白输出1彩色输出2彩色输出2彩色缺损输出1彩色缺损输出结束562143第5章 实验结果5.1 初始化界面 5.2 按6号键界面5.3 按ESC退出界面第6章 心得体会课程设计是实践教学体系中的重要环节,对于巩固课堂理论知识,培养学生实践能力、应用能力起着非常重要的作用。通过对课本知识进行综合运用,编写应用程序基本掌握软件开发的过程,熟练掌握汇编语言程序设计的方法,掌握子程序 BIOS 和DOS程序设计方法,掌握程序的运行、调试方法,提高独立分析问题、解决问题的能力,提
14、高查阅资料的能力,加强团队协作意识。经过这次课程设计之后我了解到只要认真投入地去思考机器是如何进行逻辑思考的并且熟悉指令,汇编语言的趣味性比高级语言更强。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是这些问题最终能迎刃而解。对于程序设计语言中的数据类型形参实参函数调用全局变量局部变量等概念及操作,我们都可以用汇编语言中的一些操作相关联,把这些抽象的概念和过程,通过汇编语言形成一
15、个具体的映像,深度剖析,这样我们才能真正的学会学好C语言计算机科学的各个方面是一个统一的整体。只有多方面穿插,交互才能更好的搭建计算机知识体系,汇编语言本身还是一门很重要的应用技术。首先由于汇编的操作由于跟硬件紧密相关,所以,很多硬件设施的嵌入式编程使用的都是使用的汇编语言,因为汇编语言更直接,更有效率。同时虽然这次课程设计结束了,但是总觉得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。设计者: 雷云龙 日 期: 2015年 12月 31日附录程序代码:DATA SEGMENTcol DB 00000100b,00000110b,00001110b,00000010b,000
16、00011b DB 00000001b,00000101b,00000000b,00001111b,00001100b stu DB 10210413104 Lei Yun Long$promptDB Input,Esc$outx DW 0coordxDB0coordyDB0KEYDB7TwinDB0DATA ENDSSTAK SEGMENT STACK DW 100H DUP(?)STAK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STAK,DS:DATASTART: MOV AX,DATA MOV DS,AX ;=MAIN()=CALLprint7CALLSho
17、wStuMAINLP: CALLcontorlcmpTwin,0 jzMAINLPCALLdaily1CALL ClrscrCALLdaily2JMPMAINLP MOV AX,4C00H ; 程序结束 INT 21H ;=MAIN()=;-显示学号姓名-ShowStu PROC NEARPUSHAXPUSHDXMOV DX,OFFSET stu MOV AH,9 INT 21HCALL CRLFMOV DX,OFFSET prompt MOV AH,9 INT 21HCALL CRLFPOPDXPOPAXRETShowStu ENDP;-按键控制-contorl PROC NEAR PUSH
18、AXinput: CALLkbtest ;MOV AH,01H ;INT 16H;JZKEYSER;MOV AH,00H ;INT 16H;MOVAL,KEYKEYSER:cmp al,1jnz option1 CALL print1 ;图形1黑白输出 JMP CONKEYoption1:cmp al,2jnz option2 CALL print2 ;图形2黑白输出 JMP CONKEYoption2:cmp al,3jnz option3 CALL print3 ;图形1彩色输出 JMP CONKEYoption3:cmp al,4jnz option4 CALL print4 ;图形2彩
19、色输出 JMP CONKEYoption4:cmp al,5jnz option5 CALL print5 ;图形1缺损彩色输出 JMP CONKEYoption5:cmp al,6jnz option6 CALL print6 ;图形2缺损彩色输出 JMP CONKEYoption6:cmp al,7jnz option7 CALL print7 ;输出全部图形 JMP CONKEYoption7:cmp al,-jnz option8 ;关闭闪烁 ;CALL OffTwinkle movTwin,0 JMP contorlEND option8:cmp al,=jnz option9 ;打
20、开闪烁 ;CALL OnTwinkle movTwin,1 JMP contorlEND option9: cmp al,1BHjnz option10 MOV AX,4C00H ; 程序结束 INT 21Hoption10: JMPinputCONKEY:CALLShowStuMOVKEY,ALcontorlEND:POPAX RETcontorl ENDP;-图形1黑白输出-print1 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET OUT1Xmov outx,DX CALL A3PRN CAL
21、L CRLF RETprint1 ENDP;-图形2黑白输出-print2 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET OUT1Xmov outx,DX CALL B3PRN CALL CRLF RETprint2 ENDP;-图形1彩色输出-print3 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET AOUT2Xmov outx,DX CALL A3PRN CALL CRLF RETprint3 EN
22、DP;-图形2彩色输出-print4 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET BOUT2Xmov outx,DX CALL B3PRN CALL CRLF RETprint4 ENDP;-图形1缺损彩色输出-print5 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET AOUT3Xmov outx,DX CALL A3PRN CALL CRLF RETprint5 ENDP;-图形2缺损彩色输出-pr
23、int6 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET BOUT3Xmov outx,DX CALL B3PRN CALL CRLF RETprint6 ENDP;-全图形输出-print7 PROC NEAR CALL Clrscr mov coordx,5mov coordy,1CALL cursormov DX,OFFSET OUT1Xmov outx,DX CALL A3PRN CALL CRLF mov coordx,25mov coordy,1CALL cursormov DX,OFFS
24、ET AOUT2Xmov outx,DX CALL A3PRN CALL CRLF mov coordx,45mov coordy,1CALL cursormov DX,OFFSET AOUT3Xmov outx,DX CALL A3PRN CALL CRLF mov coordx,5mov coordy,11CALL cursormov DX,OFFSET OUT1Xmov outx,DX CALL B3PRN CALL CRLF mov coordx,25mov coordy,11CALL cursormov DX,OFFSET BOUT2Xmov outx,DX CALL B3PRN C
25、ALL CRLF mov coordx,45mov coordy,11CALL cursormov DX,OFFSET BOUT3Xmov outx,DX CALL B3PRN CALL CRLF RETprint7 ENDP;- 打开闪烁-OnTwinklePROC NEARPUSHBXPUSHCXMOVCX,10OnTwin:MOVBX,CXorcolBX-1,10000000bLOOPOnTwinPOPCXPOPBXRETOnTwinkleENDP;- 关闭闪烁 -OffTwinklePROC NEARPUSHBXPUSHCXMOVCX,10OffTwin:MOVBX,CXANDcolB
26、X-1,01111111bLOOPOffTwinPOPCXPOPBXRETOffTwinkleENDP;- A 图形1 -;功能:显示对称图形1;入口:outx表示输出的方式;出口:无;影响寄存器:无A3PRN PROC NEAR PUSH AX ;876543212345678 PUSH BX ; 7654321234567 PUSH CX ; 65432123456 PUSH DX ; 543212345;- ; 4321234 MOV BH,-7 ; 32123 MOV BL,+7 ; 212 MOV CH,8 ; 1A3PRLP: MOV AL,9 SUB AL,CH;-空格输出-A3
27、PRLP1:CALL SPACE ;外循环入口 DEC AL JNZ A3PRLP1;-图形输出- MOV CL,BHA3PRLP2:MOV DL,CL ;内循环入口 CMP DL,0 JGE A3PRA NEG DL ;DL=|DL|A3PRA: ADD DL,1 ;0-1 7-8 CALL outx INC CL CMP CL,BL JLE A3PRLP2 ;内循环控制 CALL cursor INC BH DEC BL DEC CH JNZ A3PRLP ;外循环控制;-A3PRNR: POP DX POP CX POP BX POP AX RETA3PRN ENDP;- B 图形2 -
28、;功能:显示对称图形2;入口:outx表示输出的方式;出口:无;影响寄存器:无B3PRN PROC NEAR PUSH AX ;123456787654321 PUSH BX ; 2345678765432 PUSH CX ; 34567876543 PUSH DX ; 456787654;- ; 5678765 MOV BH,-7 ; 67876 MOV BL,+7 ; 787 MOV CH,8 ; 8B3PRLP: MOV AL,9 SUB AL,CH;-空格输出-B3PRLP1:CALL SPACE ;外循环入口 DEC AL JNZ B3PRLP1;-图形输出- MOV CL,BHB3
29、PRLP2:MOV DL,CL ;内循环入口 CMP DL,0 JGE B3PRA NEG DL ;DL=|DL|B3PRA: sub DL,8 ;0-1 7-8NEG DL CALL outx INC CL CMP CL,BL JLE B3PRLP2 ;内循环控制 CALL cursor INC BH DEC BL DEC CH JNZ B3PRLP ;外循环控制;-B3PRNR: POP DX POP CX POP BX POP AX RETB3PRN ENDP;功能:黑白图形输出;入口:DL=ASCII 只读判别(CH,CL,BH,BL);出口:无 ;影响寄存器:无OUT1X PROC NEAR PUSH AX MOV AH,2 INT 21H POP AX RETOUT1X ENDP;功能:图一彩色输出;入口:DL=ASCII 只读判别(CH,CL,BH,
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100