能力值:
( LV4,RANK:50 )
|
-
-
2 楼
还可以用其他的寄存器么……
mov esi,地址
call esi
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
esi也不能用 没有其他的办法吗
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
咋么没有人回答呢
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
你的意思是寄存器都不能用吗 那就用堆栈
push xxxx
call [esp]
我晕 你申请个 变量不就都办了 在内嵌里 也可以用的
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
是不是 call [esp-4] 啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
试试用push ret 代替call;
char strHelloWorld[] = "Hello World!\n";
__asm
{
push offset strHelloWorld; //全局变量用offset,局部变量用lea
push label;
push printf;
ret;
label:
add esp,4;
}
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
如果你不想动寄存器就只有用全局变量了 比如全局变量 int wumingshuaige;
__asm
{calll wumingshuaige}
编译出来 对应标准汇编 call [****]
对应机器码 FF15 ****
****就是全局变量的地址 这个全局变量wumingshuaige=无名帅哥 哈哈哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
[QUOTE=jdflash;800428]
//想用堆栈进行传值
push ebp
mov esp,ebp
add esp,4
mov [esp-4],0x000000
call esp-4
pop ebp
[/QUOTE]
你的这段代码错误很多诶,肯定不能执行啊
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
__asm
{calll 变量}
编译出来 对应汇编 call [xxxx 为变量地址]
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
DWORD temp=0x000000
_asm
{
mov eax,0x000000
mov ecx,0x000000
mov ebx,0x000000
mov edx,0x000000
call temp
}
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
没懂你意思,
是不这样的?
__asm
{
push eax;
push ebx
push ecx
push edx
mov eax,?
mov ecx,?
mov edx,?
mov ebx,?
call ?????
pop edx
pop ecx
pop ebx
pop eax
}
汇编call内容单独写,然后再调用
要在文件头声明 extern "c" fun1(......................)
|
|
|