调用指令(Call)

调用指令分为近(near)调用和远(far)调用。
    如果被调用子程序的属性是近的,那么,CALL指令将产生一个近调用,它把该指令之后地址的偏移量(用一个字来表示的)压栈,把被调用子程序入口地址的偏移量送给指令指针寄存器IP即可实现执行程序的转移。
注意:因为将下一条指令地址入栈了,所以根据ebp访问第一参数时地址要增加四个字节

如果被调用子程序的属性是远的,那么,CALL指令将产生一个远调用。这时,调用指令不仅要把该指令之后地址的偏移量压进栈,而且也要把段寄存器CS的值压进栈。在此之后,再把被调用子程序入口地址的偏移量和段值分别送给IP和CS,这样完成了子程序的远调用操作。远调用指令的堆栈操。
同近调用操作,根据ebp访问第一参数时地址要增加八个字节

你可能感兴趣的:(call)