|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kane080824 于 2011-11-24 22:52 编辑
程序运行截图
程序源代码:
assume cs:code,ds:data,ss:var
data segment
db '--/--/-- --:--:--','$' ; 设置日期时间格式
data ends
var segment
dw 8 dup(0)
var ends
code segment
start: mov ax,data
mov ds,ax
mov ax,var
mov ss,ax
mov sp,16
mov bx,15 ; 数据段日期时间指针
mov dl,0 ; cmos日期时间指针
s: mov al,dl
call dt_ascii ; 日期时间转换成十进制数值子程序
add dl,2
cmp dl,6
je h
jmp s ; 以上处理时间
h: inc dl
mov al,dl
call dt_ascii
cmp dl,9
je ok
jmp h ; 以上处理日期
ok: call show ; 日期时间显示子程序
mov ax,4c00h
int 21h
dt_ascii:
out 70h,al
in al,71h ; 读取cmos日期时间数据
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h ;将cmos BCD码转换成十进制数值
mov byte ptr [bx],ah
mov byte ptr [bx+1],al ; 写入数据段字符串处以供中断处理程序显示
sub bx,3
ret
show: mov ah,2 ; 调用中断10h2号功能子程序
mov bh,0
mov dh,12
mov dl,31 ; 设置日期时间的显示位置
int 10h
mov dx,0 ; 调用中断21h9号功能子程序,显示日期时间字符串
mov ah,9
int 21h
ret
code ends
end start
|
|