[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.