NASM 引导加载程序

问题描述 投票:0回答:1

这个问题的读者您好。

我想知道如何组合 2 个引导加载程序

首先我会告诉你我的两个引导加载程序是如何工作的

第一个显示一条消息并要求按一个键,当您按一个键时,它应该显示第二个引导加载程序,它会执行其他无关紧要的操作。

我需要知道如何更改引导加载程序,从第一个引导加载程序更改为第二个引导加载程序?

之后我问你建议我使用什么程序来组合两个引导加载程序.bin,我使用make、dd还是windows复制命令?

如果你不明白请告诉我,我会回答你的问题。

谢谢。

我正在尝试让第一个引导加载程序切换到第二个引导加载程序。 我等待按键来显示第二个引导加载程序 唯一发生的事情是只显示第一个引导加载程序,并且当按下某个键时,qemu 崩溃。

assembly nasm bootloader
1个回答
0
投票

如果你想重启执行,那是不可能的。但是,您可以使用简单的代码轻松跳转到另一个“引导加载程序”:

bits        16                    ; 16-bit code
org         0x7c00                ; Set image base
xor         ax,        ax
mov         ds,        ax
jmp         boot1
jmp         boot2
boot1:
    ; From https://www.youtube.com/watch?v=qrRGprIIOgo
    cld
    mov     si,         msg
    .loop:
        lodsb
        cmp al,         0
        je  done
        mov ah,         0Eh
        int 10h
        jmp .loop
    ret
done:
    ; Code from WinAsm example 
    int     21h                    ; Call the DOS interrupt (DOS function call)
    mov     ah,         0          ; Call bios function "GET KEYSTROKE"
    int     16h
boot2:
    ; do something you wanted here
    jmp     boot1                  ; dummy, you can change it according to the requirements
    ret
msg                        db "Press any key...", 0
times       510 - ($ - $$) db 0
dw          0xAA55                 ; Signature

(不算两个bootloader,而是算两个程序跳转到两个不同的bootloader)

© www.soinside.com 2019 - 2024. All rights reserved.