微机原理课程设计数字时钟程序_第1页
微机原理课程设计数字时钟程序_第2页
微机原理课程设计数字时钟程序_第3页
微机原理课程设计数字时钟程序_第4页
微机原理课程设计数字时钟程序_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北科技高校

课程设计报告

学生姓名:学号:—

专业班级:电子信息科学及工程

课程名称:微型计算机原理及应用

学年学期:2011—2012学年第1学期

指导老师:______________________

20011年12月

课程设计成果评定表

学生姓名学号成果

专业班级起止时间2011/12/26—2011/12/30

数字时钟程序

设计题目

指导老师:___________

年月日

书目

一、课设题目及目的.............................4

二、设计任务...................................4

三、总框图及设计流程..........................4

四、源程序清单................................6

五、调试结果及显示............................19

六、个人贡献..................................19

七、课程设计总结及体会.........................21

一、课设题目及目的

实习题目:数字时钟程序

实习目的:通过实习,使我们进一步弄懂所学到的课本学问,巩

固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序

设计、应用开发等基本理论学问的理解,提高汇编语言应用于技术的

实践操作技能,驾驭汇编语言应用系统设计、研制的方法,培育利用

科技革新、开发和创新的基本实力,为毕业后从事及其相关的工作打

下肯定的基础。

二、课设任务

本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统

时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通

过合理的操作能修改时和分的内容来修改时间。再有,可以给它设定

一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。除

此之外还能显示日期,日期分为年、月、日,其显示方式为xxxx年

XX月XX日。

显示时I司

DB'*******PRESSMORMTOCHANGE

SOUND!*************',OAH,ODH

DB'****PRESSSORSTOSETTHETIME**************

,,OAH,ODH;显示功能菜单

DB'***********PRESSESCBUTTONTO

EXIT**************',OAH,ODH,'$'

TNDB'PLEASEINPUTTHENEWTIME(HH:MM:SS):,ODH,OAH,'$'

TMDB,PLEASEINPUTTHEALARMTIME(HH:MM:SS):,ODH,OAH,'$'

MUSICMESSDB'PLEASECHOOSETHETYPEOFMUSIC:1(FAST)

2(MIDDLE)3(SLOW),,ODH,OAH,'$'

MESS2DB,TIMEIS:',OAH,ODH,'$'

MESS3DB'TODAYIS:',OAII,ODH,'$'

DBUFFER1DB20DUP('')

TBUFFDB

40;

在数据段开一段时间显示缓冲区

DB?

DB40DUP(?)

I1ORDB?

MINDB?

SECDB?

TEMPHORDB?

TEMPMINDB?

TEMPSECDB?

MUSTCDW

800;存

放音乐的频率数

DATAENDS

STACKSEGMENT

DB100DUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,SS:STACK,DS:DATA

START:

CALL

CLEAR;

调用清屏子程序

DISPLAY:

;时间显示部分

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETT_BUFF;送T_BUFF的偏移地址到BX

MOVAH,2CH;调用DOS时间调用功能,功能号:2CH,小时,

分钟,秒数分别保存在CH,CL,DH中

INT21H

推断时间是否相等

SUB

DH,1;秒数

+1修正

CALLCHECK

MOVAL,CH;小时数设定

MOVAH,0

CALLBCTD;调用进制转换子程序二进

制BCD码子程序

PUSHAX

ANDAL,0F011;选取AL高四位

MOVCL,4;设置右循环的次数

RORAL,CL;右循环

ORAL,30H;加30H得到ACSII码

MOV[BX],AL;将得到的结果送到T_BUFF缓冲

INCBX;BX自加1,指针指向下一个缓

冲区的下一个地址

POPAX

ANDAL,OFH;选取低四位

ORAL,30H

MOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地址

INCBX

MOVAL,':显示分隔符号

MOV[BX],AL

INCBX

MOVAH,2CH;取时间

INT21H

MOVAL,CL;分钟数设定

MOVAH,0

CALLBCTD;调用进制转换子程序二进制BCD码子程序

PUSHAX

ANDAL,OFOH;选取AL高四位

MOVCL,4;设定循环次数

ROLAL,CL;循环左移4次

ORAL,30H;加30H得到ACS11码

MOV[BX],AL;将得到的结果送到T_BUFF缓冲区

INCBX;BX自加1,指针指向下一个缓冲区的下一个地址

POPAX

ANDAL,OFH;选取低四位

ORAL,30H

MOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地

INCBX

MOVAL,J:';显示分隔符号

MOV[BX],AL

INCBX

MOVAH,2CH;秒设定

INT21H

MOVAL,DH

MOVAH,0

CALLBCTD;调用进制转换子程序二进制BCD码子程序

PUSHAX

ANDAL,OFOH;选取AL高四位

MOVCL,4

ROLAL,CL

ORAL,30H;加30H得到ACS11码

MOV[BX],AL;将得到的结果送到T_BUFF缓冲区

INCBX

POPAX

ANDAL,OFH;选取低四位

ORAL,3011

MOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地

INCBX

MOVAL,'$';将字符串的结束位送至显示缓冲区的最终一

MOV[BX],AL

CALLDATE

PUSHBX;置光标位置,AH=2,BH=O,DH跟DL分别为行

号及列号,并入栈爱护BX

MOVAH,2;0^1用于此程序最下边的在下面的两个置光

标位置

MOVBH,0

MOVDH,17;行

MOVDL,41;列

INT1011

POPBX

LEADX,T.BUFF;送T_BUFF偏移地址到DX,并调用DOS显

不功能,功能号为9

MOVAH,9

INT21H;至此当前时间的显示功能结束!

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,16

MOVDL,41

INT1OH;日期

POPBX

LEADX,DBUFFER1

MOVAH,9

INT21H

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,16

MOVDL,21

INT1011

POPBX

LEADX,MESS3

MOVAH,9

INT21H;显示MESS3

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,0

MOVDL,0

INT10H

POPBX

LEADX,MESSI

MOVAH,9

INT2III;显示MESSI

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,17

MOVDL,21

INT1OH

POPBX

LEADX,MESS2

MOVAH,9

INT21H;显示MESS2

CALLDELAY1

MOVAH?1;调用键盘I/O中断功能号1,获得键值到AL

INT16H

CMPAL,'M'

JEEDITMUSIC

CMPAL,'M'

JEEDITMUSIC

CMPALJC';是C键,转移闹钟时间修改程序

JEEDITTIME

CMPAL,'C';是C键,转移闹钟时间修改程序

JEEDTTTTME

CMPAL,'S';是S键,转移时间修改程序

JECOR

CMPAL,'S';是S键,转移时间修改程序

JECOR

CMPAL,1BH

JZQUIT键,退出程序

JMPDISPLAY

QUIT:

MOVAll,4CI1

INT21H

RET

COR:CALLSETTIME;设置时间

EDITMUSICPROC

PUSHAX;入栈爱护数据

PUSHBX

PUSHCX

PUSHDX

PUSHF

MOVDX,OFFSETMUSICMESS;显示修改音乐的种类提示

MOVAH,09H

INT21H

MOVDX,OFFSETT_BUFF;数据缓冲区的数据输入

MOVAH,OAH

INT2111

ANDDX,OH

LEABX,T_BUFF

INCBX

INCBX

INCBX

MOVAL,[BX]

CMPAL,'1'

JEM800T0

CMPAL/2'

JEM1600T0

CMPAL,'3'

JEM3200T0

M800T0:M0VMUSIC,800

JMPT

M1600T0:M0VMUSIC,1600

JMPT

M3200T0:M0VMUSIC,3200

T:

POPF;出栈复原数据

POPDX

POPCX

POPBX

POPAX

JMPSTART

RET;返回DOS

EDITMUSICENDP;结束

BCTDPROCNEAR;二进制BCD码子程序

