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?