Assembly NASM-引导加载程序打印行

Assembly NASM-引导加载程序打印行,assembly,nasm,bootloader,bios,Assembly,Nasm,Bootloader,Bios,我基于以下内容编写了一个简单的引导加载程序: 它应该只在屏幕上显示“Booting…”,但它也会显示我定义的每条消息(“Booting…”删除磁盘并按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 cal

我基于以下内容编写了一个简单的引导加载程序:

它应该只在屏幕上显示“Booting…”,但它也会显示我定义的每条消息(“Booting…”删除磁盘并按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
莫夫·艾尔,埃多弗林 应该是 莫夫-西,内弗林


谢谢@Frank Kotler

在这段代码中,您似乎有意显示这两条消息。您首先调用
printline
,然后
reboot
,这也会调用
printline
对不起,我复制了错误的代码。
mov-al,endofline
应该是
mov-si,endofline
,否?是!!!就这样,谢谢你,弗兰克!现在,由于无限循环,您的代码将在消息之后冻结