print:
    pusha

; logic being implemented here:
; while ( string[i] != 0 ) { print string[i]; i++ }

start:
    mov al, [bx]
    cmp al, 0 ; check if al (byte we are printing) is a 0 (null byte)
    je done ; if so, jump to done

    ; print with BIOS help
    mov ah, 0x0e
    int 0x10 ; char already in al

    add bx, 1 ; increment pointer
    jmp start ; repeat

done:
    popa
    ret

print_nl:
    pusha

    mov ah, 0x0e
    mov al, 0x0a ; newline char
    int 0x10
    mov al, 0x0d ; carriage return
    int 0x10

    popa
    ret