[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.
總結
以上是生活随笔為你收集整理的[Hb-XI] 标志寄存器 cmp jb ja指令编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建基础后台框架及整合Swagger2及
- 下一篇: 原创:Eclipse 上网代理设置(亲测