读书人

hello大家好从指定内存地址读取数据

发布时间: 2013-12-20 00:23:10 作者: rapoo

hello大家好,从指定内存地址读取数据到cmos,读取内存数据的语法应该怎么修改?求帮助阿
本帖最后由 y363585404 于 2013-12-16 14:16:25 编辑 .model small
.386

data segment
temp db ?
data ends
code segment
assume cs:code,ds:data
start:
mov edx,0f80f802ch
mov al,[edx]
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
[解决办法]
没有给 ds 赋值吧:

start::
mov ax, data ;*+
mov ds, ax ;*+
mov edx, 0f80f802ch

[解决办法]
mov al, [edx] 这个指令用 32 位寻址,实模式下可以吗,可以的话是不是需要设置相应的 ds ?没做过这方面的,不了解了。
[解决办法]
386+的实模式下也可以使用32位寻址模式,但是地址仍然受到段限制的影响,不能超过64K(除非切换到保护模式修改段限制再切换回来)。

[解决办法]
问题是这0f80f802ch是什么地址?物理地址?那你必须先切换到big real mode,网上很多这方面的资料。

[解决办法]
可能是实模式,也可能是v86模式,取决于运行环境,如果DOS启动时加载了EMM386或者类似的东西,或者运行在Windows的DOS窗口中,那就是v86模式。

这里有设置big real mode的代码:http://wiki.osdev.org/Unreal_Mode

读书人网 >汇编语言

热点推荐