2017-02-12 22 views
4

this websiteには、CMOS RAMの年が1バイトだけ格納されています。そう、私はポート71Hからの戻り値17Hを取得CMOS RAMが年に1バイトを格納する方法

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 

:0〜255 1バイトのみを保持していることが知られている

enter image description here

は、私は何09H店舗取得するには、このコードを書きますそれはCMOS RAMの店舗年を1994 + offset valueで意味するのですか?

もしそうなら、1994という数字はどういう意味ですか?将来、CMOS RAMは2249(1994 + 255)以上の年をどのように格納していますか?

+0

データはバイナリではなくBCDでエンコードされます。 32年前に感じたことはほとんどない。高いニブルは最初の10進数字を含み、低いニブルは2番目の数字を含む。範囲は[0..99]です。そして、はい、私たちは2017年に生きていますので、あなたが得たものは正しいです。 –

答えて

4

CMOSのレジスタ09hは、現在の年を現在の世紀に格納します。
その値は、それがBCD(値0x99には0x00)として、またはプレーンバイナリ(値は0x63には0x00)のいずれかとして符号化される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) 

の範囲です。
符号化が私のシステム・レジスタ0xbのレジスタ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 

のBIT2によって決定される(24-hは、BCD日有効)値を0x2を有しています。
レジスタ0x9は、自分のタイムラインの参照フレームに、正しい2017を読み込みます。

+0

前の回答から、別の質問があります。異なるオペレーティングシステム(または異なるプログラミング言語)のエポックと範囲が異なるのはなぜですか? – Kon

+1

@Kon彼らは異なる人々によって設計されているので。 80年代に入ると、バイトはそれに値するものでした。後でエラーを認識し、int(ほとんどのアーキテクチャでは4バイト)を使用しました。後でこれは再び問題となり、近代図書館のサイズは倍増しました。 –

+0

私は日付がCMOSに正確に格納され、オペレーティングシステム(BIOSを含む)がCMOS RAMから現在の日付を読み取ったことを意味します。したがって、エポックとレンジはCMOS RAMと同じでなければなりません。しかし、実際には誰もが独自の時代と範囲を持っています。 – Kon

0

年の計算はお使いのオペレーティングシステムによって異なり、Epochの参照日付です!また

チェック:System time

例: DOS(マイクロソフト)2099よりも大きいいる範囲1980年1月1日から12月2099年31

年の値がサポートされていません!

+0

確かに。 CMOSに格納されている日付は**データ**であることを意味しますか?それを理解する方法はオペレーティングシステムによって異なりますか? – Kon

関連する問題