CMOS RAM如何用一个字节存储年份
How CMOS RAM stores year in one byte
在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 得到一个 return 值 17H,这是否意味着 CMOS RAM 存储年份 1994 + offset value
?
如果是,数字 1994 是什么意思?以后CMOS RAM如何存储2249(1994+255)以上的年份?
年份计算取决于您的操作系统和 Epoch 参考日期!
同时检查:System time
示例:
DOS (Microsoft) 范围从 1980 年 1 月 1 日到 2099 年 12 月 31 日。
不支持大于 2099 的年份值!
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 读取 0x17 表示 2017 年,这在我的参考框架中对于我的时间线是正确的。
在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 得到一个 return 值 17H,这是否意味着 CMOS RAM 存储年份 1994 + offset value
?
如果是,数字 1994 是什么意思?以后CMOS RAM如何存储2249(1994+255)以上的年份?
年份计算取决于您的操作系统和 Epoch 参考日期!
同时检查:System time
示例: DOS (Microsoft) 范围从 1980 年 1 月 1 日到 2099 年 12 月 31 日。
不支持大于 2099 的年份值!
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
----------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 读取 0x17 表示 2017 年,这在我的参考框架中对于我的时间线是正确的。