1.ret和retf
ret是用栈中的数据修改IP,实现近转移
相当于:
(IP)=((ss)*16+(sp))
(sp)=(sp)+2
retf是用栈中的数据同时修改CS:IP,实现段间转移
(IP)=((ss)*16+(sp))
(sp)=(sp)+2
(CS)=((ss)*16+(sp))
(sp)=(sp)+2
2.call
两步:
1.将当前的IP或者CS:IP压入栈中
2.转移
依据位移进行转移:
call label
转移的目的地址在指令中;
call far ptr label
相当于:
push CS
push IP
jmp far ptr label
转移地址在内存中:
call word ptr [addr] 段内转移
call dword ptr [addr] 段间转移