11.函数
上一节我们用loop循环实现了计算\(2^{12}\),这次我们来将其封装为一个函数
assume cs:codesg
codesg segment
mov ax,2
mov cx,11
call s
int 21H
s:
add ax,ax
loop s
ret
codesg ends
end
其中call和ret都是转移指令,通过call转移到指定位置,ret再返回到call的下一行
本质上call是将下一行代码的地址入栈,ret则是出栈
call只能进行近距离转移(只记录偏移量),如果要转移到远处的代码段,则需要写成call far ptr(记录段地址+偏移量)
ret的远程转移为retf