<匯編語言> 王爽 實驗11
阿新 • • 發佈:2018-03-30
style 調用 == begin 小寫字母 包含 and 一個 是否
1.描述: 編寫一個子程序,將包含任意字符,以0結尾的字符串中的小寫字母轉變成大寫字母,描述如下.
名稱: letterc
功能: 將以0結尾的字符串中的小寫字母轉變成大寫字母
參數: ds:si指向字符串首地址
因為要轉化的字符串中小寫字母,而整個字符串中還有其他符號(空格,橫杠),所以我們需要用ASCII來判斷值是否在[97,122]之間,確定是小寫字母,然後再轉化成大寫字母
1 assume cs:code 2 data segment 3 db "Beginner‘s All-purpose Symoblic Instruction Code.",0 4 data ends 5 6 code segment 7 start: 8 mov ax,data 9 mov ds,ax 10 mov si,0 11 call letterc ;調用子程序 12 13 mov ax,4c00h 14 int 21h 15 ; 子程序 16 letterc: 17 push ax 18 push cx ;入棧各個寄存器的值,防止子程序破壞外部值19 s: 20 mov cl,ds:[si] 21 mov ch,0 22 23 jcxz ok ;如果cx==0,則結束循環.判斷是否為字符串末尾. 24 25 cmp cl,97 ;判斷字符是否在[97,122]之間,如果在說明 26 jb check_out ;是小寫字母,需要轉換大寫. 27 cmpcl,122 ;jb,小於97跳轉.ja 大於122跳轉 28 ja check_out 29 30 mov al,cl ;將小寫字母改成大寫字母 31 and al,11011111b 32 mov cl,al 33 mov ds:[si],cl 34 35 check_out: ;判斷跳出位置 36 inc si 37 jmp short s ;執行循環 38 39 ok: 40 pop cx ;恢復值 41 pop ax 42 ret 43 44 code ends 45 end start
<匯編語言> 王爽 實驗11