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.
StringAddress and StringLength Routines Example
                        Example                Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
' This example uses the StringAddress routine to pass a Basic string to
' an assembly-language program. The StringLength routine is used to
' determine the length of the string.
 
' 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
 
 CLS                                 ' Clear the screen
' Create a variable-length string.
 Message1$ = "This string was sent to MASM for printing."
 CALL PrintMessage1(Message1$)       ' Pass it to MASM to be printed
 
' ; *************************PrintMessage1************************
' ;   This MASM procedure prints a string passed to it by Basic.
'
'             .model      medium, basic       ;Use same model as Basic
' ;Define external (BASIC library) procedures
'             extrn   StringAddress: far
'             extrn   StringLength: far
'
'             .code
' ;Define procedure with one word argument
' PrintMessage1  proc     uses ds,  descriptor
'
'             mov     ax, descriptor          ;Find length of string.
'             push        ax
'             call        StringLength
'             push        ax                  ;Save length on stack.
'
'             mov         ax, descriptor      ;Go find out the
'             push    ax                      ;address of the string
'             CALL    StringAddress           ;data.
'
'             mov         ds, dx              ;Address of string.l.
'             mov         dx, ax
'             mov     bx, 01                  ;Handle of printer
'             pop     cx                      ;Length of string
'             mov     ah, 40h                 ;Have MS-DOS print it
'             int         21h
'             ret
' PrintMessage1   endp
'
'             end