汇编中的子程序

          子程序就是用来实现某一个功能的程序,和语言的一个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结果如下:

 

 

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

你可能感兴趣的:(汇编语言)