首页 > 解决方案 > 在汇编中按字符打印字符串

问题描述

我正在学习汇编,我想非常了解基础知识,以便我可以编写更完整的函数。

我想按字符将字符串打印到控制台字符。该字符串存储在 db 类型的变量中。我有一个调用 print_string 的函数,它将 bx 地址中存储的值与 0 进行比较,因为我在字符串的末尾放了一个 0。之后,我想遍历字符并一一打印。

这是代码:

[org 0x7c00]

mov bx, HELLO_MSG
call print_string

mov bx, GOODBYE_MSG
call print_string

jmp end

;%include "print_string.asm"

;DATA
HELLO_MSG:
        db "Hello, World!", 0
GOODBYE_MSG:
        db "Goodbye, World!", 0

;FUNCTIONS
print_string:
        cmp [bx], 0
        je the_end
        mov ah, 0x0e
        mov al, [bx]
        int 0x10
        add bx, 0x1
        jmp print_string

        the_end:
                ret

end:


jmp $

;padding and magic no
times 510-($-$$) db 0
dw 0xaa55

我不想使用任何可以解决此问题的中断。

这是我尝试制作 bin 文件时的错误消息: 在此处输入图像描述

标签: stringassemblyx86charnasm

解决方案


推荐阅读