;AX输入参数

;AX输出参数,存放调整过的BCD码

MOVDX,AX

MOVAX,0

MOVCX,16;设置循环次数

BCTD1:

CLC;清进位标记C

RCLDX,1;通过进位的循环左移

ADCAL,AL;带进位加法

DAA;加法的十进制调整

XCHGAL,AH;交换高,低8位

ADCAL,AL

DAA

XCHGAL,AH

LOOPBCTD1;循环次数保存在CX里

RET

BCTDENDP

EDITTIMEPROC;时间修改程序

PUSHAX;入栈爱护数据

PUSHBX

PUSHCX

PUSHDX

PL'SHF

MOVDX,OFFSETTM;显示修改时间的格式提示

MOVAH,0911

INT21H

MOVDX,OFFSETT_BUFF;数据缓冲区的数据输入

MOVAH,OAH

INT21H

ANDDX,OH

LEABX,T_BUFF

INCBX

INCBX

INCBX

MOVDH,[BX]

SUBDH,3OH

INCBX

MOVDL,[BX]

SLBDL,3011

MOVCL,10

MOVAL,DH

MULCL

ADDAL,DL

MOVCH,AL

MOVHOR.AL

MOVTEMPIIOR,AL

INCBX

INCBX

MOVDH,[BX]

SUBDH,30H

INCBX

MOVDL,[BX]

SUBDL,3011

MOVCL,10

MOVAL,DH

MULCL

ADDAL,DL

MOVCL,AL

MOVMIN,AL

MOVTEMPMIN,AL

INCBX

INCBX

MOVDH,[BX]

SUBDH,3OH

INCBX

MOVDL,[BX]

SUBDL,3011

MOVCL,10

MOVAL,Dll

MULCL

ADDAL,DL

MOVDH,AL

MOVTEMPSEC,AL

POPF;出栈复原数据

POPDX

POPCX

POPBX

POPAX

JMPSTART

RET

EDTTTTMEENDP

CLEARPROCNEAR

PUSHAX;入栈爱护现场

PUSHBX

PUSHCX

PUSHDX

MOVAX,0600H;AH=06(滚动)AL=OO(全屏空白)

MOVBHJFH;设置背景颜色(1蓝色)和前景颜色(F白

色)

SUBCX,CX

MOVDX,5F5F11

INT10H

POPDX;出栈复原现场

POPCX

POPBX

POPAX

RET

CLEARENDP

DATEPROCNEAR

MOVAH,2AH;取日期CX:DH:DL二年:月:日AL二星期

INT21H

MOVSI,0

MOVAX,CX

MOVBX,100

DIVBL

MOVBL,AH

CALLBCDASC1;日期数值转换成相应的ASCII码字符

MOVAL,BL

CALLBCDASC1

INCSI

MOVAL,DH

CALLBCDASC1

INCSI

MOVAL,DL

CALLBCDASC1

MOVAL,'$'

MOVDBUFFER1[SI],AL

RET

DATEENDP

BCDASC1PROCNEAR

PUSHBX

CBW

MOVBL,10

DIVBL

ADDAL/O'

MOVDBUFFER1[SI],AL

INCSI

ADDAH,J0,

MOVDBUFFER1[SI],AH

INCSI

POPBX

RET

BCDASC1ENDP

SETTIMEPROC;时间修改子程序

CALLINPUT;调用键盘输入子程序输入数据

MOVCH,HOR

MOVCL,MIN

MOVDH,SEC

ANDDL?OH

MOVAH?2DH

INT21H

JMPSTART

RET

SETTIMEENDP

DELAY1PROC;精确延迟时间子程序

MOVDX,04FFH;循环次数

UP:XORCX,CX

A:NOP

LOOPA

DECDX

JNZUP

RET

DELAY1ENDP

INPUTPROC;输入子程序

PUSHAX;入栈爱护数据

PUSHBX

PUSHCX

PUSHDX

PUSHF

