汇编语言,输入一个长度为n的字符串,将大写字母转化为小写
发布网友
发布时间:2022-05-15 05:19
我来回答
共2个回答
热心网友
时间:2023-07-27 14:40
;从键盘输入一个长度为n的字符串,0<n<32。要求:
;1,输入和输出之前必须先显示提示信息,提示必须独占一行,输入用回车符结束。
;2,将字符串中的大写字母转化为小写字母并将转化后的字符串显示在屏幕。
;3,统计字符串中的非数字字符数,用十进制输出。
;4,输出字符串中包含的小写字母中ascii值最小的一个。
ASSUME CS:CC, DS:QQ
QQ SEGMENT
MSG1 DB 'Input the string : ', 13, 10, '$'
MSG2 DB 13, 10, 'The string is : '
STR DB 100, ?, 101 DUP('$')
MSG3 DB 13, 10, 'The CHAR is : '
NN DB '00'
MSG4 DB 13, 10, 'The small is : '
SM DB 'No.$'
QQ ENDS
CC SEGMENT
START:
MOV AX, QQ
MOV DS, AX
;--------------------------------------------------
LEA DX, MSG1 ;显示“INPUT THE STRING:”
MOV AH, 9
INT 21H
LEA DX, STR
MOV AH, 0AH ;输入字符串
INT 21H
MOV CL, STR + 1
MOV CH, 0
CMP CX, 0
JNZ CAL
JMP EXIT
CAL:
MOV STR, 13
MOV STR + 1, 10
MOV AL, 'z' + 1
MOV BX, 0
LOP:
CMP BYTE PTR STR[BX + 2], 'A'
JB NEXT1
CMP BYTE PTR STR[BX + 2], 'Z'
JA NEXT1
ADD BYTE PTR STR[BX + 2], 32
NEXT1:
CMP BYTE PTR STR[BX + 2], '0'
JB NNNN
CMP BYTE PTR STR[BX + 2], '9'
JBE NEXT2
NNNN:
INC BYTE PTR NN + 1
CMP BYTE PTR NN + 1, '9'
JNA NEXT2
MOV BYTE PTR NN + 1, '0'
INC BYTE PTR NN + 0
NEXT2:
CMP BYTE PTR STR[BX + 2], 'a'
JB NEXT3
CMP AL, STR[BX + 2]
JB NEXT3
MOV AL, STR[BX + 2]
NEXT3:
INC BX
LOOP LOP
CMP AL, 'z' + 1
JZ NO
MOV SM, AL
MOV BYTE PTR SM + 1, '$'
NO:
CMP BYTE PTR NN + 0, '0'
JNE SHOW1
MOV BYTE PTR NN + 0, ' '
SHOW1:
LEA DX, MSG2 ;显示 The string is:
MOV AH, 9
INT 21H
LEA DX, MSG3 ;显示其它
MOV AH, 9
INT 21H
;--------------------------------------------------
EXIT:
MOV AH, 4CH
INT 21H
CC ENDS
END START
四个要求都满足了。追问修正错误后运行乱码= =
追答本程序,经过再次实验,没有任何错误,也不产生乱码。
而且,当你输入的,都是数字时,即当你输入0个字符时,
本程序输出的最小字符,也不会出现错误。
热心网友
时间:2023-07-27 14:40
第4个输出的是原来输入的字符串还是转化后的字符串。追问转化后的
追答
不知道有没有bug,试试看吧。