在 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 + 偏移值
存储年份?
如果是这样,数字 1994 是什么意思? future CMOS RAM如何存储超过2249(1994+255)的年份?
最佳答案
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 日期)。
2017 年寄存器 0x9 的读数为 0x17,在我的引用框架中,对于我的时间线来说,这是正确的。
关于assembly - CMOS RAM 如何以一个字节存储年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188327/