call
word
ptr
?[?]是段内调用,只是先把当前指令的下一条指令的ip压栈,然后将?[?]下的内容给ip,然后继续执行.
在压栈时是sp=sp-2,ss:[sp]=压栈的ip值.
call
dword
ptr
?[?]是段间调用,只是先把当前的cs压栈,然后将指令的下一条指令的ip压栈,然后将?[?]下的内容给ip,
?[?+2]的内容给cs,然后继续执行.
这里是sp=sp-2;ss:[sp]=压栈的cs,然后sp=sp-2;ss:[sp]=压栈的ip.
希望对你有用.
call指令是调用子程序,后面紧跟的应该是子程序名或者过程名。
call di 和 call dword ptr [di]都是对的,但功能(结果)不一样。
call di是说所调用的子程序的入口偏移地址=di的值,段地址CS不变(段内调用);
call dword ptr [di]是说所调用的子程序的入口的“偏移地址”存放在内存单元DS:{di]中,而其“段地址”则存在DS:[di+2]中,这是段间调用。