8086数字时钟课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

INTEL 8086/8088系列微型计算机

原理及接口技术

课程名称:微型计算机原理及接口技课程设计

设计题目:具有年月日时分秒功能的时钟显示

院系:电气工程学院

班级:

设计者:

学号:

同组者:

指导教师:

设计时间:

目录

一、设计内容与要求 (2)

二、设计思路 (3)

三、流程图 (4)

四、程序 (7)

五、运行结果 (12)

六、硬件设计…………………………………………………………………………………………………

七、调试步骤 (13)

八、心得体会 (14)

九、参考文献 (14)

一、设计内容与要求:

用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间****年**月**日**时**分**秒。在程序启动后,微机屏幕上显示当前时间,按下a键开始计时,按下b键停止计时,按下c键退出程序。

二、设计思路:

利用BIOS的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD 码)送入寄存器。其中CH 和CL中保存的是小时数和分钟数;DH中保存的是秒钟数。

利用除法命令DIV,若进行字节操作,16位被除数隐含在AX中,8位除数就是源操作数,结果的8位商在AL中,8位余数在AH中,即

(AL)(AH)/(SRC)的商

(AL)(AH)/(SRC)的余数

若进行字操作,32位被除数低16位隐含在AX中,高16位8位隐含在DX中,16位除数就是源操作数,结果的16位商在AX中,16位余数在DX中,即(AX)(DX,AX)/(SRC)的商

(DX)(DX,AX)/(SRC)的余数

通过以上方法将二进制表示的年月日时分秒转换为BCD码,再将BCD码表示的时,分,秒转换成AS CⅡ码并送入屏幕显示。能调用子程序,若显示时间与当前时间不符,则校准显示时间,并用INT 21H 的7号功能调用判断输入回车并清屏。若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示。

详细过程见程序注释。

三、流程图:

四、程序:

GB MACRO X ;宏定义

MOV AX,0200H

MOV BX,0000H

MOV CX,0000H

MOV DX,X

INT 10H

ENDM

XIANSHI MACRO Y,Z,W

MOV BP,OFFSET Y

MOV AH,13H

MOV AL,0B

MOV BX,0EH

MOV CX,Z

MOV DX,W

INT 10H

ENDM

DATA SEGMENT

BUFFER1 DB 11 DUP (?)

BUFFER2 DB 9 DUP (?)

SECOND DB ?

SIGN DB ?

STR1 DB 'THE CURRENT TIME: $'

STR4 DB 'PRESS C TO EXIT:$'

DATA ENDS

STACK SEGMENT STACK 'STACK'

DB 100 DUP ('S')

STACK ENDS

CODE SEGMENT PARA 'CODE'

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA STA PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,0600H

MOV BX,0754H

MOV CX,0000H

MOV DX,194FH

INT 10H

XIANSHI STR1,17,0416H ;显示‘ THE CURRENT TIME:’

XIANSHI STR4,16,1016H ;显示‘ PRESS C TO EXIT:’

BEGIN: CMP SIGN,3 ;若输入字符C,则令SIGN=3,即退出程序,若无输

入或输入字符不是C,则反复从系统中取出当前时

间并显示

JE TUI1

MOV AH,2AH

INT 21H ;取日期

LEA BX,BUFFER1

PUSH DX ;保护寄存器

MOV AX,CX ;利用除法产生商和余数,把以二进制形式保存的

年号转换为BCD码

MOV DX,0000H ;年号除以1000得到商即为年号的千位

MOV CX,1000

DIV CX

OR AL,30H ;年号的千位转换为其ASCII码并存入BUFFER1第1

存储单元中

MOV [BX],AL

MOV AX,DX ;年号的百位转换为其ASCII码并存入BUFFER1第2

存储单元中

MOV CL,64H

DIV CL

OR AL,30H

INC BX

MOV [BX],AL

MOV AL,AH

MOV AH,00H ;年号的十位转换为其ASCII码并存入BUFFER1第3

存储单元中

MOV CL,10

DIV CL

OR AL,30H

INC BX

MOV [BX],AL

OR AH,30H ;年号的千位转换为其ASCII码并存入BUFFER1第4存

储单元中

INC BX

MOV [BX],AH

POP DX ;年号转换完毕

INC BX

MOV CL,2DH ;“—”号的ASCII码存入BUFFER1第5存储单元中

MOV [BX],CL ;月数除以10得到商即为月数的十位

MOV AL,DH ;月数的十位转换为其ASCII码并存入BUFFER1第6存

储单元中

相关文档
最新文档