题目:
在CMOS RAM中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度为1个字节,存放单元为:
秒:0 分:2 时:4 日:7 月:8 年:9
这些数据以BCD码的方式存放。
从CMOS RAM中读取信息的方法是:
out 70H,寄存器 ;寄存器中存放了要访问的单元地址
in 寄存器,71H ;从单元处读取数据
接下来的是代码:
;编程,以 "年:月:日 时:分 星期几" 的格式,显示当前的日期、时间。
DATAS SEGMENT
Monday DB 'Monday',13,10,'$'
Tuesday DB 'Tuesday',13,10,'$'
Wednesday DB 'Wednesday',13,10,'$'
Thursday DB 'Thursday',13,10,'$'
Friday DB 'Friday ',13,10,'$'
Saturday DB 'Saturday',13,10,'$'
Sunday DB 'Sunday',13,10,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
START:
MOV AX,DATAS
MOV DS,AX
mov al,9
out 70h,al
in al,71h
call BCD
mov dl,45
mov ah,2
int 21h
mov al,8
out 70h,al
in al,71h
call BCD
mov dl,45
mov ah,2
int 21h
mov al,7
out 70h,al
in al,71h
call BCD
mov dl,32
mov ah,2
int 21h
mov al,4
out 70h,al
in al,71h
call BCD
mov dl,58
mov ah,2
int 21h
mov al,2
out 70h,al
in al,71h
call BCD
mov dl,32
mov ah,2
int 21h
mov al,6
out 70h,al
in al,71h
and al,15
call week
MOV AH,4CH
INT 21H
BCD proc
push bx
push cx
mov bl,al
rol bl,1
rol bl,1
rol bl,1
rol bl,1
and bl,15
mov dl,bl
mov bl,al
add dl,48
mov ah,2
int 21h
and bl,15
mov dl,bl
add dl,48
mov ah,2
int 21h
pop cx
pop bx
ret
bcd endp
week proc
cmp al,1
jne l1
LEA DX,Monday
MOV AH,9
INT 21H
l1:
cmp al,2
jne l2
LEA DX,Tuesday
MOV AH,9
INT 21H
l2:
cmp al,3
jne l3
LEA DX,Wednesday
MOV AH,9
INT 21H
l3:
cmp al,4
jne l4
LEA DX,Thursday
MOV AH,9
INT 21H
l4:
cmp al,6
jne l6
LEA DX,Friday
MOV AH,9
INT 21H
l6:
cmp al,5
jne l5
LEA DX,Saturday
MOV AH,9
INT 21H
l5:
cmp al,7
jne l7
LEA DX,Sunday
MOV AH,9
INT 21H
l7:
ret
week endp
CODES ENDS
END START
运行结果: