❤️强烈推荐人工智能学习网站❤️
子程序就是用来实现某一个功能的程序,和语言的一个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结果如下:
参考资料:<<汇编语言>>王爽