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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值