BIOS中断时钟服务
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BIOS中断——时钟服务(INT 1AH)
1、PC微机系统时钟原理:
PC记录时间的方法有两种:第一,所有的PC机都有一个计时芯片,初始化后以每秒约18.2次发出脉冲。这些脉冲经过操作系统计算形成BIOS日时钟计数,保存在BIOS数据区(0040:006CH~0040:006FH)的两个变量timer__low和timer__high中。每次脉冲调用计时器中断(INT 08H)。中断08H服务程序对这两个计时变量进行操作,即每次对低字time__low单元加1,并当该单元复位(计满65536次)时,向高字timer__high进1。因此,这两个计时变量保持着日时钟的踪迹;其中,高字记录小时,低字记录分、秒。INT 08H是个硬中断,只要硬件未被禁止,无论CPU在做什么,它都保持进行。第二种是使用实时时钟一种计算时、分和秒的时钟。PC的实时时钟由电池驱动,关机后它仍然正常运行。当PC启动后,DOS可从机器的实时时钟读取时间并把转换为BIOS日时钟读数。此后该值每秒自动增加18.2,当DOS需要了解时间时,它再把日历钟计数转换回到时/分/秒格式。PC微机通过每秒钟执行18.2次INT 08H中断,来完成对BIOS日时钟计时;而读取或修改这个计数器的值则是由日时钟I/O中断INT 1AH 完成。如果INT 1AH中断修改了计数器值,则系统日时钟将按这个新值开始计时。此外,INT 1AH还可完成读取、设置系统的实时钟以及设置报警时钟等功能。
2、bios时钟是一个计数器,在地址40:6C-6F是一个long值。此值每秒钟递增18(完全在后台进行)。其意义为从今天0:00起逝去的秒数*18.2。bios时间功能号正时对这个值的运算,而DOS时钟又是通过调用bios的功能号完成的。
3、实时钟是一个硬件时钟,其计数器完全存在于CMOS中,也不产生中断。在每下起动,系统POST程序从CMOS中读取时钟并存于BOIS的40:6C-6F。然后这个值将以每秒18.2的计数递增。
4、设置系统时间有三种方法:
1)通过DOS的功能调用INT 21H 的2AH、2BH、2CH、2DH设置DOS级的系统时间;
2)通过BIOS的日期时间服务中断INT 1AH设置BIOS级的系统时间;
3)通过70H、71H端口直接对COMS及实时时钟的时间进行修改;
5、BIOS中断——时钟服务(INT 1AH)的相关功能
(1)、功能00H
功能描述:读取时钟“滴答”计数
入口参数:AH=00H
出口参数:AL=00H——未过午夜,否则,表示已过午夜
CX:DX=时钟“滴答”计数
(2)、功能01H
功能描述:设置时钟“滴答”计数
入口参数:AH=01H CX:DX=时钟“滴答”计数
出口参数:无
(3)、功能02H
功能描述:读取时间
入口参数:AH=02H
出口参数:CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
CF=0——时钟在走,否则,时钟停止
(4)、功能03H
功能描述:设置时间
入口参数:AH=03H
CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
出口参数:无
(5)功能号:04H
功能:读取日期
入口参数:AH=04H
出口参数:CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
CF=0—时钟在走,否则,时钟停止
(6)功能号:05H
功能:设置日期
入口参数:AH=05H
CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
出口参数:无
6、为了保证时间间隔准确,首先将时间计数值清0,然后读取时间计数器的当前值。计数器以计数频率18.2Hz进行计数,1小时对应计数值为65520次,1分钟对应计数值为1092次,1秒对应计数值为18.2次(取18次)。即时间计数器每55ms自动加1,也即两个计数之间的时间间隔是55ms,则要计时5.5s(5500ms),需要计数到100。