国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

讀寫CMOS內存

讀寫CMOS內存

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

一、CMOS內存信息詳解

一般的PC/AT、286、386、486等微機均配有CMOS芯片,CMOS&127;芯片包含了一個實時鐘和64個字節的CMOS內存。在CMOS內存中,0-0DH為實時鐘的有關信息,0E-&127;3FH包含計算機的硬件配置信息,如常規內存的大小、擴展內存的大小、&127;軟盤的類型、固定盤的類型及其物理參數、顯示器的類型等,這些參數與計算機能否正常工作具有密切的關系,另外還有計算機的開機口令和其它輔助設置信息。表1列出了&127;CMOS內存各字節的用途。
表1 CMOS內存配置信息的含義

地 址 功能 說明
0,1  秒,秒報警  
2,3  分,分報警  
4,5 時,時報警  
6 星期幾  
7,8,9 日,月,年  
A 狀態寄存器A  
B 狀態寄存器B  
C 狀態寄存器C  
D 狀態寄存器D 0=電池失效,80=電池有效
E 診斷狀態  
F 關機狀態 由上電診斷定義
10 軟驅 高4位為A驅,低4位為B驅,0=無, 1=360KB, 2=1.2KB, 4=1.44KB, 6=720KB
11 保留  
12 固定盤 高4位為C驅,低4位為D驅,0=無,F=用戶定義盤, 其它為系統定義盤
13 保留  
14 設備狀態 標志驅動器數、顯示器類型、有無數學處理器等
15-16 內存 以KB計的常規內存數,100H=256KB,200H=512KB, 280H=640KB
17-18 擴展內存 以KB計的擴展內存數,200H=512KB,400H=1024KB等
19 C盤類型數 根據具體硬盤類型而定
1A D盤類型數 根據具體硬盤類型而定
1B-1C 保留  
1D-1E C盤柱體數 1D-2CH只有當硬盤為用戶自定義類型時起作用
1F C盤面數  
20-21 C盤WP  
22-23 C盤LZ  
24 C盤每柱扇區  
25-26 D盤柱體數  
27 D盤面數  
28-29 D盤WP  
2A-2B D盤LZ  
2C D盤每柱扇區  
2D 保留  
2E-2F 校驗和 為10-2DH共30個字節的和數,2EH為高位,2FH為低位
30-31 擴展內存  
32 日期的世紀數 BCD碼的世紀值,如1995年的世紀數為19
33 標志信息  
34-3F 保留  

                *地址欄均為16進制表示

二、讀寫CMOS內存的方法

CMOS內存的地址口和數據口的口地址分別為70H和71H。在對CMOS內存進行寫操作時,首先將要寫入的CMOS內存的地址送到口地址70H,&127;再將要寫入的數據送口地址71H。在對CMOS內存進行讀操作時,首先將要讀出的CMOS內存的地址送到口地址70H,再從口地址71H讀出數據到AL寄存器。

三、程序設計與使用

為了方便系統信息丟失后CMOS信息的恢復,作者用BORLAND PASCAL&127;設計了一個CMOS.PAS的程序,它可以將CMOS內存中的信息直接寫入文件,也可以把文件中的信息寫入CMOS內存,同時可以對CMOS內存中的信息進行編輯修改,并重新寫回CMOS內存。它不僅解決了沒有SETUP程序的計算機在加電時不能設置CMOS內存的問題,同時解決了CMOS信息的保存和恢復問題,是廣大計算機用戶的一個好幫手。
該程序的使用很簡單,在DOS提示符下打CMOS,即顯示該程序的使用方法,&127;具體使用方法是:

CMOS [/開關]

開關有3個:
R --- 讀取CMOS內存信息,并將其存入CMOS.DAT的文件,共占64個字節。
W --- 從CMOS.DAT中讀取信息,并將其寫入CMOS內存。&127;注意這樣寫入的CMOS信息,其時間和日期是不正確的,寫完之后應當用DOS命令DATE和TIME&127;設置正確的日期和時間。
M --- 從CMOS中讀取當前信息,進行修改,然后將其寫入CMOS內存和CMOS.DAT的文件。

四、程序清單

