+; Prints a null terminated string of your choice.
+; Arguments:
+; CS:DI - pointer to the string you want to print
+; BL - 0 prints newline, otherwise no
+print
+ pusha
+ mov ah, 0Eh ; teletype print
+.write2
+ mov al, [CURRENT_ADDR] ; get current char and put it in al
+ cmp al, 0 ; check if al is null (string terminator)
+ je .newline ; if it is, start a new line
+ int 10h ; otherwise write the char
+ inc di ; increment pointer to string
+ jmp .write2 ; jump back to this section
+.newline
+ cmp bl, 1
+ je .done
+ mov al, 0Dh ; carriage return
+ int 10h
+ mov al, 0Ah ; line feed
+ int 10h
+.done
+ popa
+ ret ; return
+
+; Prints a word (16-bit value) in hex format.
+; Arguments:
+; DX - word to print
+; BL - 0 will print a newline, 1 won't
+print_word