Static Variables Declared in MASM Routines Called from CLast reviewed: January 23, 1995Article ID: Q76504 |
The information in this article applies to:
SUMMARYThe 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 INFORMATIONLink 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: kbinf 5.00 5.10 6.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |