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