微机课程设计

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

PC机实时时钟的设计

利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示XX(时):XX(分):XX(秒)。DATA SEGMENT

COUNT DB 100

;******************************初始的时间显示********************* TENH DB '1'

HOUR DB '2:'

TENM DB '0'

MINUTE DB '0'

DB ':'

TENS DB '0'

SECOND DB '0',0DH,0DH,'$';初始显示12:00:00

;*****************************初始的界面显示内容******************** ENTER1 DB " --------------------------WELCOME-----------------------------",0AH,0DH DB " BaoYan 120900931 ",0AH,0DH

DB " All Rights Reserved ",0AH,0DH

ENTER2 DB ' The Time Now is ',10 DUP(0)

ENTER3 DB 'Do you want to change the time? [Y/N]'

ENTER4 DB '**--When finished changing the time,please press "enter" to continue--**'

ENTER5 DB '**--You can press the left or right button for changing the hour ,minute --**' ENTER6 DB '**--or second that you want--**'

DATA ENDS

STACK SEGMENT PARA STACK 'STACK'

DB 256 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START PROC FAR

PUSH DS

MOV AX,0

PUSH AX;标准序返回DOS

MOV AH,07H

INT 21H ;初始时无显示,此时等待键盘输入,AL=字符的ASCII码,输入无回显

;***************************将中断矢量压入堆栈保存******************** CLI ;关中断,防止有些硬件对中断的干扰

CLD ;使DF=0

MOV AX,0000H

MOV DS,AX

MOV SI,0020H ;DS:SI指向08H中断向量

LODSW ;取08中断入口的偏移地址

MOV BX,AX

LODSW ;取08中断入口的段地址

PUSH AX

PUSH BX ;压栈保护

MOV AX,DATA

MOV DS,AX ;建立数据段的可寻址性

;************************将中断向量压入新地址************************ MOV AX,0000H

MOV ES,AX

MOV DI,0020H ;ES:DS指向08中断向量存放地址

MOV AX,OFFSET TIMER

STOSW ;写入偏移地址

MOV AX,CS

STOSW ;写入段地址

MOV AL,00110110B ;8253初始化,0通道,方式3,二进制计数

OUT 43H,AL

MOV AX,11932 ;计数初值=11932

OUT 40H,AL

MOV AL,AH

OUT 40H,AL

IN AL,21H ;读8259的中断屏蔽寄存器IMR

PUSH AX ;压栈保护,AL的值为0FCH

STI ;开中断

MOV AH,1

MOV CH,30H

INT 10H ;置光标类型

CALL CLEAN_SCREEN ;清屏

;******************************屏幕初始化*********************** PUSH AX

PUSH BX

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

MOV BH,000CH ;设置背景颜色(3)和前景颜色(e)

SUB CX,CX ;从0行0列开始

MOV DX,8F8FH ;到8F行8F列

INT 10H

POP AX

POP BX

;************************显示ENTER1的内容*********************** MOV DH,1 ;行号

MOV DL,0 ;列号

MOV BH,0 ;页号

MOV AH,2 ;置光标位置

INT 10H

MOV CX,199

MOV SI,OFFSET ENTER1

SHOW: MOV AH,0EH ;显示字符(光标前移),al 字符,bl前景色

MOV AL,[SI]

INT 10H

INC SI

LOOP SHOW

;***********************显示ENTER2的内容************************ PUSH ES

PUSH BP

PUSH BX

PUSH CX

PUSH DX;保护现场,让寄存器压栈(后同)

MOV BP,OFFSET ENTER2;取ENTER2的偏移地址(后同)

MOV AX,SEG ENTER2;取ENTER2的段地址(后同)

MOV ES,AX;ES:BP为欲显示的字符串地址(后同)

MOV CX,60;假设字符串长度为60(后同)

MOV BX,0007H;BH=00,为页号,BL=07H为显示的字符串属性,为银白色(后同)MOV DX,0600H;起始行为06,起始列为00(后同)

MOV AL,1

MOV AH,13H

INT 10H

POP DX

POP CX

POP BX

POP BP

POP ES

相关文档
最新文档