Chinaunix

标题: 程序中获取RTC [打印本页]

作者: system888net    时间: 2008-07-08 22:56
标题: 程序中获取RTC
X86 PC机中的硬件时钟RTC的信息保存在CMOS中, 有时程序需要不通过操作系统的API直接获取这个信息做为参考依据时,下列是直接获取时钟的方法:
CMOS RTC 的格式:
  0-1, 秒 ,BCD码表示
  2-3, 分,BCD码表示
  4-5, 时,BCD码表示
  6,    星期
  7,    日,BCD码表示
  8,    月,BCD码表示
  9,    年,BCD码表示

对CMOS的访问需要用到两个基本IO端口地址:
  0x70, RTC的地址寄存器, 用来out
  0x71, RTC的数据寄存器, 用来in

;获取小时
mov al,04h
out  70h,al
in     al,71h

;获取分钟
mov al,02h
out  70h,al
in     al,71h

;获取秒
mov al,00h
out  70h,al
in     al,71h

;获取年
mov al,09h
out  70h,al
in     al,71h

;获取月份
mov al,08h
out  70h,al
in     al,71h

;获取日
mov al,07h
out  70h,al
in     al,71h

[ 本帖最后由 system888net 于 2008-7-8 22:57 编辑 ]
作者: prolj    时间: 2008-07-08 23:03
写OS的人关心这些,不错
作者: albcamus    时间: 2008-07-11 11:39
只有real mode下才能调用bios中断吗? 还是ring0就可以?
作者: cjaizss    时间: 2008-07-11 11:48
标题: 回复 #3 albcamus 的帖子
ring0可以
作者: albcamus    时间: 2008-07-11 14:05
标题: 回复 #4 cjaizss 的帖子
thanks




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2