Article: Q62626
Product(s): Microsoft Macro Assembler
Version(s): 5.1,5.1a,6.0,6.0a,6.0b
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), versions 5.1, 5.1a, 6.0, 6.0a, 6.0b
-------------------------------------------------------------------------------
SUMMARY
=======
The code sample below illustrates how to pass a structure from a C module to an
assembly module. This code makes it possible to access the structure fields
within the assembly module using the "." field operator.
Within the assembly module a structure is declared. This structure is used as a
template by the assembler to resolve accessing the fields of the structure. The
structure may be given any label name.
MORE INFORMATION
================
The following is an example. Note that the syntax for accessing structure
members will be different with MASM 6.0 and later.
Sample Code:
------------
/* Compile options needed: none
*/
#include <stdio.h>
struct node
{
int IntVar;
char Array[5];
};
struct node var;
extern void IncStruc( struct node * );
void main()
{
var.Array[0] = 'H';
var.Array[2] = 'I';
var.IntVar = 0x0b12;
IncStruc( &var );
/* Incremented values on returning to C */
printf( "var.IntVar is now %x\n", var.IntVar );
printf( "var.Array[0] is now %c\n", var.Array[0] );
printf( "var.Array[2] is now %c\n", var.Array[2] );
}
----------------------------------------------------------------------
; Assemble options needed: none
; OPTION OLDSTRUCTS ; for MASM 5.1 behavior from MASM 6.0
.model small, c
delta STRUC
IntVar DW ?
Array DB 5 dup (?)
delta ENDS
.code
IncStruc PROC
PUSH BP
MOV BP, SP
MOV bx, [bp+4]
INC [bx].IntVar
INC [bx].Array
INC [bx+2].Array
POP bp
RET
IncStruc ENDP
END
The output is as follows:
var.IntVar is now b13
var.Array[0] is now I
var.Array[2] is now J
Additional query words: kbinf 5.10 5.10a 6.00 6.00a 6.00b
======================================================================
Keywords :
Technology : kbMASMsearch kbAudDeveloper kbMASM510 kbMASM600 kbMASM600a kbMASM510a kbMASM600b
Version : :5.1,5.1a,6.0,6.0a,6.0b
=============================================================================