欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

初次接触汇编,求帮助小弟我用的是masm5.0 win732,读取pci device一个数据到cmos 41h,为什么数据老是显示09?代码如下

更新时间: 2014-01-05 03:16:04 责任编辑: Author_N1

 

初次接触汇编,求帮助我用的是masm5.0 win732,读取pci device一个数据到cmos 41h,为什么数据老是显示09?代码如下
data segment
temp db ?
data ends
.386
code segment     
assume cs:code,ds:data
start:     
mov dx,0cf8h     
mov eax,80070080h;最低位数据为:42h     
out dx,eax     
mov dx,0cfch     
in eax,dx     
mov temp,al     
mov al,41h     
out 70h,al     
jmp $+2    
mov al,temp     
out 71h,al     
mov ah,4ch     
int 21h
code ends     
end start 
--参考方法--
在 Win7 下运行这个代码?可以正常运行的吗?直接操作端口,应该是被保护而屏蔽了的,所以即便有结果也不是真正的内容。在纯 dos 环境下试试吧。
--参考方法--
用 Masm 的话,你这源程序确实有些问题,dos16 类程序,为了使用 eax 这样的寄存器和新增的指令,应该在程序的开头加上
.model small  ; 可根据实际模式修改 small 为 tiny 或其它
.386  ; 这两语句顺序不能变,这是个约定

这代码只能在纯 dos 下运行,不可以在 windows 的命令行窗口下,即便不报错,结果也可能不对。至于你这个代码功能上是否有问题,没做过 pci device 方面的,就不了解了。
--参考方法--
你直接向CMOS地址41h中写42h能写进去吗?如果能的话肯定是读PCI配置数据没读出来,你调试一下看看读出来的到底是42h还是09h。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:16:04
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20241/
本文WWW.DOC100.NET DOC100.NET版权所有。