我想在实模式(DOS)下写 F000:0000 ~ FFFF:0000。
但是这个区域是写保护的。
我试图找到CPU和北桥的数据表。
但是,我找不到影子内存的写入方法。
我的系统配置:
M/B:ASUS P5B(965P Chipset)
CPU:Intel Pentium 4 Series
F000:0000 ~ FFFF:0000 是指向 HMA 的内存范围,在 80286 之后的所有处理器上。您可以在此处阅读更多信息。
要在没有 HIMEM.SYS 的情况下使用它,您应该执行以下操作:
您可以直接控制 8042 键盘控制器。使用命令 D1。写入输出端口:写入端口 60h 的下一个字节放入 8042 输出端口。
.286
mov al,0d1h ;send command to 8042
out 64h,al
reloop: in al,64h ;check that port 60h is available
or al,02h
jnz reloop
mov al,11100011b ;keep keyboard working and gate a20
out 60h,al
push -1 ;set es=ffffh
pop es
push 00h
pop ds ;set ds=0000h
mov di,10h ;check if it worked, compare
xor si,si ;ffff:0010h to 0000:0000 for 16 bytes
mov cx,di ;set cx to 10h
cld
rep cmpsb ;compare it
je failed
[...] ;worked, copy virus to ffff:xxxx
failed: jmp short failed ;do whatever