汇编语言,从键盘上输入一串字符串,当输入字符是回车时,显示输入的所有字符

如题
2024-12-01 12:15:27
推荐回答(2个)
回答1:

下列程序已经调试通过。
;---------------------------------
DATA SEGMENT
MSG1 DB 13, 10, 'Please input a char : ', 13, 10, 13, 10, '$'
DDD1 DB 13, 10, 13, 10
DDD2 DB 81 DUP ('$')
DATA ENDS
;---------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;---------------------------------
MOV DX, OFFSET MSG1
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.
MOV DI, OFFSET DDD2
LOP:
MOV AH, 1 ;输入字符.
INT 21H
CMP AL, 13
JZ EXIT ;'回车'结束.
MOV [DI], AL
INC DI
CMP DI, OFFSET DDD2 + 80
JZ EXIT ;输入80个字符了,也结束.
JMP LOP ;继续输入.
;---------------------------------
EXIT:
MOV DX, OFFSET DDD1
MOV AH, 9 ;9号功能调用.
INT 21H ;显示输入的字符.
;---------------------------------
MOV AH, 4CH ;程序结束.
INT 21H
;---------------------------------
CODE ENDS
END START
;---------------------------------

回答2:

;从键盘输入一字符串,然后下一行显示
.386
data segment use16
buf db 50 ;定义缓冲区
db 0
db 50 dup(0)
crlf db odh,oah,'$' ;回车换行
data ends

stack segment use16 stack
db 200 dup(0)
stack ends

code segment use16
assume ds:data, ss:stack, cs:code
start: mov ax,data
mov ds,ax
lea dx,buf ;输入字符串
mov ah,10
int 21h
lea dx,crlf ;输出换行
mov ah,9
int 21h

mov bl,buf+1
mov bh,0 ;计算字符串实际字符个数
mov byte ptr buf+2[bx], '$' ;在串尾补入'$'
lea dx,buf+2
mov ah,9 ;输出字符串
int 21h

mov ah,4ch
int21h
code ends

end start