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
在這段代碼中,它看起來像你故意展示兩個消息。您首先調用'printline',然後'reboot',這也稱爲'printline' –
對不起,我複製了錯誤的代碼。 – raptor
'mov al,endofline'應該是'mov si,endofline',否? –