Мне нужно написать функцию funcName (int a, int b, int c)
на C, которая вычисляет значение по формуле a * b-c
и возвращает его.Затем мне нужно написать функцию на masm, которая вызывает эту функцию с аргументами, указанными в сегменте данных, и возвращает значение, которое первая функция возвращает после своего вызова.Функция, написанная в masm, должна вызываться в main и выводить полученное значение.Я написал программу, но когда я ее запускаю, появляется окно, в котором написано Unhandled exception at 0x0014000a in labvpd.exe: 0xC0000005: Access violation writing location 0x8d4e00eb.
Что я делаю не так?
C code:
#include <stdio.h>
#include <stdlib.h>
extern "C"
int __cdecl funcName(int a, int b, int c);
extern "C"
int FUN();
int main()
{
printf("%s", "Result: ");
printf("%d", FUN());
scanf("%d");
return 0;
}
extern "C"
int __cdecl funcName(int a, int b, int c){
int result = a*b-c;
return result;
}
MASM-код:
.686
.MODEL C, FLAT
.STACK
.DATA
a dw 10
b dw 20
d dw 30
.CODE
EXTRN funcName : proc
FUN PROC
push d
push b
push a
call funcName
ret
FUN ENDP
END