ex.hlp (Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
StringAssign and StringRelease Routines Example
                        Example                Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
' This example uses the StringAssign and StringRelease routines to get a
' string from an assembly-language program.
 
' Note: To run this program, you must compile the following code and link it
' with the assembled MASM program (shown below in remarks) and the
' appropriate run-time library (VBDCL10.LIB).
 
' To try this example:
' 1. Choose New Project from the File menu
' 2. Copy the code example below to the code window
' 3. Press F5 to run the example
 
 DEFINT A-Z
 
' Declare external MASM procedures.
 DECLARE FUNCTION MakeString$
 DECLARE SUB ReleaseIt
 CLS                                 ' Clear the screen
 
' Get string from MASM and print it.
 PRINT MakeString
 
' Have MASM release the variable-length string it created.
 CALL ReleaseIt
 
' ; *********************** MakeString ********************************
'
' ;This MASM program creates a fixed-length string and then assigns
' ;it to a Basic variable-length string. It then releases the string
' ;after Basic has used it.
'
'                 .model  medium, basic   ;Use same model as BASIC
'
' ;Declare routines to be used in Basic library.
'                 extrn   StringAssign: far
'                 extrn   StringRelease: far
'
'                 .data
' ;Create MASM string and a place for Basic to create a variable-
' ;length string descriptor.
' String2         db      "This is a string created by MASM."
' Descriptor      dd      0
'
'                 .code
'
' MakeString      proc                    ;Push arguments:
'                 push        ds          ;MASM string segment.
'                 lea     ax, String2     ;MASM string offset.
'                 push        ax
'                 mov     ax, 33          ;MASM string length.
'                 push        ax
'                 push        ds          ;Basic descriptor segment.
'                 lea     ax, Descriptor
'                 push        ax          ;BASIC descriptor offset
'                 xor     ax, ax          ;variable-length indicator.
'                 push        ax
'                 call        StringAssign   ;Assign the string.
'
'                 lea     ax, descriptor  ;Return with descriptor
'                 ret                     ;address in AX.
' MakeString      endp
'
' ReleaseIt           proc                ;Routine to release
'                 lea     ax, Descriptor  ;the string.
'                 push        ax
'                 call        StringRelease
'                 ret
' ReleaseIt           endp
'                 end