В настоящее время я пишу 32-битное ядро для своей операционной системы, но столкнулся с проблемой.
При попытке очистить экран с помощью метода из здесь происходит сбой 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: ошибка возникает в *
репутация
если я удалю это, код будет работать нормально (но, конечно, без очистки экрана)
rep stosw
немного проще понять, поскольку каждый символ состоит из двух байтов (атрибуты и сам код символа). - person Drew McGowen   schedule 08.08.2013