1. 程式人生 > >[Hb-XI] 標誌暫存器 cmp jb ja指令程式設計

[Hb-XI] 標誌暫存器 cmp jb ja指令程式設計

《組合語言·第三版》--王爽

1 問題

編寫一個子程式,將包含任意字元,以0結尾的字串中的小寫字母轉變為大寫字母,描述如下。

名稱:letterc

功能:將以0結尾的字串中的小寫字母轉變成大寫字母

引數:ds:si指向字串的首地址

返回:無

應用舉例:

1.        assume    cs:codesg

2.         

3.        datasg      segment

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

5.        datasg      ends

6.         

7.         

8.        codesg     segment

9.        start:

10.             mov ax, datasg

11.             mov ds, ax

12.             mov si, 0

13.            

14.             call   letterc

15.            

16.    r_s:

17.             mov ax, 4c00h

18.             int    21h

19.            

20.    letterc:

21.            

22.    ret

23.    codesg     ends

24.    end  start

注意需要進行轉化的是字串中的小寫字母a ~ z,而不是其它字元。

2 letterc程式碼

1.        letterc:

2.                 mov cx, ds:[si]

3.                 jcxz  r_s             ;檢測到字串中的結束標誌0

4.                

5.                 cmp byte ptr ds:[si],'a'

6.                 jb      next          ;如果當前字元小於'a'則可以檢測下一個字元

7.                

8.                 cmp byte ptr ds:[si],'z'   

9.                 ja      next          ;如果當前字元大於'z'則可檢測下一個字元

10.            

11.             sub   byte ptr ds:[si],32   ;如果當前字元處於['a', 'z']之間,則將其轉變為對應的大寫字元

12.            

13.             next:

14.                       inc    si

15.                       loop letterc

16.            

17.   ret

3 結果

Figure1. 程式執行結果
[2014.12.18 - 16:35] R《Hb》Note Over.