编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母。
描述如下:名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母 参数:ds:si指向字符串首地址 应用举例:assume cs:codesgdatasg segment db "Beginner's All-puropose Symbolic Instruction Code.",0datasg endscodesg segment begin: mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c00h int 21hletterc: .....codesg endsend begin
分析:’a’~’z’的ASCII码为97~122,而’A’~’Z’的ASCII码为65~90,小写字母比它对应的大写字母大32,故可以判断只要ASCII码在[97,122]之间的数,减去32即得它所对应的大写字母。
参考代码:
assume cs:codesgdatasg segment db "Beginner's All-puropose Symbolic Instruction Code.",0datasg endscodesg segment begin: mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h; 功能:将以0结尾的字符串中的小写字母转变成大写字母; 参数:ds:si指向字符串首地址letterc: mov cl,[si] mov ch,0 jcxz break cmp cx,97 jb s ; cx<97 cmp cx,122 ja s ; cx>122 sub cx,32 ; 将小写字母转换为大写字母 mov [si],cl s: inc si loop letterc break: retcodesg endsend begin
运行结果: