实模式下时间日期的获取及显示

 

在写一个操作系统时,时间和日期的显示功能是必不可少的,如果我们要写一个基于命令行的操作系统,通常要提供给用户两个有关时间日期的命令,即date和time。而在实模式下,可以方便地通过BIOS调用从CMOS获取当前时间及日期,然后加以处理并显示出来。BIOS中断0x1A是有关时间日期的调用,其中子功能0x02是获取当前时间,子功能0x04是获取当前日期:

需要注意的是,这两个BIOS调用的返回值是组合的BCD码,也就是说,在显示时我们需要先进行处理。所谓组合的BCD码,就是用二进制中的4位来表示一位十进制数,比如十进制数13,在二进制中表示为0x0D,而在组合式BCD码中表示为0x13。这样在组合式BCD码中一个字节就表示两位十进制数。

有了这些资料,再写date和time两个命令就比较轻松了,以下是WarmOS中的代码:

下面是显示时间的汇编代码:

下面是显示日期的代码,因为原理相似,不再详细注释,只注明寄存器值变化

好了,这样就可以为系统加上两个命令了,不过这只是在实模式下,在保护模式又另当别论了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值