;从键盘输入任意一串小写字符(字符个数可变),
;将输入的小写字符转换为相应的大写字符,并在显示器上显示输出。
;从键盘输入任意一串小写字符(字符个数可变), ;将输入的小写字符转换为相应的大写字符,并在显示器上显示输出。 DATAS SEGMENT ;此处输入数据段代码 INPUTSET DB 'PLEASE ENTER A STRING OF LOWERCASE LETTERS $' STRING DB 30H DB 0 DB 30H DUP('$') COUNT EQU $-STRING TIP DB 'THERE ARE ILLEGAL LETTERS! $' ;OUTLETTER DB COUNT DATAS ENDS STACKS SEGMENT DW 20H DUP(0);此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV ES,AX ;此处输入代码段代码 ;初始化 FIRST: ;MOV AX,0 ;MOV STRING,AL MOV DX,OFFSET INPUTSET MOV AH,09H INT 21H MOV DL,0AH;回车 MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H ;输入字符串 LEA DX,STRING MOV AH,0AH INT 21H MOV CL,STRING+1 MOV SI,2 MOV DL,0AH;回车 MOV AH,02H INT 21H MOV DL,0DH MOV AH,2 INT 21H ;小写变大写 NEXT:MOV AL,STRING[SI] ;小写字符串判断 CMP AL,'a' JB ERROTIP CMP AL,'z' JA ERROTIP SUB AL,20H MOV STRING[SI],AL;存得到的大写字母 INC SI LOOP NEXT MOV STRING[SI],'$' MOV DX,OFFSET STRING ADD DX,2 MOV AH,09H INT 21H MOV DL,0AH;回车 MOV AH,02H INT 21H MOV DL,0DH MOV AH,2 INT 21H JMP EXIT ERROTIP: MOV DX,OFFSET TIP MOV AH,09H INT 21H MOV DL,0AH;回车 MOV AH,02H INT 21H MOV DL,0DH MOV AH,2 INT 21H JMP FIRST EXIT: MOV AH,4CH INT 21H CODES ENDS END START