初次接触汇编,求帮助我用的是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 ; 这两语句顺序不能变,这是个约定