I am developing a simple bare-metal OS, and my function for printing strings works only on some strings (eg "Hello World") but not others (eg "Press F1 for help")
[ORG 0x7C00]
msg db "Press F1 for help",0
main:
mov AH, 00h
int 16h
cmp AH, 0x3B
je help
jmp main
help:
mov si, msg
call print
jmp main
; Print library, invoke with "call print" example:
; msg db "Foobar",0
; mov SI, msg
; call print
%include "printlib.inc"
return:
ret
times 510-($-$$) db 0;
db 0x55
db 0xAA
printlib.inc:
print:
mov ax, 0x07c0
mov ds, ax
cld
jmp .loop
.loop:lodsb
or al, al ; zero=end or str
jz .retn ; get out
mov ah, 0x0E
mov bh, 0
int 0x10
jmp .loop
.retn:
ret