由于篇幅的限制,程序中略去了用TURBO &127;VISION&127;編寫的程序界面部分。
program CMOS;
type
TCMOSType = record
    Seconds : byte;
    SecondAlarm : byte;
    Minutes : byte;
    MinuteAlarm : byte;
    Hours : byte;
    HourAlarm : byte;
    DayOfWeek : byte;
    DayOfMonth : byte;
    Month : byte;
    Year : byte;
    StatusRegA : byte;
    StatusRegB : byte;
    StatusRegC : byte;
    StatusRegD : byte;
    DiagStatus : Byte;
    ShutDownStatus : Byte;
    FloppyDrive : byte;
    Reserved1 : byte;
    FixedDrive : Byte;
    Reserved2 : byte;
    Equipment : byte;
    RAM : word;
    XMS : word;
    FixedDriveType1 : byte;
    FixedDriveType2 : byte;
    Reserved3 : word;
    Cylinder1 : word;
    Head1 : byte;
    WP1 : word;
    LZ1 : word;
    Sector1 : byte;
    Cylinder2 : word;
    Head2 : byte;
    WP2 : word;
    LZ2 : word;
    Sector2 : byte;
    Sys : byte;
    CheckSum : word;
    XMS1 : word;
    DateCentury : byte;
    InfoFlags : byte;
    Reserved4: array[1..12] of byte;
end;
TByte64 = array[1..64] of byte;
TCMOS = object
    CMOSRec : TCMOSType;
    procedure ReadCMOS;
    procedure WriteCMOS;
    procedure DisplayCMOS;
    procedure ModifyCMOS;
    procedure ReadFile;
    procedure WriteFile;
end;
procedure TCMOS.ReadFile;
var
    f1 : file;
    data : tbyte64 absolute CMOSRec;
    ch : char;
begin
    write('Please input the drive name (A/B/C/D): ');
    readln(ch);
    assign(f1,ch+':\CMOS.DAT');
    reset(f1,1);
    blockread(f1,data,sizeof(data));
    close(f1);
end;
procedure TCMOS.WriteFile;
var
    f1:file;
    data : tbyte64 absolute CMOSRec;
    ch : char;
begin
    write('Please input the drive name (A/B/C/D): ');
    readln(ch);
    assign(f1,ch+':\CMOS.DAT');
    rewrite(f1,1);
    blockwrite(f1,data,sizeof(data));
    close(f1);
