汇编语言,输入字符串到内存缓存区,再显示出来,但好像输入不了?

2025-03-18 06:22:53
推荐回答(2个)
回答1:

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:若有不明白的地方,可以追问

回答2:

改成下面的,即可:

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