编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母

;编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母
;功能:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si只想字符串首地址
;注意:需要进行转化的是字符串中的小写字母'a'~'z',而不是其他字符

assume cs:code



data segment

 db "Beginner's All-purpose Symbolic Instruction Code.", 0

data ends



code segment

start:

   mov ax, data

   mov ds, ax

   mov si, 0

   call letterc

   

   mov ax, 4c00h

   int 21h

  

letterc:

   push ax

   push cx

   push si

 begin: 

   mov ch, 0

   mov cl, [si]

   jcxz endstr   ;if(cl=0){jmp short endstr} 

   

   ;判断 第三ds:[si] 是否为a~b

   mov al, 61h

   cmp cl, al

   jb reset ;ds:[si] 的ASCII <  a的ASCII

   mov al, 7ah

   cmp cl, al

   ja reset ;ds:[si] 的ASCII >  z的ASCII

   

   ;执行到这里来了说明 是在 a~z 之间

   ;A[0100 0001]  a[0110 0001]

   mov al, 11011111b

   and cl, al

   mov [si], cl ;转换大写后写回内存

   

 reset:  

   inc si

   jmp short begin

   

 endstr: 

   pop si

   pop cx

   pop ax

   ret 



 code ends

end start

 

你可能感兴趣的:(字符串)