华 北 科 技 学 院
课程设计说明书
网络 B152 姓名:
马成浩
201507024231
汇编语言课程设计
2017-12-11 至 2017-12-22
班级:
学号:
课程名称:
课设时间:
成绩评定:
1、工作量:
A( ),B( ),C( ),D( ),F(
2、难易度:
A( ),B( ),C( ),D( ),F(
3、答辩情况:
基本操作:
A( ),B( ),C( ),D( ),F(
代码理解:
A( ),B( ),C( ),D( ),F(
4、报告规范度: A( ),B( ),C( ),D( ),F(
5、学习态度:
A( ),B( ),C( ),D( ),F(
)
)
)
)
)
)
总评成绩:
指导教师:
1、 课程设计的目的、任务
利用我利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决
稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强自己利用
所学知识解决实际问题的能力,为以后的程序开发打下基础。巩固和加强《汇编
语言》课程的理论知识。掌握汇编语言的基本概念、语法、语义和数据类型的使
用特点和掌握汇编语言程序设计的方法及编程技巧,能正确使用汇编语言编写程
序。进一步理解与运用结构化程序设计的思想和方法;学会利用流程图或 N-S 图
表示算法。掌握调试程序的基本方法及上机操作方法。掌握书写程设计开发文档
的能力,让我学会撰写课程设计总结报告。通过查阅手册和文献资料,培养自己
独立分析问题和解决问题的能力。培养自己的创新能力和创新思维。让自己可以
根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。在课程设计
书写代码时,建立良好的程序设计风格。
2、 软件需求分析和设计
题目:小车动态图形设计
要求:小车在公路上行驶,从屏幕左侧驶向右侧。在到达屏幕右侧 ,公路下
降一段距离并改变颜色,然后小车继续由左向右行驶驶。当下降到屏幕底部时,
又返回到屏幕顶部重复上述过程,直到有键按下。公路和小车的颜色不样,要用
到INT 10H功能。
分析:在这个动态图形设计中,我的思路主要分为以下几个步骤,然后围绕以
下步骤一一解决这个问题。
(1) 确定小车是有哪些部分组成,即构造小车。
(2) 把小车显示在屏幕上。
(3) 写一个循环,让小车在屏幕上从左向右移动
(4) 清屏后改变小车的行位置,再次让小车从左向右移动。
(5) 构造一条马路
(6) 为小车和马路上色
主要的流程图如下:
Yes
启动程序
小车行驶
有无按键
no
Row 递增
CX 判断是否行
驶到屏幕最右端
no
yes
Row,column 初 始
化
程序结束
3、 程序实现说明
(1)小车和路组成,主要用到 ASCII 扩展字符集,然后用置光标位置和 9 号
功能显示出来。
car0 db 32,32,32,32,32,32,247,32,'$'
car1 db 32,32,219,219,32,201,32,'$'
car2 db 32,219,219,219,219,219,219,219,'$'
car3 db 32,32,233,32,32,32,233,'$'
road db 80 DUP(178),'$'
mov cl,0
mov row,CL
mov dh,row
mov dl,column
mov bh,0
mov ah,2
int 10h
outcar 9,car0
inc row
(2)通过循环改变小车的列坐标,让小车在屏幕上移动,这里用延时程序便于
观察运动轨迹。
mov cx,73
S1:
push cx
mov cl,0
…..
…….
longtime ;延时
POP CX
dec cx ;循环
cmp cx,0
jnz S1
(3)清屏后改变小车和路行左边,列初始化再次让小车在屏幕上移动。(这里
的效果相当于公路下降)
清屏:定义了一个宏
clearsc macro color
clearsc 01h ;清屏后改变公路的行位置,公路下降。
mov dh,10
mov dl,0
mov bh,0
mov ah,2
int 10h
showcolor 178,6
outcar 9,road
然后再改变小车的行坐标,通过(2)步骤,让小车再次行驶在屏幕上。
(4)在移动的过程中添加 16 号中断 1 号功能,当有按键输入时,程序结束运行。
mov ah,1
int 16h
jnz quit
quit:
mov ah,4ch
int 21h
(5)改变小车和路的颜色。这里小车的颜色主要是通过清屏设置前景色来实现
的。路得颜色定义了一个宏来实现。
clearsc macro color ;清屏和修改前景色改变小车颜色
mov ah,06h
mov al,0
mov bh,color
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
endm
路的颜色:
showcolor macro a,b
;a 是扩展字符,b 是颜色
mov ah,09h
mov al,a
mov bh,0h
mov bl,b
mov cx,80
int 10h
endm
程序运行结果:
4、 课程设计总结
在学习完汇编语言这门课程后,老师给我们安排了课程设计这个环节。然后
最开始的环节是选题目,我选的题目是动态图形设计,因为我觉得比较有趣。但
是事与愿违,题目是选了,到了刚开始做的时候,自己一头雾水。先是在网上浏
览了一些例子,然后翻阅了教材,才一步一步的入门。首先我明确了小车的组成,
然后制定了步骤,按照步骤一步一步执行,不懂的请教了和我课题的同学。最终
把这个实验完成了。在实验的过程中,遇到了许多的困难,一开始,自己着眼于
动画,但是并不了解动画是怎么形成的,深究于始,回归课本,深入研究了置光
标,发现动画无非就是改变字符组成的图形在界面上显示的位置,只要让那些图
形字符有规律的在上面移动即可。接下来就是颜色的设置,自己也是参考了课本
上的例子,通过改变前景色成功把小车变得有颜色,最后就是 bios 中断退出程
序。在书写代码的过程中,为了程序可读性更高更简明,我定义了许多宏程序,
在程序中直接调用。完成这个课程设计,真的需要明确好步骤,要有明确的目标,
清晰的逻辑,不然程序就会杂乱无章,错误百出,代码冗长等等。正是因为如此,
自己的课设完成的还是算有节奏感的,最起码通过这个实验让自己把所学知识运
用到了实际的程序中,不仅巩固了以往的知识,还学到了一些新知识。不足的是
在完成的过程中,由于自己对基础知识的缺乏,在一步一步往下进行的过程中,
遇到许多的阻碍,让我明白了只有一步一个脚印,把基础夯实。才能学有所成。