call指令经常跟ret指令配合使用,因此CPU执行call指令,进行两步操作:
将当前的 IP 或 CS和IP 压入栈中;
转移(jmp)。
call指令不能实现短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同。
call 标号(近转移)
CPU执行此种格式的call指令时,相当于进行 push IP jmp near ptr 标号
call far ptr 标号(段间转移)
CPU执行此种格式的call指令时,相当于进行:push CS,push IP jmp far ptr 标号
call 16位寄存器
CPU执行此种格式的call指令时,相当于进行: push IP jmp 16位寄存器
call word ptr 内存单元地址
CPU执行此种格式的call指令时,相当于进行:push IP jmp word ptr 内存单元地址
参考资料:<<汇编语言>> 王爽