CMOS RAM如何以一个字节存储年份

时间:2017-02-12 13:47:50

标签: assembly system masm bios

this website中,我发现CMOS RAM中的年份只存储在一个字节中。

enter image description here

众所周知,一个字节只保存0到255,所以我写这段代码来得到09H商店:

assume cs:code,ss:stack

stack segment
    db 64 dup (0)
stack ends

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

    mov al,09H
    out 70H,al
    in al,71H

    mov ah,4CH
    int 21H
code ends

end start

我从71H端口获得17H的返回值,所以它是否意味着CMOS RAM存储年份为1994 + offset value

如果是这样,1994年的数字是什么意思?将来,CMOS RAM如何存储超过2249(1994 + 255)?

2 个答案:

答案 0 :(得分:4)

CMOS的寄存器09h将当前年份存储在当前世纪
其值范围为0到99.

----------R09--------------------------------  
CMOS 09h - RTC - YEAR  
Desc:   (BCD 00-99, Hex 00-63)  
Notes:  BCD/Hex selection depends on Bit 2 of register B (0Bh) 

它被编码为BCD(值0x00至0x99)或纯二进制(值0x00至0x63)。
编码由寄存器0xb的bit2决定

----------R0B--------------------------------  
CMOS 0Bh - RTC - STATUS REGISTER B (read/write)  

Bitfields for Real-Time Clock status register B:  
Bit(s)  Description     (Table C002)  
 7      enable cycle update  
 6      enable periodic interrupt  
 5      enable alarm interrupt  
 4      enable update-ended interrupt  
 3      enable square wave output  
 2      Data Mode - 0: BCD, 1: Binary  
 1      24/12 hour selection - 1 enables 24 hour mode  
 0      Daylight Savings Enable - 1 enables  

在我的系统寄存器中,0xb的值为 0x2 (启用24小时,BCD日期)。
寄存器0x9在2017年读取0x17,这在我的参考框架中是正确的,用于我的时间线。

答案 1 :(得分:0)

年度calcolation取决于您的操作系统和Epoch参考日期!

同时检查:System time

实施例: DOS(微软)的范围从1980年1月1日到2099年12月31日。

不支持大于2099的年份值!