8086数字时钟课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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存
储单元中