1.从屏幕上输入小写字母,转化为大写字母输出 (解法1)
DATA SEGMENT
MESSAGE DB \
MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符 DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START:
MOV AX,DATA MOV DS,AX
LEA DX,MESSAGE ;输出ENTER A STRING MOV AH,09H INT 21H
LEA DX,MAXLENGTH ;输入字符串
MOV AH,0AH ;键盘输入到缓冲区,DS:DX=缓冲区首址 INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数
MOV AH,02H ;输出回车换行 MOV DL,0AH INT 21H MOV AH,02H MOV DL,0DH INT 21H
MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL
MOV CH,0 MOV BH,02H
LEA SI,MAXLENGTH+2;取字符串的基地址放入SI XUN: MOV AL,[SI] CMP AL,'Z'
JBE S1 ;小于等于'Z'转移 JMP S3 S1:CMP AL,'A'
JAE DA ;大于等于'A'转移 JMP OUTPUT DA:ADD AL,20H JMP OUTPUT
S3:CMP AL,'z' ;小于等于小Z转移 JBE S4
S4:CMP AL,'a' ;大于等于小a转移 JAE XIAO JMP OUTPUT XIAO: SUB AL,32 JMP OUTPUT OUTPUT: MOV DL,AL
MOV AH,02H ;显示输出 INT 21H
INC SI LOOP XUN MOV AH,4CH INT 21H CODE ENDS END START (解法2)
;将输入的小写字母转化为大写字母输出,输入回车结束 CODE SEGMENT ASSUME CS:CODE BEGIN: MOV AH,01H INT 21H
CMP AL,0DH ;ASCII OF CARRIAGE RETURN JE EXIT
CMP AL,61H ;ASCII OF 'a' JB STOP
CMP AL,7AH ;ASCII OF 'z' JA STOP SUB AL,20H STOP: MOV DL,AL MOV AH,2 INT 21H JMP BEGIN EXIT: MOV AH,4CH INT 21H RET