微机原理课程设计.docx
- 文档编号:4923439
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:56
- 大小:108.37KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(56页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
重庆三峡学院
微机原理与接口技术课程设计
课题名称指针显示时钟
专业XXXXXXXXXX
班级XXXXXXXXXXX
学号XXXXXXXXXX
姓名XXX
2011年6月28日
微机综合实验课程设计报告书
姓名:
XXX班级:
08级电信X班学号:
XXXXXXXXX成绩:
题目:
指针显示时钟
设计题目分析:
用汇编语言设计一个指针显示时钟程序,基于8086微型计算机,利用汇编设计系统时间显示,该设计为软件设计。
(1)实现时分秒的指针计时显示并具有报时功能,调用系统时间显示于屏幕中央
(2)软件设计
1.功能简介
2.画出相应的流程图
3.汇编程序设计
4.用MASM5编译器编译并运行
(3)显示界面
设计步骤详细介绍:
本程序包含三个文件:
clock.asm、sound.asm和music.asm。
其中,sound.asm为通用发声程序;music.asm为乐曲程序,用此两个文件实现音乐和报时;clock.asm为主程序,用以实现钟表的显示。
调用画圆程序,在屏幕上显示出钟表的框架,通过时钟中断(INT1AH的2号功能调用)来确定表的时针、分针和秒针的位置,并通过调用相关子程序画在屏幕上。
时针、分针、秒针的图形指针在时钟调用过程中反复循环着擦除与画,实现了钟表的动画效果。
在实现此时钟显示时还设置了自动报时和音乐的功能,为了便于观察,在程序中设置钟表没每走一分钟就报时一次。
实现的程序段为:
INCCOUNTO
CMPCOUNT0,5
JNZMINUTE_y1
MOVCOUNT0,0
CALLMUSIC
CALLMUSIC
CALLMUSIC
在程序汇编时需要将三个文件分别汇编,生成三个目标文件Clock.obj、sound.obj和music.obj,链接是的表达式为“clock.obj+sound.obj+music.obj”,生成可执行文件clock.obj.
主程序结构流程图如下:
关键技术分析:
在此指针显示时钟设计中关键是如何调用子程序进行自动报时和听音乐功能;还有就是如何通过时钟中断调用来确定表的时针、分针和秒针的位置。
设计中遇到的问题和解决的步骤、方法:
遇到问题:
在课程设计中遇到的最大的困难是如何产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断的返回还不是很清楚,最主要如何是通过时钟中断调用来确定表的时针、分针、和秒针的位置,并通过条用相关子程序画在屏幕上开始是不是很明白。
解决步骤、方法:
在此过程中我认真翻阅了课本,重点对课本《中断》这一章做了详细的研究和学习,同时还借阅了王爽的《汇编语言》一书,特别是对其中的一些常用的中断进行了全面的学习和深入的研究,基本上弄懂了各个中断的作用和应用,通过对这些中断的学习,使我对中断有了更深一步的认识,因而在相关程序的设计方面就容易了很多。
设计结果:
程序设计完成后,通过编译器编译成可执行文件.exe后,双击即可运行此指针显示的程序,同时屏幕上会出现一个时钟表盘,表盘上会显示相应的系统时间,同时在程序运行过程中,按C键可改变钟表界面各个部分的颜色;按B键可扩大表盘;按S键可听简单的音乐;按Q建退出程序。
附录1:
程序运行截图(2张)
附录2:
源程序列表
extrnmusic:
far,gensound:
far
;******************************************************
;*堆栈段
.286;******************************************************
STACK_SEGSEGMENTSTACK
STACK_BUFDW120DUP(?
)
TOPEQU$-STACK_BUF
STACK_SEGENDS
;******************************************************
;*数据段
;******************************************************
DATA_SEGSEGMENTPARA
;------------------------------------------------------
;TODO:
数据的定义及存储器的分配
ts1DB0
quitbufDB'welcomeyoutorunthisprogramme.'
quitbuf2DB'C:
changecolor;B:
extendthecolck;S:
reducetheclock'
quitbuf3DB'pressetosound;Pressqtoquit!
'
sigleDB80h
absxDW0
absyDW0
sutDW0
erroybzDB0
r0DW90
x0DW320
y0DW245
count0db0
count_hourDB11
count_minuteDB11
yuanxinxDW0
yuanxinyDW0
sDB0
s2DB0
s3DB0
hourDW0
hour2DW0
minuteDW0
minute2DW0
secondDB0
second2DB0
sin_xDW0
sin_xxDW0
xDW0
yDW0
x1DW0
xminyDW0
yminxDW0
xmaxDW0
ymaxDW0
yminDW0
xminDW0
sjx_xminyDW0
sjx_yminxDW0
sjx_xmaxDW0
sjx_ymaxDW0
sjx_yminDW0
sjx_xminDW0
yuanxDW0
yuanyDW0
y1DW0
x2DW0
y2DW0
x3DW0
y3DW0
DIancolorDB0
colorDB2
color_hourDB2
color_minDB6
color_secondDB9
color4DB10
color5DB11
color6DB12
backgroundcolorDB1
page1DB0
y2y1DW0
x2x1DW0
sjx_y2y1DW0
sjx_x2x1DW0
;-------------------------------
DATA_SEGENDS
;******************************************************
;*代码段
;******************************************************
CODE_SEGSEGMENTPARA
;-------------------------------
MAINPROCFAR
ASSUMECS:
CODE_SEG,DS:
DATA_SEG
ASSUMESS:
STACK_SEG
START:
MOVAX,STACK_SEG
MOVSS,AX
MOVSP,TOP
MOVAX,DATA_SEG
MOVDS,AX
;-------------------------------
;TODO:
从这里开始您的代码
;-------------------------------
beg:
MOVAX,0012h
INT10h
MOVDX,0010h
CALLb1002
LEABP,quitbuf
CALLmsg
MOVDX,010ah
LEABP,quitbuf2
CALLmsg
MOVDX,020ah
LEABP,quitbuf3
CALLmsg
beg2:
CALLskin
CALLskin2
CALLskin3
CALLCLk
MOVsecond,DH
MOVsecond2,DH
MOVcount_minute,11
CALLminute_lin
XORDX,DX
MOVAX,minute2
MOVCX,12
DIVCX
MOVCX,AX;minurte2/12
POPAX
ADDAX,CX
MOVhour2,AX
MOVcount_hour,11
CALLhour_lin
CALLCLk
MOVDL,DH
CALLbcd2
XORAH,AH
MOVCL,12
DIVCL
MOVcount_minute,AH;second%12初始值
DECcount_minute
XORDX,DX
MOVAX,minute2
MOVCX,12
DIVCX;minurte2%12
MOVcount_hour,DL
DECcount_hour
INCsecond2
kk3:
CLI
CALLsecond_lin
STI
JMPks
ks:
MOVAH,1
INT16h
JZkk3
MOVAH,8
INT21h
CMPAL,'q'
JEquit
CMPAL,'b'
JECHange_rb
CMPAL,'s'
JECHange_rs
CMPAL,'c'
JECHange_color
cmpal,'e'
jea0
JMPkk3
CHange_rs:
CMPr0,190
JAks
ADDr0,5
JMPtobeg2
CHange_rb:
CMPr0,60
JBks
SUBr0,5
JMPtobeg2
CHange_color:
LEASI,color_hour
MOVCX,6
CHange_kk1:
MOVAL,[SI]
INCAL
CMPAL,15
JCCHange_color_kk2
MOVAL,1
CHange_color_kk2:
MOV[SI],AL
INCSI
LOOPCHange_kk1
JMPtobeg2
a0:
callmusic
callmusic
callmusic
tobeg2:
CALLCLear
JMPbeg2
quit:
MOVAX,4C00H
INT21H
;*******************************
hour_linPROCNEAR
PUSHa
CMPcount_hour,11
JBtohour_yl
JMPhour_lin_next
tohour_yl:
MOVSIgle,3
JMPhour_yl
hour_lin_next:
MOVcount_hour,0
MOVSIgle,5
CALLCLk
MOVDL,CH
CALLbcd2
CMPAL,12
JBhour_kk1
SUBAL,12
hour_kk1:
MOVCL,30
MULCL
PUSHAX
XORDX,DX
MOVAX,minute2
MOVCX,12
DIVCX
MOVCX,AX
;minurte2/12
POPAX
ADDAX,CX
MOVhour2,AX;擦掉
MOVColor,0
MOVAX,hour
MOVBX,r0
ADDBX,20
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
ADDAX,270
ADDBX,400;90
CALLrenovate
MOVDX,yuanx;擦掉
MOVx2,DX
MOVDX,yuany
MOVy2,DX
MOVDX,x0
MOVx1,DX
MOVDX,y0
;擦掉
MOVy1,DX
CALLsjx
ADDAX,180
CALLrenovate
MOVDX,yuanx;擦掉
MOVx2,DX
MOVDX,yuany
MOVy2,DX
SUBBX,100
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX;擦掉
CALLsjx
MOVSIgle,4
;************************;重写
hour_yl:
MOVAL,color_hour
MOVcolor,AL
MOVAX,hour2
MOVBX,r0
ADDBX,70
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
ADDAX,90
ADDBX,600;90
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
;重写
ADDAX,180
CALLrenovate
MOVDX,yuanx
MOVx1,DX
MOVDX,yuany
MOVy1,DX
CALLsjxx
CALLsjxy
ADDAX,270
SUBBX,100
CALLrenovate
MOVDX,yuanx
MOVx3,DX
;重写
MOVDX,yuany
MOVy3,DX
CALLsjx
CALLsjxx
CALLsjxy
MOVCX,hour2
MOVhour,CX
hour_quit:
POPa
RET
hour_linENDP
;********************************
minute_linPROCNEAR
PUSHa
CMPcount_minute,11
JBtominute_yl
;仍是原来的一个
JMPminute_lin_next
tominute_yl:
MOVSIgle,0
JMPminute_yl
minute_lin_next:
INCcount_hour
CALLCLk
MOVDL,CL
CALLbcd2;bcd->16
MOVCL,6
MULCL;al*cl
PUSHAX
MOVDL,second2
CALLbcd2
XORAH,AH
MOVCL,12
DIVCL
MOVCL,AL
;second2/12
POPAX
MOVCH,0
ADDAX,CX
MOVminute2,AX
AAAa1:
MOVSIgle,2
MOVColor,0
MOVAX,minute
MOVBX,r0
ADDBX,10
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
ADDAX,268
ADDBX,800
;90
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
MOVDX,x0
MOVx1,DX
MOVDX,y0
MOVy1,DX
CALLsjx
ADDAX,180
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
ADDAX,90
SUBBX,200
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
CALLsjx
inccount0
cmpcount0,5
jnzminute_yl
movcount0,0
callmusic
callmusic
callmusic
;***************************重写
minute_yl:
MOVsigle,1
MOVAL,color_min
MOVcolor,AL
MOVAX,minute2
MOVBX,r0
ADDBX,30
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
ADDAX,90
ADDBX,900
;90
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
ADDAX,180
CALLrenovate
MOVDX,yuanx
MOVx1,DX
MOVDX,yuany
MOVy1,DX
CALLsjxx
CALLsjxy
ADDAX,270
SUBBX,200
CALLrenovate
MOVDX,yuanx
MOVx3,DX
MOVDX,yuany
MOVy3,DX
CALLsjxx
CALLsjxy
MOVCX,minute2
MOVminute,CX
CALLhour_lin
minute_kk1:
minute_quit:
POPa
RET
minute_linENDP
;******************indh秒数*********************
second_linPROCNEAR
PUSHa
CALLCLk
CMPsecond2,DH
JEto_second_quit
JMPsecond_lin_next
to_second_quit:
JMPsecond_quit
second_lin_next:
MOVSIgle,80h
MOVsecond2,DH
MOVColor,0
MOVDL,second;erase
CALLbcd2
MOVAH,0
MOVCL,6
MULCL
MOVBX,r0
ADDBX,10
CALLrenovate
MOVDX,yuanx
MOVx1,DX
MOVDX,yuany
MOVy1,DX
ADDAX,180
ADDBX,300
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
CALLlinex
CALLliney
;重写
MOVSIgle,80h
MOVAL,color_second
MOVcolor,AL
MOVDL,second2
CALLbcd2
MOVAH,0
MOVCL,6
MULCL
MOVBX,r0
ADDBX,10
CALLrenovate
MOVDX,yuanx
MOVx1,DX
MOVDX,yuany
MOVy1,DX
ADDAX,180
ADDBX,300
CALLrenovate
MOVDX,yuanx
MOVx2,DX
MOVDX,yuany
MOVy2,DX
CALLlinex
CALLliney
CALLyuanxin
MOVDL,second2
MOVsecond,DL
CALLminute_lin
CALLskin2
MOVCL,second2
MOVsecond,CL
CMPcount_minute,11
JEsecond_kk1
INCcount_minute
JMPsecond_quit
second_kk1:
MOVcount_minute,0
second_quit:
POPa
RET
second_linENDP
;******bxbbx*********inax度数***bx长度,*********
;OUTx2->ax,y2->dx;**
renovatePROCNEAR
PUSHa
ADDAX,270
PUSHAX
CALLSIn
MOVDX,0
MOVCX,BX
DIVCX
CMPSI,1
JEhjian
ADDAX,y0
JMPrenovate_kk1
hjian:
MOVCX,y0
SUBCX,AX
MOVAX,CX
renovate_kk1:
MOVyuany,AX
POPAX
CALLcos
MOVDX,0
MOVCX,BX
DIVCX
CMPSI,1
JEhjian2
ADDAX,x0
JMPrenovate_kk2
hjian2:
MOVCX,x0
SUBCX,AX
MOVAX,CX
renovate_kk2:
MOVyuanx,AX
POPa
RET
renovateENDP
;**************************
ClkPROC
MOVAH,2
INT1ah
RET
CLkENDP
;*****************cosxinaxoutax,si符号******************
cosPROCNEAR
ADDAX,90
cos_kk1:
CALLSIn
RET
cosENDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)