读书人

初次接触汇编求帮助小弟我用的是mas

发布时间: 2013-12-16 23:49:16 作者: rapoo

初次接触汇编,求帮助我用的是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。

读书人网 >汇编语言

热点推荐