STACK SEGMENT
STT DB 100 DUP(?)
STACK ENDS
DATA SEGMENT
BUFF DB 100 ;这里改了
DB ?
DB 100 DUP(?)
CRLF DB 0AH, 0DH, '$' ;0AH, 0DH在ASCII中是回车换行
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AH,10
MOV DX,OFFSET BUFF
INT 21H
MOV BL, BUFF+1 ;将输入的字符串的个数赋值给BL
LEA SI, BUFF+2 ;取BUFF+2的偏移地址给SI
MOV BYTE PTR [SI+BX+1], '$' ;SI是存放输入的字符串的位置,那么加上BX就跳过了字符串,在后面的一个单元赋值一个$
MOV AH,9
MOV DX,OFFSET CRLF ;加了2句, 为了输出回车换行
INT 21H
MOV DX,OFFSET BUFF+2 ;输出字符串, 遇到$结束
INT 21H
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START
PS:若有不明白的地方,可以追问
改成下面的,即可:
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
BUFF DB 100
DB ?
DB 100 DUP('$')
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET BUFF
MOV AH, 10
INT 21H
MOV [BUFF], 13
MOV [BUFF + 1], 10
MOV AH, 9
INT 21H
EXIT:
MOV AX, 4C00H
INT 21H
CODE ENDS
END START