summaryrefslogtreecommitdiff
path: root/boot/print_string_16.asm
diff options
context:
space:
mode:
Diffstat (limited to 'boot/print_string_16.asm')
-rw-r--r--boot/print_string_16.asm28
1 files changed, 28 insertions, 0 deletions
diff --git a/boot/print_string_16.asm b/boot/print_string_16.asm
new file mode 100644
index 0000000..5d8ad5c
--- /dev/null
+++ b/boot/print_string_16.asm
@@ -0,0 +1,28 @@
+[bits 16]
+
+;print_string routine ([bx])
+;this routine will print a null terminated string at [bx] to the screen.
+print_string:
+
+ pusha ;push all registers
+ mov ah,0x0e
+
+ print_string_loop:
+
+ ;check if value at [bx] is "\0" (end of string)
+ mov cl,[bx]
+ cmp cl,0
+ je print_string_finish
+
+ ;otherwise instruct BIOS to print the current char
+ mov al,cl
+ int 0x10
+
+ ;proceed with next char
+ inc bx
+ jmp print_string_loop
+
+ print_string_finish:
+
+ popa ;pop all registers
+ ret ;return to caller