assembly 为什么我的print函数不能打印字符串?

mjqavswn  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(135)

我刚开始创建我的第一个操作系统,我想从一个非常简单的 Bootstrap 开始,基本上只是打印一个非常简单的字符串。但是我不明白为什么,不管是什么字符串,虚拟机(qemu)只打印一个'U'
这是我的代码:

ORG 0x7c00
BITS 16

%include "lib/print.asm"

boot:
    mov si, boot_msg
    call Print

    jmp $

boot_msg: db "The os is correctly loaded!", 0

times 510 - ($ - $$) db 0
dw 0xAA55

打印函数**(lib/print.asm)**:

Print:
    mov ah, 0x0e
    mov al, [si]
    psloop:
        int 0x10
        inc si
        mov al, [si]
        cmp al, 0
        jne psloop
        ret
    ret
9udxz4iz

9udxz4iz1#

我把jmp boot放在打印标签之前。
使用nasm -f bin boot.asm -o boot.bin编译boot.asm
boot.bin复制到qemu文件夹并运行qemu-system-i386 -fda boot.bin

相关问题