I'm using TASM, TLINK and TD (debugger) in DOSBox.
I've recently tried programming a simple ASM 8086 program that is suppose to print the value at address 0100h. When I print the result I get output that resembles:
My code is:
MOV WORD PTR[SI],31
21H interrupt with
AH set to
09H, will print the
$ terminated string in register
DX. In your case
31H, which will point (I assume) to garbage, that's why you're getting random symbols printed.
Create the string you want to print inside your data section, and make the
DX register point to it, before invoking the print syscall.