,编程实现从键盘输入一串大写字母,将其转换为小写字母在屏幕上显示出来,并且各个字母间用空格分隔.

如题所述

楼主所选择的答案,其程序,并不能保证输入大写字母。

输入小写的字母,以及其它符号,该程序都不提示输入错误。

并且,输出的,并不仅针对大写,变成小写,其它的符号,输出时,也都变了。

该程序,并不能满足题目要求。

正确答案,可以参考下面的程序:

;================================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 'Please Enter:', 13, 10, '$'
TXT1 DB 13, 10
TXT DB 81 DUP ('$')
DATA ENDS
;----------------------------------
CODE SEGMENT

START:
MOV AX, DATA
MOV DS, AX
;-----------------------
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H

MOV BX, 0
IN_X:
MOV AH, 7
INT 21H
CMP AL, 13
JE IN_END
CMP AL, 'A'
JB IN_X
CMP AL, 'Z'
JA IN_X
MOV DL, AL
MOV AH, 2
INT 21H
ADD DL, 32
MOV TXT [BX], DL
INC BX
MOV BYTE PTR TXT [BX], ' '
INC BX
CMP BX, 80
JB IN_X
IN_END:
MOV DX, OFFSET TXT1
MOV AH, 9
INT 21H
;-----------------------
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;----------------------------------
CODE ENDS
END START
;================================================
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-12
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STR DB "PLEASE INPUT STRING:$"
PRT DB 13,10,"THE STRING IS:$"
S DB 30 DUP(?)
D DB 60 DUP(' ')
DATA ENDS

CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX

LEA DX,STR
MOV AH,09H
INT 21H

LEA DX,S
MOV BX,DX
MOV BYTE PTR [BX],30
MOV AH,0AH
INT 21H

LEA SI,S
LEA DI,D
INC SI
L: INC SI
MOV AL,[SI]
CMP AL,0DH
JE NEXT
ADD AL,20H
MOV [DI],AL
ADD DI,2
JMP L

NEXT:
LEA DX,PRT
MOV AH,09H
INT 21H

MOV [DI],'$'
LEA DX,D
MOV AH,09H
INT 21H

JMP $
MOV AH,4CH
INT 21H
CODE ENDS
END START本回答被提问者采纳
相似回答