#ret、retf和call命令
一、ret和retf命令
1、ret指令用来进行近转移,执行时进行俩步操作:
(1)、(ip)=((ss)*16+(sp))
(2)、(sp)=(sp)+2
2、retf指令用来进行远转移,执行时进行四步操作:
(1)、(ip)=((ss)*16+(sp))
(2)、(sp)=(sp)+2
(3)、(cs)=((ss)*16+(sp))
(4)、(sp)=(sp)+2
ret表示把pop值给ip
retf表示pop值给ip和cs
二、call命令
1、 call 相当于把ip push
2、 call不能用于短转移
3、call进行3步 :
(1)、 (sp)=(sp)-2
(2)、push ip
(3)、jmp 标号
4、call far ptr 标号:
(1)、(sp)=(sp)-2
(2)、push cs
(3)、(sp)=(sp)-2
(4)、push ip
(5)、jmp far ptr 标号
5、call word ptr 内存位置:相当于对ip进行push 然后jmp 内存位置
6、call dword ptr 内存位置: 相当于先对cs进行push然后对ippush 最后在jmp内存位置