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"
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.