end;
procedure TCMOS.ReadCMOS;
begin
asm
les di,self
add di,CMOSRec
MOV CX,40H
MOV AH,0H
MOV BX,0
@1:
MOV DX,70H
MOV AL,AH
OUT DX,AL
INC DX
in AL,dx
MOV BYTE PTR es:[di+BX],al
INC AH
INC BX
DEC CX
JNZ @1
end;
end;
procedure TCMOS.WriteCMOS;
begin
asm
les di,self
add di,CMOSRec
MOV CX,40H
MOV AH,0H
MOV BX,0
@1:
MOV DX,70H
MOV AL,AH
OUT DX,AL
MOV AL,BYTE PTR es:[di+BX]
INC DX
OUT DX,AL
INC AH
INC BX
DEC CX
JNZ @1
end;
end;
procedure TCMOS.DisplayCMOS;
var
hd1,hd2,fd1,fd2 : byte;
begin
Writeln(^J^M'CMOS RAM information:');
writeln('Date(MM-DD-YY): ',CMOSRec.Month shr 4,CMOSRec.Month and $f,
'-',CMOSRec.DayOfMonth shr 4,CMOSRec.DayOfMonth and $f,
'-',CMOSRec.Year shr 4,CMOSRec.Year and $f);
writeln('Time(HH:MM:SS): ',CMOSRec.Hours shr 4,CMOSRec.Hours and $f,
':',CMOSRec.Minutes shr 4,CMOSRec.Minutes and $f,
':',CMOSRec.Seconds shr 4,CMOSRec.Seconds and $f);
writeln('Conventional Memory: ',CMOSRec.Ram,'KB');
writeln('Extended Memory: ',CMOSRec.XMS,'KB');
hd2 := CMOSRec.FixedDrive and $f;
hd1 := CMOSRec.FixedDrive shr 4;
if (hd1 <> 0) then
begin
writeln('Fixed Drive 1: ',CMOSRec.FixedDriveType1);
writeln(' Cylinder : ',CMOSRec.Cylinder1);
writeln(' Head : ',CMOSRec.Head1);
writeln(' Sector: ',CMOSRec.Sector1);
writeln(' LZ: ',CMOSRec.LZ1);
writeln(' WP: ',CMOSRec.WP1);
end;
if (hd2 <> 0) then
begin
writeln('Fixed Drive 2: ',CMOSRec.FixedDriveType2);
writeln(' Cylinder : ',CMOSRec.Cylinder2);
writeln(' Head : ',CMOSRec.Head2);
writeln(' Sector: ',CMOSRec.Sector2);
writeln(' LZ: ',CMOSRec.LZ2);
writeln(' WP: ',CMOSRec.WP2);
end;
fd2 := CMOSRec.FloppyDrive and $f;
fd1 := CMOSRec.FloppyDrive shr 4;
if (fd1 <> 0) then
begin
write('Floppy Drive 1 : ');
case fd1 of
1 : writeln('360KB 5.25''');
2 : writeln('1.2MB 5.25''');
4 : writeln('1.44MB 3.5''');
6 : writeln('720KB 3.5''');
end;
end ;
if (fd2 <> 0) then
begin
write('Floppy Drive 2 : ');
case fd2 of
1 : writeln('360KB 5.25''');
2 : writeln('1.2MB 5.25''');
4 : writeln('1.44MB 3.5''');
6 : writeln('720KB 3.5''');
end;
end;
end;
procedure TCMOS.ModifyCMOS;
var
hd1,hd2,fd1,fd2 : byte;
data : tbyte64 absolute CMOSRec;
i : word;
begin
Writeln('Please input CORRECT CMOS information !');
write('Conventional Memory (',CMOSRec.ram,'KB): ');readln(CMOSRec.ram);
write('Extended Memory (',CMOSRec.XMS,'KB): ');readln(CMOSRec.XMS);
write('Type of Fixed Disk 1: (',CMOSRec.FixedDriveType1,'): ');readln(CMOSRe
c.FixedDriveType1);
write(' Cylinder (',CMOSRec.Cylinder1,'):'); readln(CMOSRec.Cylinder1);
write(' Head (',CMOSRec.Head1,'): ');readln(CMOSRec.Head1);
write(' Sector (',CMOSRec.Sector1,'): ');readln(CMOSRec.Sector1);
write(' LZ (',CMOSRec.LZ1,'): ');readln(CMOSRec.LZ1);
write(' WP (',CMOSRec.WP1,'): ');readln(CMOSRec.WP1);
write('Type of Fixed Disk 2: (',CMOSRec.FixedDriveType2,'): ');readln(CMOSRe
c.FixedDriveType2);
write(' Cylinder (',CMOSRec.Cylinder2,'):'); readln(CMOSRec.Cylinder2);
write(' Head (',CMOSRec.Head2,'): ');readln(CMOSRec.Head2);
write(' Sector (',CMOSRec.Sector2,'): ');readln(CMOSRec.Sector2);
write(' LZ (',CMOSRec.LZ2,'): ');readln(CMOSRec.LZ2);
write(' WP (',CMOSRec.WP2,'): ');readln(CMOSRec.WP2);
hd1 := 0; hd2 :=0;
if (CMOSRec.FixedDriveType1>46) then hd1 := $f;
if (CMOSRec.FixedDriveType2>46) then hd2 := $f;
CMOSRec.FixedDrive := hd1 shl 4 + hd2;
fd2 := CMOSRec.FloppyDrive and $f;
fd1 := CMOSRec.FloppyDrive shr 4;
write('Floppy Drive 1 (');
case fd1 of
1 : write('360KB 5.25''): ');
2 : write('1.2MB 5.25''): ');
4 : write('1.44MB 3.5''): ');
6 : write('720KB 3.5''): ');
end;
readln(fd1);
write('Floppy Drive 2 (');
case fd2 of
1 : write('360KB 5.25''): ');
2 : write('1.2MB 5.25''): ');
4 : write('1.44MB 3.5''): ');
6 : write('720KB 3.5''): ');
end;
readln(fd2);
CMOSRec.FloppyDrive := fd1 shl 4 + fd2;
CMOSRec.CheckSum := 0;
for i := 17 to 46 do inc(CMOSRec.CheckSum,data[i]);
i := CMOSRec.CheckSum;
data[47] := hi(i);
data[48] := lo(i);
end;
procedure help;
begin
WriteLn('Syntex:'+^J^M+
' CMOS /R --- read information from CMOS RAM '+^J^M+
' and write it to CMOS.DAT file '+^J^M+
' CMOS /W --- read configuration information from CMOS.DAT '+^J^M+
' and write it to CMOS RAM');
Writeln(' CMOS /M --- modify CMOS information and save it'^J^M+
' Floppy Drive Type:'+^J^M+
' 1 : 360KB 5.25'''+^J^M+
' 2 : 1.2MB 5.25'''+^J^M+
' 4 : 1.44MB 3.5'''+^J^M+
' 6 : 720KB 3.5''');
end;
var ch : char;
temp : string;
ICMOS : TCMOS;
begin
WriteLn('CMOS Proctector 1.00, Copyright (c) 1995 Dong Zhanshan');
if paramcount = 1 then
begin
temp := paramstr(1);
ch := upcase(temp[2]);
case ch of
'M' : begin
ICMOS.ReadCMOS;
ICMOS.ModifyCMOS;
ICMOS.DisplayCMOS;
ICMOS.WriteFile;
ICMOS.WriteCMOS;
end;
'R' : begin
ICMOS.ReadCMOS;
ICMOS.DisplayCMOS;
ICMOS.WriteFile;

