使用匯編語言將輸入的字符串大寫轉換為小寫


 1 ;=====================
 2 ;字符串中大寫變小寫
 3 DATAS segment
 4 String db 10, ?, 10 dup(?) ;最多接收10個字符,最后的回車算一個字符
 5 DATAS ends
 6 
 7 CODES segment
 8 START:
 9     mov AX,DATAS
10     mov DS,AX
11     ;正式代碼部分
12 
13     mov dx,offset String    
14     mov ah,0ah              ;10號功能調用設置
15     int 21h                 ;調用10號DOS中斷,輸入字符串
16 
17     mov si,offset String+1  ;獲取記錄輸入字符個數內容的偏移地址
18     xor cx,cx               ;cx清零 loop循環的次數由cx設置
19     mov cl,[si]             ;設置循環次數將: DS:si中的內容取出來放入cl中
20 lp:
21     inc si                  ;si自增1
22     mov al,[si]             ;把si地址中存放的數據傳給al
23     cmp al,'A'              ;字符比較
24     jb next                 ;如果小於'A'則跳轉到next:
25     cmp al,'Z'
26     ja next                 ;如果大於'Z'則跳轉到next:
27     add al,20h              ;在'A'~'Z'范圍內,加20h變成小寫
28     mov [si],al             ;將內容重新存放進內存空間
29 next:
30     loop lp                 ;循環調用
31     mov byte ptr [si+1],'$' ;字符串最后加個'$'便於用9號功能輸出避免輸出許多無關內容
32     
33     mov ah,2 
34     mov dl,0ah
35     int 21h        ;換行
36     mov dl,0dh
37     int 21h ;換行
38     ;為什么+2?因為錄入字符串的時候string 指向的內存地址空間依次存放的 0ah,錄入的
39     ;個數,錄入的字符串
40     mov dx,offset String+2  
41     mov ah,9
42     int 21h ;調用9號DOS中斷,顯示首地址為DS:DX的字符串
43 
44     mov al,0
45     mov AH,4CH
46     INT 21H
47 CODES ends
48     end START

 


免責聲明!

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



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