我目前正在为我的操作系统编写一个 32 位内核,但我偶然发现了一个问题。
当尝试使用here的方法清除屏幕时,bochs 崩溃并显示以下消息:
[CPU ]prefetch: getHostMemAddr 否决直接读取,pAddr=0xa0000
clear_screen32 方法(在保护模式下运行):
;================================;
; Clears the screen (in 32 bits) ;
;================================;
clear_screen32:
pusha
cld
mov edi, vmem
mov cx, 2000
mov ah, c_attrib
mov al, ' '
rep stosw
mov byte [_xpos], 0
mov byte [_ypos], 0
popa
ret
这里有什么问题?
编辑:我打错了,是 getHostMemAddr 不是 getHostByAddr
* EDIT2:错误发生在*
代表存储
如果我删除它,代码运行良好(但当然没有屏幕清除)