end;
'W' : begin
ICMOS.ReadFile;
ICMOS.DisplayCMOS;
ICMOS.WriteCMOS;
end;
else help;
end;
end
else
help;
end. 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        在线一区二区观看| 91色porny在线视频| 成人精品国产一区二区4080| 精品三级av在线| 国产一区二区成人久久免费影院| 日韩美一区二区三区| 精品一区二区在线播放| 日本一区二区三区视频视频| 94-欧美-setu| 老汉av免费一区二区三区 | 国产精品2024| 一区二区三区丝袜| 欧美刺激脚交jootjob| 成人av小说网| 日韩成人一级片| 日韩欧美国产1| 欧美久久久一区| 777午夜精品免费视频| 欧美日韩一区久久| 韩国欧美国产一区| 亚洲天天做日日做天天谢日日欢| 欧美日韩亚洲不卡| 成人一道本在线| 亚洲一区二区三区四区五区黄| 欧美va亚洲va在线观看蝴蝶网| 99久久精品一区二区| 日韩中文欧美在线| 亚洲美女少妇撒尿| 26uuu国产电影一区二区| 在线看日本不卡| 午夜精品久久久久久久久久| 欧美三级韩国三级日本一级| 亚洲精品美腿丝袜| 久久免费看少妇高潮| 欧美日韩国产高清一区二区三区| 国产成人久久精品77777最新版本| 亚洲情趣在线观看| 国产视频在线观看一区二区三区| 欧美日韩成人一区| 91成人在线精品| 不卡的电视剧免费网站有什么| 免费美女久久99| 午夜电影一区二区| 亚洲美女一区二区三区| 中文字幕中文乱码欧美一区二区| 精品久久久久久久一区二区蜜臀| 欧美精品tushy高清| 在线观看视频一区二区 | 全部av―极品视觉盛宴亚洲| 亚洲人成亚洲人成在线观看图片| 国产三级欧美三级| 久久人人爽爽爽人久久久| 欧美大片国产精品| 日韩美女天天操| 日韩欧美区一区二| 337p粉嫩大胆噜噜噜噜噜91av| 日韩午夜精品电影| 欧美不卡一区二区| 精品三级在线看| 国产无人区一区二区三区| 久久久噜噜噜久噜久久综合| 日韩精品一区二区三区老鸭窝 | 在线精品视频免费观看| 黄色资源网久久资源365| 亚洲欧洲一区二区三区| 精品国产一区二区三区久久久蜜月| 99精品国产99久久久久久白柏| 成人午夜视频福利| 成a人片亚洲日本久久| 91在线观看下载| 欧美性生交片4| 9191久久久久久久久久久| 日韩区在线观看| 久久综合精品国产一区二区三区| 国产亚洲一二三区| 亚洲精品免费一二三区| 日韩高清不卡一区| 国产精品一区在线观看你懂的| heyzo一本久久综合| 色婷婷亚洲综合| 91精品国产综合久久久蜜臀粉嫩| 欧美成人一区二区| 国产精品久久久久婷婷二区次| 亚洲尤物在线视频观看| 美女视频一区二区三区| 懂色av一区二区在线播放| 欧美在线999| 精品国产电影一区二区| 亚洲免费av高清| 激情综合色播激情啊| 成人国产一区二区三区精品| 欧美网站大全在线观看| 久久久www成人免费毛片麻豆| 亚洲另类在线一区| 国产精品456| 91精品国产综合久久久蜜臀图片| 国产精品美女视频| 狠狠色丁香久久婷婷综| 欧美影院一区二区三区| 久久免费美女视频| 日韩综合小视频| 色哟哟一区二区| 国产午夜精品一区二区三区嫩草| 亚洲综合小说图片| 国产91高潮流白浆在线麻豆| 在线91免费看| 亚洲午夜精品17c| 99免费精品视频| 国产天堂亚洲国产碰碰| 麻豆精品蜜桃视频网站| 7777精品伊人久久久大香线蕉完整版| 中文字幕五月欧美| 国产xxx精品视频大全| 日韩免费视频线观看| 三级精品在线观看| 欧美日韩在线一区二区| 一区二区三区日韩欧美精品 | 一区二区三区av电影 | 日韩午夜av一区| 亚洲影视资源网| 91亚洲男人天堂| 国产精品丝袜久久久久久app| 久久99精品国产91久久来源| 欧美日韩国产高清一区二区| 亚洲一二三四在线| 欧美性受xxxx黑人xyx| 亚洲一区二区在线免费观看视频| 91在线视频观看| 一区av在线播放| 欧美性感一区二区三区| 亚洲成人免费视频| 4438x亚洲最大成人网| 日韩经典一区二区| 日韩欧美一级在线播放| 美女视频一区在线观看| 精品嫩草影院久久| 国产在线观看免费一区| 久久久精品免费网站| 国产精品亚洲第一| 18涩涩午夜精品.www| 欧美在线一二三四区| 日韩不卡一区二区三区| 精品成a人在线观看| 成人久久18免费网站麻豆| 亚洲色欲色欲www在线观看| 欧美性色黄大片手机版| 亚洲高清免费视频| 7777精品伊人久久久大香线蕉经典版下载 | 欧美激情在线一区二区三区| 成人污污视频在线观看| 亚洲已满18点击进入久久| 91麻豆精品国产自产在线观看一区| 天堂久久一区二区三区| 久久亚洲二区三区| 色综合天天综合色综合av | 亚洲日本一区二区| 欧美福利视频导航| 国产成人日日夜夜| 亚洲一区在线播放| 久久综合av免费| 91社区在线播放| 日韩av一区二| 国产精品久久久久久久久晋中| 欧美亚洲动漫精品| 国产乱淫av一区二区三区 | 国产91丝袜在线18| 亚洲国产一区二区三区 | 亚洲激情校园春色| 亚洲精品一区二区三区四区高清 | 亚洲一区二区在线视频| 欧美精品一区二区三区高清aⅴ| 99久久精品国产网站| 美女视频一区二区| 亚洲精品国产视频| 国产喂奶挤奶一区二区三区| 欧美日韩一区二区三区四区五区| 国产成人自拍网| 免费成人在线网站| 亚洲国产成人av| 亚洲三级电影网站| 国产肉丝袜一区二区| 欧美一级片在线看| 在线观看一区二区精品视频| 国产成+人+日韩+欧美+亚洲| 日本不卡123| 夜夜嗨av一区二区三区中文字幕| 久久久久国产一区二区三区四区 | 91免费国产在线| 国产成人啪免费观看软件| 日韩国产高清影视| 亚洲国产精品尤物yw在线观看| 国产精品久久久久久久久图文区| wwwwww.欧美系列| 日韩一级片在线观看| 欧美日韩国产a| 欧美日韩在线播放一区| 91福利视频久久久久| 色天天综合久久久久综合片| 不卡一区二区三区四区| jlzzjlzz亚洲日本少妇|