bas7ex.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 Programming Example
                       Example                 Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
'This example uses the StringAssign and StringRelease routines to get
'a string from an assembly-language program.
 
'Note: To use this program, you must compile the following code and link
'it with the assembled MASM program (shown below in remarks) and the
'appropriate runtime library (BCL71ENR.LIB).
 
DEFINT A-Z
'Declare external MASM procedures.
DECLARE FUNCTION MakeString$
DECLARE SUB ReleaseIt
 
'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 in BASIC library to be used.
'                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