ID Number: Q76504
5.00 5.10 6.00 | 5.00 5.10 6.00
MS-DOS | OS/2
Summary:
The programs below demonstrate how a variable declared in a Microsoft
Macro Assembler (MASM) subprogram will keep its value between calls
from a C main program.
More Information:
Link the two programs below with the following command:
link cmain masmsub,,, /nod llibce;
Sample Code #1
--------------
// Filename: CMAIN.C
// Compile options needed: /c /AL
#include <stdio.h>
extern int far MasmSub () ;
main ()
{
int i ;
for (i = 1; i < 11; ++i) // Call the MASM subprogram 10
{ // times, and its return value
printf ("%d\n", MasmSub()) ; // will be incremented by 1 each
} // time.
}
Sample Code #2
--------------
; Filename: MASMSUB.ASM
; Assemble options needed: /mx /ml
.MODEL LARGE, C
.DATA
var DW 0 ; This variable will keeps its value between calls.
.CODE
PUBLIC MasmSub
MasmSub PROC FAR
INC var
MOV AX, var ; Since the function returns an int, C will get the
RET ; return value from AX.
MasmSub ENDP
END
Additional reference words: 5.00 5.10 6.00