I have a simple program which moves some null-terminated strings to the bx register:
[org 0x7c00]    ; Tells the assembler where the code will be loaded
    mov ah, 0x0e
    mov bx, HELLO_MSG   ; Moves string inside of HELLO_MSG to bx
    call print_string   ; Calls the print_string function inside of ./print_string.asm
    mov bx, GOODBYE_MSG ; Moves string inside of GOODBYE_MSG to bx
    call print_string
    jmp $   ; Hangs
%include "print_string.asm"
HELLO_MSG:
    db 'Hello, World!', 0
GOODBYE_MSG:
    db 'Goodbye!', 0
    times 510-($-$$) db 0
    dw 0xaa55
and a print_string function inside of ./print_string.asm:
print_string:
    mov ah, 0x0e
    int 0x10
    ret
The print_string function doesn't work. From my understanding, ah has the value 0x0e stored, so if al has a value of X and int 0x10 is ran, it tells the BIOS to display the value of al on the screen. How would I replicate this for strings?
 
     
     
     
     
    