現在、オペレーティング システム用の 32 ビット カーネルを作成していますが、問題に遭遇しました。
hereのメソッドを使用して画面をクリアしようとすると、bochs がクラッシュし、次のメッセージが表示されます。
[CPU ]プリフェッチ: 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
ここで何が問題なのですか?
編集:タイプミス、getHostByAddr ではなく getHostMemAddr です
* EDIT2: エラーは次の場所で発生します *
担当者
これを削除すると、コードは正常に実行されます (ただし、もちろん画面のクリアはありません)