汇编:通过70H, 71H端口读取cmos时间

assume cs:code, ds:data, ss:stack

data segment
	db 128 dup(0)
data ends

stack segment stack
	db 128 dup(0)
stack ends

code segment
	start:	mov ax, stack
		mov ss, ax
		mov sp, 128

		call init_reg
testA:		call show_month
		jmp testA

		mov ax, 4C00H
		int 21H

;================================================
init_reg:
		mov bx, 0B800H
		mov es, bx		
		ret

;================================================
show_month:
		mov al, 0
		out 70H, al   ; 读取cmos的0 地址的内容
		in al, 71H    ; 将读取的1个字节存到al寄存器
		
		mov ah, al
		shr ah, 1
		shr ah, 1
		shr ah, 1
		shr ah, 1
		and al, 00001111B	
	
		add ah, 30H
		add al, 30H

		mov di, 160*10+40*2
		
		mov es:[di], ah
		mov es:[di+2], al
		ret


code ends

end start

 

 

 

assume cs:code, ds:data, ss:stack

data segment
	db 128 dup(0)
data ends

stack segment stack
	db 128 dup(0)
stack ends


code segment

TIME_STYLE:	db	'YY/MM/DD HH:MM:SS',0
TIME_CMOS:	db	9,8,7,4,2,0
		
start:		mov ax, stack
		mov ss, ax
		mov sp, 128

		call show_time_style
		call show_clock

		mov ax, 4C00H
		int 21H


;======================================================
show_clock:

showTime:	mov si, OFFSET TIME_CMOS
		mov di, 160*10 + 30*2
		mov cx, 6

showDate:	mov al, ds:[si]
		out 70H, al
		in al, 71H
		
		mov ah, al
		shr ah, 1
		shr ah, 1
		shr ah, 1
		shr ah, 1
		and al, 00001111B
		
		add ah, 30H
		add al, 30H
		
		mov es:[di], ah
		mov es:[di+2], al
	
		inc si
		add di, 6
		loop showDate

		jmp showTime    ; 无限循环

		ret

;=======================================================
show_string:
		push dx
		push ds
		push es
		push si
		push di

showString:	mov dl, ds:[si]
		cmp dl, 0
		je showStringRet
		mov es:[di], dl
		add di, 2
		inc si
		jmp showString

showStringRet:
		pop di
		pop si
		pop es
		pop ds
		pop dx
		ret

;========================================================
show_time_style:
		mov si, OFFSET TIME_STYLE
		mov di, 160*10 + 30*2
		
		mov ax, cs
		mov ds, ax

		mov ax, 0B800H
		mov es, ax
		call show_string
		ret
code ends

end start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值