用汇编保存下CMOS内容后的不解(附源码),信息到底在哪里?
2008-03-04 07:04
459 查看
公开的I/O接口,70h,71h,甚至72h,73h我也试过,结果内容和70h,71h一样,在我改动BIOS设置后,发现两次的文件没有什么变化(时间变化除外),按国外的CMOS Memory Map ,应该每个时间位后面跟一个Alarm时间位,事实上我打开前后,此位一直为零,是不是一旦开机,BIOS自动为此位清零?目前具体的东西不太清除,还不该尝试在这些Alarm位上写东西,因为我测试过两台电脑,都是AMI的BIOS,在BIOS中打开Alarm后没有发现如期的改动。请高人指点。
以下为我保存CMOS信息的源代码,大家可以放心尝试一下,假如你的结果和我说的不一样,请告诉我,比如在改动BIOS中Alarm后,生成的文件中各时间位后是否真的有响应变化。
assume cs:code,ds:data;,ss:stack
;stack segment stack
; db 2 dup(?)
;stack ends
data segment
biosdata db 126 dup(?)
filename db 'NowBios.txt',0
strcantcreate db 'Why can not create a file?','$'
strcantclose db 'Why can not close a file?','$'
strcantwrite db 'Why can not write the file?','$'
data ends
code segment
start: mov ax,data
mov ds,ax;以上两句确定数据段ds
mov cx,7Dh;此句确定readbios循环次数
mov bx,offset biosdata;确定写入的地点
mov al,0;从端口此位置开始读
readbios: out 70h,al;写入要从71h开始读的地址
mov ah,al;保存al
mov al,0
in al,71h;从端口71h(bios CMOS端口)读数据
mov ds:[bx],al;保存在地址段
mov al,ah;恢复al
inc al
inc bx;al++,bx++下一次读下一个
loop readbios
mov dx,offset filename;确定创建的文件名
mov cx,0
mov ah,3ch; 定义接口,创建文件
stc;置CF位标志以确定以下中断成功进行
int 21h
jc errcantcreate;创建失败就输出错误信息
mov dx,offset biosdata;确定写入文件的信息从哪个地址开始
mov bx,ax;保存文件句柄
mov cx,7Dh;确定写入多少数据
stc;置CF位标志以确定以下中断成功进行
mov ah,40h;将数据段的内容写入文件
int 21h
jc errcantwrite
mov ah,3eh;关闭文件
int 21h
jc errcantclose
jmp theend
errcantcreate: mov dx,offset strcantcreate
mov ah,9
int 21h
jmp theend
errcantclose: mov dx,offset strcantclose
mov ah,9
int 21h
jmp theend
errcantwrite: mov dx,offset strcantwrite
mov ah,9
int 21h
jmp theend
theend: mov ax,4c00h
int 21h
code ends
end start
不想编译的可以下载以下网址编译好的程序
http://disk24.sh.com/?vagr
http://groups.google.com/group/jiutianfile/files
最后生成的是16位的文件,通过UltraEdit查看就可以了,具体应该的含义可以参考CMOS Memory Map,希望你能告诉我你的电脑是否符合上述CMOS Memory Map。谢了
以下为我保存CMOS信息的源代码,大家可以放心尝试一下,假如你的结果和我说的不一样,请告诉我,比如在改动BIOS中Alarm后,生成的文件中各时间位后是否真的有响应变化。
assume cs:code,ds:data;,ss:stack
;stack segment stack
; db 2 dup(?)
;stack ends
data segment
biosdata db 126 dup(?)
filename db 'NowBios.txt',0
strcantcreate db 'Why can not create a file?','$'
strcantclose db 'Why can not close a file?','$'
strcantwrite db 'Why can not write the file?','$'
data ends
code segment
start: mov ax,data
mov ds,ax;以上两句确定数据段ds
mov cx,7Dh;此句确定readbios循环次数
mov bx,offset biosdata;确定写入的地点
mov al,0;从端口此位置开始读
readbios: out 70h,al;写入要从71h开始读的地址
mov ah,al;保存al
mov al,0
in al,71h;从端口71h(bios CMOS端口)读数据
mov ds:[bx],al;保存在地址段
mov al,ah;恢复al
inc al
inc bx;al++,bx++下一次读下一个
loop readbios
mov dx,offset filename;确定创建的文件名
mov cx,0
mov ah,3ch; 定义接口,创建文件
stc;置CF位标志以确定以下中断成功进行
int 21h
jc errcantcreate;创建失败就输出错误信息
mov dx,offset biosdata;确定写入文件的信息从哪个地址开始
mov bx,ax;保存文件句柄
mov cx,7Dh;确定写入多少数据
stc;置CF位标志以确定以下中断成功进行
mov ah,40h;将数据段的内容写入文件
int 21h
jc errcantwrite
mov ah,3eh;关闭文件
int 21h
jc errcantclose
jmp theend
errcantcreate: mov dx,offset strcantcreate
mov ah,9
int 21h
jmp theend
errcantclose: mov dx,offset strcantclose
mov ah,9
int 21h
jmp theend
errcantwrite: mov dx,offset strcantwrite
mov ah,9
int 21h
jmp theend
theend: mov ax,4c00h
int 21h
code ends
end start
不想编译的可以下载以下网址编译好的程序
http://disk24.sh.com/?vagr
http://groups.google.com/group/jiutianfile/files
最后生成的是16位的文件,通过UltraEdit查看就可以了,具体应该的含义可以参考CMOS Memory Map,希望你能告诉我你的电脑是否符合上述CMOS Memory Map。谢了
相关文章推荐
- DOS环境下保存与恢复CMOS信息的实用程序
- 到底哪种类型的错误信息会阻止business transaction的保存
- excel保存时出现“请注意,您的文档的部分内容可能包含了文档检查器无法删除的个人信息”
- SharedPreferences保存中,数据到底存在了哪里?
- 保存dmesg 信息到文件源码
- SSAS : 数据库角色的信息是保存在哪里的
- 指针的类型信息保存在哪里?
- 学生信息管理系统有感,工程大,到底大在哪里?
- 将学生信息保存到文件中,并读出文件内容
- SSAS : 数据库角色的信息是保存在哪里的
- 指针的类型信息保存在哪里?
- android保存崩溃时的错误信息log至本地【源码+jar包+使用说...
- Spring mybatis源码篇章-NodeHandler实现类具体解析保存Dynamic sql节点信息
- 指针的类型信息保存在哪里?
- python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie
- 源码推荐:保存app内容到手机桌面,类AppStore横向滚动
- [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说明
- 使用流加载和保存HTML内容&遍历html的信息存入一个ini文件&使用MSHTML分析HTML代码
- 到底哪种类型的错误信息会阻止business transaction的保存
- SEO_ASP.net SEO优化(包含URL地址重写\viewState移动和压缩至服务器\SEO信息XML生成_根据URL地址重写文件)\web网站内容压缩 源码公开.本人授权可使用于商业项目。