微机原理课程设计数字时钟程序.docx

上传人:b****3 文档编号:11519112 上传时间:2023-06-01 格式:DOCX 页数:29 大小:126.06KB
下载 相关 举报
微机原理课程设计数字时钟程序.docx_第1页
第1页 / 共29页
微机原理课程设计数字时钟程序.docx_第2页
第2页 / 共29页
微机原理课程设计数字时钟程序.docx_第3页
第3页 / 共29页
微机原理课程设计数字时钟程序.docx_第4页
第4页 / 共29页
微机原理课程设计数字时钟程序.docx_第5页
第5页 / 共29页
微机原理课程设计数字时钟程序.docx_第6页
第6页 / 共29页
微机原理课程设计数字时钟程序.docx_第7页
第7页 / 共29页
微机原理课程设计数字时钟程序.docx_第8页
第8页 / 共29页
微机原理课程设计数字时钟程序.docx_第9页
第9页 / 共29页
微机原理课程设计数字时钟程序.docx_第10页
第10页 / 共29页
微机原理课程设计数字时钟程序.docx_第11页
第11页 / 共29页
微机原理课程设计数字时钟程序.docx_第12页
第12页 / 共29页
微机原理课程设计数字时钟程序.docx_第13页
第13页 / 共29页
微机原理课程设计数字时钟程序.docx_第14页
第14页 / 共29页
微机原理课程设计数字时钟程序.docx_第15页
第15页 / 共29页
微机原理课程设计数字时钟程序.docx_第16页
第16页 / 共29页
微机原理课程设计数字时钟程序.docx_第17页
第17页 / 共29页
微机原理课程设计数字时钟程序.docx_第18页
第18页 / 共29页
微机原理课程设计数字时钟程序.docx_第19页
第19页 / 共29页
微机原理课程设计数字时钟程序.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理课程设计数字时钟程序.docx

《微机原理课程设计数字时钟程序.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计数字时钟程序.docx(29页珍藏版)》请在冰点文库上搜索。

微机原理课程设计数字时钟程序.docx

微机原理课程设计数字时钟程序

河北科技大学

课程设计报告

学生姓名:

学 号:

 

专业班级:

   电子信息科学与工程  

课程名称:

 微型计算机原理及应用   

学年学期:

 20 11—2012学年第1学期

指导教师:

       

2 0011 年 12月

课程设计成绩评定表

学生姓名

学  号

成绩

专业班级

起止时间

2011/12/26—2011/12/30

设计题目

数字时钟程序

指导教师:

      

       年 月日

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

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

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

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

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

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

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

一、课设题目及目的

实习题目:

数字时钟程序

实习目的:

通过实习,使我们进一步弄懂所学到的课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开发等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。

二、课设任务

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

截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。

再有,可以给它设定一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。

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

三、总框图及流程

四.源程序清单

DATA SEGMENT;数据段开始

MESS1DB'****************ASMASSIGNMENT*******************  ',0AH,0DH

  DB' ***************ELECTRONICCLOCK******************   ',0AH,0DH     

     DB'*******Press C or c toEDITthe ALARMtime*******  ',0AH,0DH

  DB '*******PRESSM ORmTOCHANGE SOUND!

*************',0AH,0DH     

DB’****PRESSSORsTOSETTHETIME************** ',0AH,0DH    ;显示功能菜单 

   DB'  ***********PRESS ESC BUTTONTOEXIT**************  ',0AH,0DH,'$'

TNDB 'PLEASEINPUTTHENEWTIME(hh:

mm:

ss):

',0DH,0AH,'$'

TMDB'PLEASEINPUT THEALARM TIME(hh:

mm:

ss):

',0DH,0AH,'$'

MUSICMESSDB 'PLEASECHOOSE THE TYPEOFMUSIC:

1(FAST)2(MIDDLE)3(SLOW)',0DH,0AH,'$'

MESS2 DB 'Timeis:

',0AH,0DH,'$'

MESS3 DB'TODAYIS:

