Well, with that out of the way, here's a picture of the problem I'm having:
As you can see there's some kind of weird character at the end of "Hello world."
If I remember correctly, this has something to do with unicode and ASCII, I just don't remember how to fix it. Here is my code:
ORG 100h
USE16
main: ;Main program start
mov al, 12h ;Set video mode
int 10h
mov bl, 01h ;Bios color blue for text
mov si, testString ;Move string to si register
call printString ;Call printString function
mov ax, 4c00h ;Appropriate exit code for DOS
int 21h ;Exit DOS
testString db 'Hello world.' ;Defined bytes for a string
printString: ;printString function start
mov ah, 0Eh
.pS_Method: ;Printing character method
lodsb ;Update character from string in si register
cmp al, 0 ;If done, al will be 0
je .pS_Completed ;If al is equal to 0, this will jump to the completion code to return
int 10h ;Otherwise, output character
jmp .pS_Method ;Repeat process for additional characters
.pS_Completed: ;Jumped to when completed writing a string of characters
ret ;Returns back to main "function"
Edit:
I apologize for the messy code, I guess GameDev doesn't support Assembly syntax highlighting. In any case, I think I may get a reply saying something about not having the DOS terminating character in the string. I tried with and without it, and it made no difference, and I think that since I'm using int 10h, it doesn't matter anyway.