我有2个功能。一个是致电CountChar
和DisplayResult
,如下所示。我如何将charInput数组作为CountChar
函数的引用传递给DisplayResult
函数?任何帮助将非常感激。感谢。
CountChar PROC
pushad
xor eax, eax
xor ebx, ebx
xor edx, edx
mov esi, 0
mov ecx, bufSize
L1:
mov al, buffer[esi]
mov dl, charInput[eax]
inc dl
mov charInput[eax], dl ; How to pass charInput as reference ????
inc esi
loop L1 ; end loop
popad
ret
CountChar ENDP
DisplayResult PROC
pushad
; somehow retrieve the charInput from above for display ???
popad
ret
DisplayResult ENDP
答案 0 :(得分:1)
指针是指针是指针。指向数据的指针与指向代码的指针具有相同的位数。无论它们是函数向量还是数据向量,这些位都没有唯一的属性。
你可以用几种方式做到这一点
首先,
DisplayResult PROC,the_vector:dword
mov eax, the_vector ; Moves the passed value "the_vector" into eax
call eax
ret
DisplayResult endp
或
DisplayResult PROC pop edx; POP返回向量 流行的; POP功能向量 推edx;保存将由[eax]完成的'ret'的返回向量 jmp eax;跳到eax,这将回到谁打电话给我们 DisplayResult endp
摆脱所有pushad / popad的东西,浪费时间。只需按下所需的寄存器,并尝试仅使用预期会被销毁的寄存器。
汇编语言的目的是利用次要的东西,以便它最终帮助你;否则,请使用C.
DisplayResult的C原型应该是这样的:
extern void DisplayResult(void *);
调用它时,将函数名称转换为void *。像这样:
DisplayResult((void *)my_function);