編寫一個子程序,將包含任意字符,以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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM