Curriculum design Report
姓 名
Name
赵贺辉
学号
Student No.
18
班级
Class
计本 052
组别
Grou
p
2
学科专业
Item
计算机科学与技术
任课教师
Teacher
李虹
课程名称
Course
Name
汇编语言课程设计
教材
Textbook
IBM-PC 汇编语言程序设计(第 2 版)
教
师
评
语
Comme
nt
教师签字 日期
成绩
Score
学时
Time
1 周
报告提交日期: 年 月 日
河北建筑工程学院
课 程 设 计 报 告
一、设计题目:简单动画设计
二、设计内容:
在屏幕上逐个显示奥运五环标志并用英文显示欢迎字样,按 Z 键退出窗口,按任意键可以继续
显示
三、设计思路:
首先显示 2008BEIJING WELCOM 字样,通过调用 DOS 的 2 号中断来显示字符,BIOS2 号中
断来设置鼠标的位置,显示完一个字符,调用一次时间延迟程序,来达到动画显示的目的。画圆采
用八分法(有叫 Bresenham 算法)来画圆,在画圆过程中调用时间延迟程序,让达到动态显
示画圆的效果,程序中主要通过,时间的延迟来显示动画的效果,在程序中还用到 BIOS 的 0 号,6
号,和 C 号中断,分别实现设置显示模式,刷新屏幕和画像素点的功能。
四、主流程图:
五:
六:总结
通过这周的课程设计,我的收获很大,通过其中编程序以及调试程序,提高了
我对汇编的认识和理解,切实的提高了我的编程能力。我巩固所了学过的知识 ,
能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令
的功能
我也了解到要写好汇编语言的程序,必须认真对待每一个细节,必须熟练的掌
握 debug 命令,通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结
构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序
的水平,不过要想更深一步的学习好一们语言,还要我们下多多练习,思考,
写程序并用它来实践,应用到实际当中!
七:附录源代码
data segment
r dw ? ;半径
d dw ?
x dw ?
y dw ?
x1 dw 100;圆心
y1 dw 50
x2 dw ?
y2 dw ?
x3 dw ?
y3 dw ?
x4 dw ?
y4 dw ?
m dw ?
n db ? ;象素颜色值
k dw ? ;传递半径大小
l db ? ;传递圆宽度大小
string db 'If you want to qiut please press z','$'
string2 db 'Show Olympics press any key','$'
beijing db'2','0','0','8',' ','B','E','I','J','I','N','G',' ','W','E','L','C','O','M'
data ends
codesegment
assume cs:code,ds:data
main proc far
start: mov ax,data
mov ds,ax
call clear
call set_mode
mov ah,9h
lea dx,string
int 21h
mov dx,0200h
call set_cursor
mov ah,9h
lea dx ,string2
int 21h
;以上为初始化部分
mov ah,1h
int 21h
cmp al,'z'
jge close
;判断是否满足条件 并退出
mov si,0
mov di,0
mov si,x1
mov x3,si;x3 y3 is variable
mov si,y1
mov y3,si
mov si,0 ;si 用后清零
;将原点位置保存到 X3 Y3 以便以后调用
mov cx,11h
mov dx,60ah
call set_cursor
mov dl,beijing
lea bx,beijing
loop1:
call show_letter
inc bx
mov dl,[bx]
call delay1
loop loop1
;显示欢迎字符
call circle ;调用子程序
close:
mov ah,4ch
int 21h
main endp
;...........................................................
show_letter proc near
mov ah ,02h
int 21h
ret
show_letter endp
;显示字符程序
clear proc near
mov ax,0600h ;屏幕初始化
mov cx,0 ;左上角行列
mov dx,184fh;右上角行列
mov bh,7 ;卷入行属性
int 10h
ret
clear endp
;清屏子程序
set_cursor proc near ;dh dl is parameter
mov ah,2h
mov bh,0
int 10h
ret
set_cursor endp
;设置鼠标子程序
circle proc near
pushsi ;si proteced
mov bx,25h ;输入半径
mov k,bx ;把半径值送 K 单元保存
mov l, 42h ;宽度大小 宽度保存到 L
;..............................................
;..............................................
yuan1:
mov n,9h ;颜色值
mov x,0
mov bx,k ;半径给 BX
mov y,bx
mov si,x3
mov x1,si
mov si,y3
mov y1,si ;半圆心通过 X3 Y3 给 X1 Y1
call yuan_shape ;调用画圆字程序
yuan2:
mov n,7h
mov x,0
mov bx,k
mov y,bx
mov si,x3
mov x1,si
mov si,y3
mov y1,si
add y1,bx
add y1,bx
shr bx,1
add y1,bx ;圆心横坐标变为原来 2.5 倍
call yuan_shape ;bx 为偏移量
yuan3:
mov n,29h
mov x,0
mov bx,k
mov y,bx