| 
   Slide 13.4: INVOKE directive Slide 13.6: PROC directive Home  | 
  
    
   | 
 
ADDR Operator and PROC Directive
 
ADDR Operator
ADDR operator can be used to pass a pointer when calling a procedure using INVOKE.
Passing an address as a procedure argument is called passing by reference.
For example, the Code I is the same as the Code II assuming STDCALL is used:
| Code I | Code II | 
|---|---|
   
    .data Array DWORD 20 DUP(?) .code ... INVOKE Swap, ADDR Array, ADDR [Array+4]  | 
  
   
    .data Array DWORD 20 DUP(?) .code ... push OFFSET Array+4 push OFFSET Array call Swap  | 
 
PROC Directive
PROC directive permits you to declare a procedure name with a list of named parameters, as the following simplified syntax shows:
   label  PROC [attributes] [USES reglist], parameter_list
Attributes refers to any of the following:
   [distance] [langtype] [visibility] [prologue]
| Attribute | Description | 
|---|---|
distance | 
  NEAR or FAR.
   Indicates the type of RET instruction generated by the assembler. | 
 
langtype | 
  
Specifies the calling convention such as C, PASCAL, or STDCALL.
   Overrides the language specified in the .MODEL directive. | 
 
visibility | 
  Indicates the procedure's visibility to other modules.
   Choices are PRIVATE, PUBLIC (default), and EXPORT. | 
 
prologue | 
  Specifies arguments affecting generation of prologue and epilogue code. |