浅谈CMOS 本文作者:赵江波 大家都知道,在286以上的计算机中,一般都有一个CMOS RAM电路,它用于关机以后继续存放日期、时间、内存设置、软硬盘类型及其他许多有用的设置信息。CMOS即互补金属氧化物半导体,它的设置、应用和管理是保证系统正常工作的关键,下面就介绍一些有关CMOS的基本概念和应用。 ROM BIOS和CMOS RAM芯片 #include "stdio.h" main() { char cmos[64];FILE *fp;int i; for (i=0;i<64;i++) { outportb(0x70,i); cmos[i]=inportb(0x71); } fp=fopen("A:\CMOS.DAT","wb"); fwrite(&cmos[0],1,64,fp); fclose(fp); } CMOS数据的恢复:文件CMOS.DAT的内容可以在GEBUG(或PCTOOLS等工具软件)中显示和编辑,也可将其再写回CMOS,这里给出自动写回数据的程序:
#include "stdio.h" main() { char cmos[64];FILE *fp;int i; fp=fopen("A:\CMOS.DAT","rb"); fread(&cmos[0],1,64,fp); for (i=0;i<64;i++) { outportb(0x70,i); outportb(0x71,cmos[i]); } fclose(fp); } 破译或摧毁CMOS口令:由于各种原因,有时需要破译或者摧毁CMOS的口令,此时可以根据具体情况采取各种不同的方法。如果能启动系统,但由于忘记或不知CMOS口令而无法进入CMOS设置状态,此时可采用程序法来破译CMOS的口令(由于程序较长,这里省略,如那位朋友有兴趣请Mail
to:[email protected])。用程序摧毁CMOS密码的设置: #include <dos.h> void far (*p)()=MK_FP(0xffff,0x0000); main() { int i; for (i=0x34;i<0x40;i++) outp(0x70,i); out(0x71,0); (*p)(); } 用DEBUG向端口发送数据的O命令向端口70h和71h发送一个数据,也可以清除CMOS的设置,具体操作如下: C:\>DEBUG ―O 70 10 ―O 71 01 ―Q 另外,也可以把上述操作用DEBUG写成一个程序放在一个文件(如DELCMOS.COM)中,具体操作如下: C:\>DEBUG ―A 100 XXXX:0100 MOV DX,70 XXXX:0103 MOV AL,10 XXXX:0105 OUT DX,AL XXXX:0106 MOV DX,71 XXXX:0109 MOV AL,01 XXXX:010B OUT DX,AL XXXX:010C ―R CX CX 0000 : 0C ―N DELCMOS.COM ―W Writing 000C bytes ―Q 以后,只要能用软盘启动系统,运行DELCMOS.COM就能取消CMOS的设置。CMOS放电。如果由于人为原因或由于机器故障使CMOS被破坏,而又不能用软盘启动系统,即系统引导顺序为“C:,A:”,或者Floppy Drive A:设置为Not Installed(或Disabled),系统不认A驱,这是便只有放电一途了。放电的方法有电池短接法、跳线短接法和芯片放电法。电池短接法:如果利用可拆卸电池供电,可以把电池拔下,用一根导线将电池插座两端短路,对电路中的电容放电,使CMOS RAM中的信息被清除;如果电池被焊死在主板上,就必须用电烙铁和吸锡器拔开电池的一个管脚来放电。需说明的是,电池短接法必须在短电的情况下进行,此法对一般用户是不可取的,因为拆卸和焊接电池时可能造成主板的损坏、短路、断路等问题,建议用下面的跳线短接法给CMOS放电。跳线短接法:在电池附近有一个跳线开关,跳线旁边注有RESET CMOS、CLEAN CMOS、CMOS CLOSE或CMOS RAM RESET等字样,跳线开关一般为四脚,有的在1、2两脚上有一个跳接器,此时将其拔下接到2、4脚上即可放电;有的所有脚上都没有跳接器,此时将2脚于充电电容短接即可放电。芯片短接法:开机后运行CMOS的SETUP命令全是由于机内一块芯片的作用,此芯片一般位于主板的左上方,很容易找到。找到后,用一段裸露的铜丝线,在管脚上快速划过,可多划几次,这样CMOS所设置的参数便以丢失,开机后重新设置各参数即可。 |
||
|