0a号功能使用错误。
接受输入字符串缓冲区的定义说明:
1、第一个字节为缓冲区的最大容量,可认为是入口参数;
2、第二个字节为实际输入的字符数(不包括回车键),可看作出口参数;
3、从第三个字节开始存放实际输入的字符串;
BUF DB 30,0,30 DUP(?)
然后就是0a号功能不是以$作为字符串结尾的,所以应该自己手动加上,这样使用9号功能的时候才不会出错
改了一下,自己对比下与你原来的有什么不同吧
data SEGMENT
buf DB 30,0,31 dup("$")
ENDS
code SEGMENT
ASSUME CS:code,DS:data
start:
MOV AX, data
MOV DS, AX
MOV AH,0ah
MOV DX,OFFSET buf
INT 21h
MOV AH,09h
MOV DX,OFFSET buf+2
INT 21h
MOV AH, 4ch
INT 21h
ENDS
END start