我正在爲我的定製內核編寫引導程序,它(引導程序)基於Linux內核v0.1 boot.s
。下面是代碼:HLT指令無hlt
.set BOOTSEG, 0x7c0
.set LOADSEG, 0x9000
.set SYSSEG, 0x1000
start:
//copy the WHOLE bootloader to new location
movw BOOTSEG, %ax
movw %ax, %ds
xor %si, %si
movw LOADSEG, %ax
movw %ax, %es
xor %di, %di
movw 256, %cx
rep movsw
//jump to new location
cli
movw LOADSEG, %ax
movw %ax, %es
ljmp $LOADSEG, $loaded
loaded:
// ...
movw $0x3, %ax
int $0x10
// ...
當我試圖跳轉到新位置的Bochs寫道:WARNING: HLT instrucion with IF=0
,但目前還沒有hlt
指令都在我的代碼。跳Bochs繼續運行後,但無法正常工作,例如:int $0x10
未清除屏幕。
可能是我複製的bootloader出錯了,但是它類似於Linux。
那麼,有人可以幫我解決這個問題嗎?
'cat boot.S | grep hlt'不返回任何內容? – Benoit
它對我的引導加載程序和Linux也不會返回任何結果。 – Vanzef
'movw 256,%cx' - 不應該有'$'嗎?可能還有其他地方呢? –