MOVDX,OFFSETTN;显示修改时间的格式提示

MOVAH,09H

INT21H

MOVDX,OFFSETT_BUFF;数据缓冲区的数据输入

MOVAH,OAH

INT21H

ANDDX,OH

LEABX,T_BUFF

INCBX

INCBX

MOVDH,[BX]

SUBDIL3011

INCBX

MOVDL,[BX]

SUBDL,30H

MOVCL,10

MOVAL,DH

MULCL

ADDAL,DL

MOVCH,AL

MOVHORfAL

INCBX

INCBX

MOVDH,[BX]

SUBDH,30H

INCBX

MOVDL,[BX]

SUBDL,30H

MOVCL,10

MOVAL,DH

MULCL

ADDAL,DL

MOVCL,AL

MOVMIN,AL

INCBX

INCBX

MOVDH,[BX]

SUBDH?30H

INCBX

MOVDL,[BX]

SUBDL,3011

MOVCL10

MOVALfDH

MULCL

ADDAL,DL

MOVDH,AL

MOVSEC,AL

POPF;出栈复原数据

POPDX

POPCX

POPBX

POPAX

RET

INPUTENDP

CHECKPROC

PUSHAX

PUSHBX

CMPCH,TEMPHOR;设置定点报时

JNECF1

CMPCL,TEMPMIN

JNECF1

CMPDU,TEMPSEC

JEXIANG

CF1:

CMPCL,0;设置整点报时

JNECF

CMPDH,0

JNECF

XIANG:

CALLOPEN

PUSHDX

PUSHCX

MOVDX,12H

MOVAX,34DEH

MOVCX,MUSIC

DIVCX

OUT42H,AL

MOVAL,AH

OUT42H,AL

MOVAH,1

INT21H

POPCX

POPDX

CALLCLOSE

CF:

POPBX

POPAX

RET

CHECKENDP

OPENPROC

PUSHAX

INAL,61H

ORAL,03H

OUT61H,AL

POPAX

RET

OPENENDP

CLOSEPROC

PUSHAX

INAL,61H

ANDAL,OFCH

OUT61H,AL

POPAX

RET

CLOSEENDP

CODEENDS

ENDSTART

五.调试结果及显示

,,煦D:\隹序$^\TM\TKASM2〜1khengxu\Masm\bin\DWTemp.exe

XXXXXXXXXXXXXXMXASMASSIGNHENTXXXX*XXMXX******XX,

XXXX乂XXXXXXXMX'ELECTRONICCLOCKxxxxxxxxxxxxxxxhxx

*******PRESSCORCTOEDITTHEALARMTIME*******

*******PRESSMORMTOCHANGESOUND?MMXXMMXXXXXXX

*M*»PRESSSORSTOSETTHETIME**************

XXMMXXMMXXXPRESSESCBUTTONTOEXITXXMXXXXXXXXXXX

TODAYIS:20111221

TIMEIS:23:20:07

六.个人贡献

在本次课设实现过程中,我主要负责程序校正,和一部分程序的

说明,主要有以下程序:MOVAL,CH;小时数设定

MOVAH,0

CALLBCTD;调用进制转换子程序二进

制BCD码子程序

PUSHAX

ANDAL,OFOH;选取AL高四位

MOVCL,4;设置右循环的次数

RORAL,CL;右循环

ORAL,3011;加30H得到A到II码

MOV[BX],AL;将得到的结果送到T.BUFF缓冲

INCBX;BX自加1,指针指向下一个缓

冲区的下一个地址

POPAX

ANDAL,OFH;选取低四位

ORAL,30H

MOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地址

INCBX

MOVAL/:';显示分隔符号

MOV[BX],AL

INCBX

MOVAH,2cH;取时间

INT21H

MOVAL,CL;分钟数设定

MOVAH,0

CALLBCTD;调用进制转换子程序二进制BCD码子程序

PUSHAX

ANDAL,OFOH;选取AL高四位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论