日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

X86 CMOS

發布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 X86 CMOS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、cmos簡介。
cmos是主板上一塊可讀寫的RAM芯片。用途:主要用來保存當前系統的硬件配置和操作人員對某些參數的設定。cmos芯片是由一塊紐扣電池供電。因此在關機狀態內部信息也不會丟失。

2、cmos所在的端口。
cmos芯片是掛在cpu的io空間上的.(x86體系是獨立編址的)。cmos擁有兩個端口號分別是70h和71h

端口號 權限 長度 作用
70h 不可讀可寫 8bit 用它來設置cmos中的數據地址
71h 可讀可寫 8bit 用它來設置70h端口地址中的值

3、cmos中的數據地址對照表。(供編程時查)
地址 數據 備注
00H Time - Seconds 硬件時間的秒
01H Alarm - Seconds
02H Time - Minutes 硬件時間的分
03H Alarm - Minutes
04H Time - Hours 硬件時間的時
05H Alarm - Hours
06H Date - Day of the week
07H Date - Day
08H Date - Month
09H Date - Year
0AH Status Register A
0BH Status Register B
0CH Status Register C
0DH Status Register D
0EH Diagnostic Status
0FH Shutdown Status
10H A:
11H Reserved
12H 0
13H Reserved
14H Equipment Installed
15H Base Memory (high byte)
16H Base memory (low byte)
17H Extended Memory (high byte)
18H Extended Memory (low byte)
19H 0 (C:) Hard Disk Type
1AH 1 (D:) Hard Disk Type
1BH Reserved
1CH Supervisor Password
1DH Supervisor Password
1EH ~ 2DH Reserved
2EH CMOS Checksum (high byte)
2FH CMOS Checksum (low byte)
30H Extended Memory (high byte)
31H Extended Memory (low byte)
32H Date - Century
33H Power On Status
34H~3FH Reserved
40H~5FH Extended CMOS
60H User Password
61H User Password
62H~7FH Extended CMOS

4、編程實例

#ifndef _CMOS_H_ #define _CMOS_H_ 1#include <io.h>/* CMOS I/O REG */ #define CMOS_ADDR_REG 0x70 #define CMOS_DATA_REG 0x71/* CMOS INDEX */ #define CMOS_INDEX_SECOND 0 #define CMOS_INDEX_SECOND_ALARM 1 #define CMOS_INDEX_MINUTE 2 #define CMOS_INDEX_MINUTE_ALARM 3 #define CMOS_INDEX_HOUR 4 #define CMOS_INDEX_HOUR_ALARM 5 #define CMOS_INDEX_DAY_OF_WEEK 6 #define CMOS_INDEX_DAY_OF_MONTH 7 #define CMOS_INDEX_MONTH 8 #define CMOS_INDEX_YEAR 9#define CMOS_INDEX_STATUS_A 0xA #define CMOS_INDEX_STATUS_B 0xB #define CMOS_INDEX_STATUS_C 0xC #define CMOS_INDEX_STATUS_D 0xD#define CMOS_STATUS_B_DAYLIGHT 1 #define CMOS_STATUS_B_24HOUR 2 #define CMOS_STATUS_B_BINARY 4static inline uint8_t bcd_to_num(uint8_t a) {return ((a >> 4) * 10 + (a & 0xF)); }static inline uint8_t num_to_bcd(uint8_t a) {return (((a / 10) << 4) + (a % 10)); }static inline uint8_t cmos_read(uint8_t index) {outb(CMOS_ADDR_REG, index);return inb(CMOS_DATA_REG); }static inline void cmos_write(uint8_t index, uint8_t value) {outb(CMOS_ADDR_REG, index);outb(CMOS_DATA_REG, value); }#endif /* _CMOS_H_ */

總結

以上是生活随笔為你收集整理的X86 CMOS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。