汇编中的子程序

❤️强烈推荐人工智能学习网站❤️         

子程序就是用来实现某一个功能的程序,和语言的一个func差不多,要利用call和ret来实现,下面通过一段代码来学习一下。

assume cs:codesg

data segment
    db "china",0
data ends

codesg segement
    begin:mov ax,data
          mov ds,ax
          mov si,0

          call letterc  ;跳转到子程序
          mov ah,4ch
          int 21h
letterc:
          push cx    ;子程序中要改变所以提前压栈
          push si
   lnext:
          sub ch,ch      ;sub是减法指令
          mov cl,[si]     ;[si]是对应字符的值
          jxcz lret   ;cx=0时则进行转移,字符串最后一个是0
          cmp cl,'a'    
          jb plusi     ;低于则转移
          cmp cl,'z'    
          ja plusi      ;高于则转移
          and byte ptr [si],11011111b   ;小写字母转换为大写字母
    plusi:
          inc si     ;字符前移
          jmp short lnext
    lret:
          pop si
          pop cx
ret
codesg ends
end begin

 上述程序的功能是:将以0结尾的字符串中的小写字母变成大写字母。debug结果如下:

 

 

参考资料:<<汇编语言>>王爽

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼盼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值