',0AH,0DH,'$'

  DBUFFER1 DB 20DUP(' ')

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

   DB?

  DB40 DUP(?

 HORDB ?

MINDB?

  SECDB ?

 TEMPHOR DB?

   TEMPMINDB ?

  TEMPSECDB?

  MUSICDW800               ; 存放音乐的频率数

DATA ENDS

STACKSEGMENT

 DB100DUP(?

STACK ENDS

CODESEGMENT

 ASSUMECS:

CODE,SS:

STACK,DS:

DATA

START:

CALL CLEAR           ;调用清屏子程序

DISPLAY:

              ;时间显示部分

MOV AX,DATA

MOVDS,AX

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

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

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

INT21H

               ;判断时间是否相等

SUBDH,1              ;秒数+1修正

CALLCHECK

;.........................................................................

MOVAL,CH       ;小时数设定

 MOV AH,0

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

PUSHAX

 AND AL,0F0H    ;选取AL高四位

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

 RORAL,CL   ;右循环

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

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

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

POPAX

ANDAL,0FH   ;选取低四位

 OR AL,30H

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

  INC BX

;........................................................................

MOVAL,':

';显示分隔符号

MOV[BX],AL

INCBX

;........................................................................

 MOVAH,2CH;取时间

INT 21H

;.......................................................................

 MOVAL,CL;分钟数设定

MOVAH,0

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

PUSH AX

 ANDAL,0F0H;选取AL高四位

MOVCL,4;设定循环次数

  rolal,cl;循环左移4次

 or al,30h;加30H得到ACSII码

 mov[bx],al;将得到的结果送到T_BUFF缓冲区

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

   pop ax

andal,0fh;选取低四位

 oral,30h

mov [bx],al;将转换后的低四位值送入缓冲区的下一个地址

inc bx

;.....................................................................

   moval,':

' ;显示分隔符号       

mov [bx],al

incbx

;.....................................................................

  mov ah,2ch;秒设定    

  int21h

 moval,dh

  movah,0

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

   pushax

 and al,0f0h;选取AL高四位

movcl,4

 rolal,cl

  or al,30h;加30H得到ACSII码

  mov [bx],al;将得到的结果送到T_BUFF缓冲区

incbx

 pop ax

 and al,0fh;选取低四位

  oral,30h

  mov[bx],al;将转换后的低四位值送入缓冲区的下一个地址

 inc bx

;..........................................................

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

   mov[bx],al

;.......................................................... 

  calldate

 pushbx;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX  

 movah,2;0~1用于此程序最下边的 在下面的两个置光标位置

   movbh,0

  movdh,17;行

   movdl,41;列

  int10h

  popbx

  leadx,t_buff;送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9

    movah,9

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

  pushbx;置光标位置 

  movah,2

  movbh,0

   mov dh,16

 movdl,41

 int10h;日期

 popbx

leadx,DBUFFER1

 movah,9

  int21h

  pushbx;置光标位置  

 mov ah,2

 movbh,0

 movdh,16

 mov dl,21

 int 10h

    pop bx

lea dx,mess3

  mov ah,9

  int21h ;显示MESS3

pushbx;置光标位置 

  movah,2

 movbh,0

  mov dh,0

  mov dl,0

  int10h

  popbx

  leadx,mess1

 movah,9

int21h;显示MESS1 

 pushbx;置光标位置  

  movah,2

 movbh,0

 mov dh,17

   movdl,21

  int10h

  popbx

  leadx,mess2

 mov ah,9

 int21h ;显示MESS2  

;.............................................

 call delay1

  mov ah,1  ;调用键盘I/O中断功能号1,获取键值到AL  

   int 16h

cmp al,'M'

jeeditmusic

 cmpal,'m'

   jeeditmusic

cmpal,'c';是c键,转移闹钟时间修改程序  

   jeedittime

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

je   edittime

cmp al,'s';是s键,转移时间修改程序

jecor

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

    jecor

  cmpal,1bh

jzquit ;是ESC键,退出程序

jmp display

quit:

 movah,4ch    

  int 21h

ret

Cor:

callsettime;设置时间

;..........................................

editmusic proc

pushax;入栈保护数据

push bx

pushcx

 pushdx

 pushf

 movdx,offsetmusicmess;显示修改音乐的种类提示 

mov ah,09h

 int21h

mov dx,offsett_buff;数据缓冲区的数据输入

movah,0ah

  int21h

 anddx,0h

leabx,t_buff

  incbx

inc bx

  inc bx

 mov al,[bx]

 cmpal,'1'

  jem800to

 cmp al,'2'

 jem1600to

 cmpal,'3'

jem3200to

m800to:

mov music,800

jmpt

m1600to:

movmusic,1600

jmpt

m3200to:

movmusic,3200

t:

 popf;出栈恢复数据  

 popdx

  popcx

 pop bx

 popax

 jmp start

 ret;返回DOS

editmusicendp;结束

bctdprocnear;二进制BCD码子程序

      ;AX输入参数  

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

 mov  dx,ax

  mov ax,0

movcx,16;设置循环次数 

bctd1:

clc;清进位标志C  

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

adcal,al;带进位加法

    daa   ;加法的十进制调整 

xchg al,ah;交换高,低8位  

 adcal,al

 daa

   xchg al,ah

 loopbctd1;循环次数保存在CX里  

 ret

bctd endp

;.....................................

edittime proc ;时间修改程序

  pushax  ;入栈保护数据

  pushbx

 pushcx

pushdx

 pushf

  movdx,offsettm ;显示修改时间的格式提示

 mov ah,09h

 int21h

 mov dx,offsett_buff;数据缓冲区的数据输入 

   mov ah,0ah

 int 21h

 anddx,0h

   leabx,t_buff

  incbx

incbx

   incbx

   movdh,[bx]

    subdh,30h

incbx

MOVDL,[BX]

  SUBDL,30H

MOV CL,10

    MOV AL,DH

  MULCL

 ADDAL,DL

MOVCH,AL

   MOV HOR,AL

 MOVTEMPHOR,AL

 INC BX

  INC BX

 MOVDH,[BX]

 SUBDH,30H

 INCBX

  MOV DL,[BX]

    SUBDL,30H

 MOVCL,10

 MOVAL,DH

MUL CL

ADDAL,DL

MOVCL,AL

  MOV MIN,AL

 MOVTEMPMIN,AL

  INC BX

 INCBX

MOVDH,[BX]

SUBDH,30H

   INCBX

  MOV DL,[BX]

 SUB DL,30H

 MOVCL,10

   MOVAL,DH

 MULCL

 ADDAL,DL

 MOV DH,AL

   MOVTEMPSEC,AL

POPF   ;出栈恢复数据  

 POPDX

  POPCX

  POPBX

 POPAX

JMP START

RET

EDITTIMEENDP

;......................................

CLEARPROCNEAR

   PUSHAX;入栈保护现场

   PUSH BX

PUSH  CX

 PUSHDX

  MOV  AX,0600H;AH=06(滚动)AL=00(全屏空白)

  MOV BH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色)

  SUBCX,CX

 MOVDX,5F5FH

 INT 10H

 POP   DX;出栈恢复现场

  POP   CX

 POP BX

   POP AX

RET 

CLEAR ENDP

;....................

DATE PROC   NEAR

MOV  AH,2AH;取日期CX:

DH:

DL=年:

月:

日AL=星期

INT 21H

  MOV SI,0

 MOV   AX,CX

MOVBX,100

DIV BL

 MOVBL,AH

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

 MOV AL,BL

  CALL  BCDASC1

INC  SI

MOV AL,DH

  CALLBCDASC1

 INC   SI

MOV  AL,DL

 CALLBCDASC1

 MOV   AL,'$'

  MOV  DBUFFER1[SI],AL

 RET

DATEENDP

;..................

BCDASC1  PROCNEAR

PUSH  BX

CBW

MOVBL,10

DIVBL

  ADD AL,'0'

MOVDBUFFER1[SI],AL

INC  SI

 ADD AH,'0'

 MOV DBUFFER1[SI],AH

  INC  SI

POP    BX

RET

BCDASC1 ENDP

;........................................

SETTIMEPROC;时间修改子程序

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

MOV CH,HOR

 MOV CL,MIN

 MOV DH,SEC

   AND DL,0H

 MOV  AH,2DH

 INT  21H

JMPSTART

RET

SETTIME ENDP

;........................................

DELAY1 PROC;精确延迟时间子程序

 MOV DX,04FFH;循环次数

UP:

XOR CX,CX

A:

NOP

  LOOPA

 DECDX

 JNZ UP

RET

DELAY1 ENDP

;.......................................

INPUT PROC;输入子程序

 PUSH AX;入栈保护数据

PUSH   BX

PUSH CX

PUSHDX

 PUSHF

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

  MOV  AH,09H

INT21H

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

MOVAH,0AH

INT   21H

AND DX,0H

 LEA  BX,T_BUFF

INCBX

INCBX

  MOV   DH,[BX]

 SUBDH,30H

  INC BX

 MOV DL,[BX]

 SUB DL,30H

MOV CL,10

 MOVAL,DH

 MULCL

ADD AL,DL

 MOV  CH,AL

  MOV  HOR,AL

INC BX

 INC  BX

 MOV DH,[BX]

 SUBDH,30H

 INC BX

 MOV  DL,[BX]

 SUB DL,30H

 MOVCL,10

MOVAL,DH

MULCL

 ADD AL,DL

 MOV CL,AL

MOV  MIN,AL

INC  BX

  INC BX

MOV   DH,[BX]

SUB  DH,30H

 INC  BX

MOV  DL,[BX]

 SUB DL,30H

 MOV   CL,10

MOV   AL,DH

MUL CL

 ADDAL,DL

MOVDH,AL

 MOV SEC,AL

 POPF;出栈恢复数据

POPDX

 POPCX

 POPBX

 POPAX

  RET

INPUTENDP

;..................................................

CHECKPROC

PUSHAX

PUSH BX

CMPCH,TEMPHOR;设置定点报时

 JNE CF1

CMPCL,TEMPMIN

 JNE CF1

CMP DH,TEMPSEC

 JEXIANG

CF1:

 CMPCL,0  ;设置整点报时

 JNE CF

 CMPDH,0

 JNECF

XIANG:

CALLOPEN

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2