;==========================================================================
;子程序LETTERC功能;将以0结尾的字符串中的小写字母转变成大写字母。
;==========================================================================
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
DB "Beginners's All-purposeSymbolic Instruction Code.",0
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA ;初始化DS
MOV DS,AX
MOV SI,0 ;SI指向字符串的首地址
CALL LETTERC ;调用LETTERC子程序
MOV AX,4C00H ;程序返回
INT 21H
;----------------------------------------------------------------------------
;名称:LETTERC
;功能:将以0结尾的字符串中的小写字母转变成大写字母。
;参数:DS:SI指向字符串的首地址
;返回:无
LETTERC PROC NEAR
PUSH SI ;压栈
PUSH AX
COMPARE:
MOV AL,[SI] ;字符的ASCII码保存到AL中
CMP AL,0 ;和0比较,是不是结尾符
JE END_OF_STRING ;是,跳转到END_OF_STRING
CMP AL,'a' ;和a的ASCII码比较
JB NEXT_CHAR ;如果小于a,跳转到NEXT_CHAR
CMP AL,'z' ;和z的ASCII码比较
JA NEXT_CHAR ;如果大于z,跳转到NEXT_CHAR
AND BYTE PTR [SI],11011111B ;小写字母转化为大写字母
INC SI ;指向下一个字符
JMP COMPARE ;比较
NEXT_CHAR:
INC SI ;指向下一个字符
JMP COMPARE ;比较
END_OF_STRING: ;中止比较,出栈返回
INC SI ;指向下一个字符
POP AX ;出栈
POP SI
RET ;返回
LETTERC ENDP
;-----------------------------------------------------------------------------
CODE ENDS
END START