【发布时间】:2019-12-14 17:08:33
【问题描述】:
我需要调用从汇编代码中添加 3 个三个整数的函数; 整数本身在装配部分中设置;
一切看起来都正确,但是 masm 函数似乎没有返回正确的值。它存储在 eax 中,应该作为函数值返回,但是在运行 C 代码时,它不会 printf 任何内容,并且想要的值(在本例中为 15)实际上是程序的退出代码。那么有没有办法打印这个结果?
MASM 代码:
.586
.MODEL FLAT, C
.DATA
a1 DWORD 6
a2 DWORD 5
a3 DWORD 4
.CODE
func_asm PROC C
push a3
push a2
push a1
EXTRN numbers: proc
call numbers
leave
ret
func_asm ENDP
END
C 代码:
#include <stdio.h>
extern int __cdecl func_asm();
int numbers(int, int, int);
int main()
{
printf("%d", func_asm());
}
int numbers(int a1, int a2, int a3)
{
return a1 + a2 + a3;
}
【问题讨论】: