我知道这段代码实际上会将数据写入 ds:[100h]
mov [100h], ax
但我怎样才能写入线性地址100H
直接不使用任何段寄存器作为段基址?
没有办法绕过段寄存器;每个内存访问都与某个段寄存器相关。如果要写入绝对地址,请首先向段寄存器加载适当的段:
xor cx, cx
mov es, cx ; es = 0000
mov [es:100h], ax ; [0000:0100] = ax
要在 8086 或 80286 系统上加载大于 16 位的线性地址,请尝试如下操作:
addr dd 0x12345 ; the address we want to load from
...
mov bl, [addr] ; load low part
xor bh,bh
mov cx, [addr+1] ; load high part
shl cx, 4 ; adjust high part for segment selector
mov es, cx ; load segment register
mov [es:bx], ax ; store ax
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)