2013-07-09 48 views
2

我已經基於寫了一個簡單的bootloader:http://www.viralpatel.net/taj/tutorial/hello_world_bootloader.phpNASM - Bootloader的打印線

它應該只顯示「引導......」在屏幕上,但它也顯示我定義的每個消息(「引導...刪除磁盤並按回車鍵重新啓動......「)。我該如何解決它?

這是我的代碼:

[BITS 16] 
[ORG 0x7C00] 

xor ax,ax 
mov ds,ax 

mov si, msg_boot 
call printline 

loop: 
jmp loop 

reboot: 
mov si, msg_remove_disk 
call printline 
call .inputcheck 
ret 
.inputcheck: 
call input 
cmp al, 13 
je .end 
jmp .inputcheck 
.end: 
call reset 
ret 

reset: 
db 0Eah 
dw 0000h 
dw 0FFFFh 
ret 

exit: 
ret 

print: 
mov al, [si] 
inc si 
or al, al 
jz exit 
mov ah, 0x0E 
int 0x10 
jmp print 

printline: 
call print 
mov al, endofline 
call print 
ret 

input: 
mov ah, 0 
int 16h 
ret 

msg_boot db 'Booting...', 0 
msg_remove_disk db 'Remove disk and press enter for reboot...', 0 

endofline db 13, 10, 0 

TIMES 510 - ($ - $$) db 0 
DW 0xAA55 
+0

在這段代碼中,它看起來像你故意展示兩個消息。您首先調用'printline',然後'reboot',這也稱爲'printline' –

+0

對不起,我複製了錯誤的代碼。 – raptor

+1

'mov al,endofline'應該是'mov si,endofline',否? –

回答

1

MOV人,行尾 應 MOV SI,行尾

感謝@Frank科特勒