我以前的程序的一小部份, 汇编写的, 在9x下可能还能搬来用, 在NT下就不能直接写端口了
得另外想办法
1. 读取
mov dx,70h ; 置端口号
mov al,3Bh ; CMOS内地址, 3Bh是第一硬盘参数的起始位置(Award BIOS)
out dx,al ; 索引端口70的3Bh地址
call sleep ; 睡一会
inc dx ; 置端口号 71h
in al,dx ; 读一个字节
call sleep ; 睡一会儿
; 此时 al 寄存器内就是 CMOS 的第 3Bh 字节的内容了
1. 写入
mov dx,70h ; 置端口号
mov al,3Bh ; CMOS内地址, 3Bh是第一硬盘参数的起始位置(Award BIOS)
out dx,al ; 索引端口70的3Bh地址
call sleep ; 睡一会
inc dx ; 置端口号 71h
mov al,my_data ; 我们要写的内容
out dx,al ; 写入CMOS
call sleep ; 睡一会儿
要知道CMOS中哪一部份设置是关于某个参数的, 只需要按以下方法做就可以猜到:
1.取全部CMOS数据(64字节),存入文件A
2.重启电脑进入BIOS设置,设置你想知道的那个参数,然后保存,重启
3.取全部CMOS数据(64字节),存入文件B
4.重启电脑进入BIOS设置,设置你想知道的那个参数为原来的值,然后保存,重启
5.取全部CMOS数据(64字节),存入文件C
6.比较文件A,B,C,找在以A与C比较中相同,但是在A与B比较中不同的字节, 就是它了