通过Intel 8086 Assembly中变量的指针调用过程

时间:2015-11-25 07:58:29

标签: pointers assembly call procedure x86-16

假设我有一个带有过程地址的变量:

func_pointer dw offset my_function

my_function proc near

my_function endp

如何从变量中调用它?

我试过了

call dword ptr[func_pointer + 1]

但它似乎不起作用。

1 个答案:

答案 0 :(得分:3)

您需要做的就是使用call func_pointercall [func_pointer](它们与MASM都相同)。因为符号func_pointer的类型是WORD,所以汇编器知道使用间接调用而不是直接调用。

例如:

_TEXT   SEGMENT PUBLIC USE16
    ASSUME DS:_TEXT

func_pointer dw offset my_function

my_function proc near
    ret
my_function endp

caller proc
    call [func_pointer]
caller endp

_TEXT   ENDS

    END