在this website中,我发现CMOS RAM中的年份只存储在一个字节中。
众所周知,一个字节只保存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)?
答案 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的年份值!