王爽《汇编语言》实验11——编写子程序

;==========================================================================

;子程序LETTERC功能;将以0结尾的字符串中的小写字母转变成大写字母。

;==========================================================================

 

ASSUME CS:CODE,DS:DATA

 

DATA SEGMENT

    DB "Beginners's All-purposeSymbolic Instruction Code.",0

DATA ENDS

 

CODE SEGMENT

START:

    MOV AX,DATA     ;初始化DS

    MOV DS,AX

    MOV SI,0        ;SI指向字符串的首地址

    CALL LETTERC    ;调用LETTERC子程序

   

    MOV AX,4C00H    ;程序返回

    INT 21H

 

;----------------------------------------------------------------------------  

;名称:LETTERC

;功能:将以0结尾的字符串中的小写字母转变成大写字母。

;参数:DS:SI指向字符串的首地址

;返回:

LETTERC PROC NEAR

    PUSH SI             ;压栈

    PUSH AX

    COMPARE:

    MOV AL,[SI]             ;字符的ASCII码保存到AL

    CMP AL,0                ;0比较,是不是结尾符

    JE END_OF_STRING        ;,跳转到END_OF_STRING

    CMP AL,'a'              ;aASCII码比较 

    JB NEXT_CHAR            ;如果小于a,跳转到NEXT_CHAR

    CMP AL,'z'              ;zASCII码比较

    JA NEXT_CHAR            ;如果大于z,跳转到NEXT_CHAR          

    AND BYTE PTR [SI],11011111B ;小写字母转化为大写字母

    INC SI                  ;指向下一个字符

    JMP COMPARE         ;比较

    NEXT_CHAR:             

    INC SI                  ;指向下一个字符

    JMP COMPARE         ;比较

    END_OF_STRING:          ;中止比较,出栈返回

    INC SI                  ;指向下一个字符

    POP AX                  ;出栈

    POP SI

    RET                 ;返回

LETTERC ENDP

;-----------------------------------------------------------------------------

 

CODE ENDS

END START

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值