2013-07-09 2 views
2

Я написал простой загрузчик на основе: http://www.viralpatel.net/taj/tutorial/hello_world_bootloader.phpNASM - Загрузчик Printline

Он должен отображать только «Загрузка ...» на экране, но и отображает каждое сообщение я определил ("Загрузка ... Удалить диск и нажмите Enter для перезагрузки ... "). Как я могу это исправить?

Это мой код:

[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', no? –

ответ

1

мов аль, endofline должен быть мов си, endofline

Благодаря @Frank Котлер

Смежные вопросы