Microsoft KB Archive/49401

= Example of Passing Array of Doubles from Basic to MASM =

Article ID: 49401

Article Last Modified on 10/20/2003

-

APPLIES TO


 * Microsoft BASIC Professional Development System 7.1
 * Microsoft BASIC Professional Development System 7.0

-



This article was previously published under Q49401



SUMMARY
The two programs shown below demonstrate how a Microsoft Basic program can pass an array of double-precision variables to assembly language.

This information about interlanguage calling applies to QuickBasic versions 4.00, 4.00b, and 4.50 for MS-DOS, to Microsoft Basic Compiler versions 6.00 and 6.00b for MS-DOS and MS OS/2, and to Microsoft Basic Professional Development System (PDS) versions 7.00 and 7.10 for MS-DOS and MS OS/2.



MORE INFORMATION
For more information about passing other types of parameters between Basic and MASM, search in the Microsoft Knowledge Base using the following word:

BAS2MASM

Code Example
The following Basic program is BDBL.BAS, which passes an uninitialized array of double precision numbers to an assembly routine that initializes the array: DECLARE SUB FillDbl(BYVAL ASeg AS INTEGER, BYVAL AOff AS INTEGER)

DIM DblArray(1 TO 5) AS DOUBLE CALL FillDbl(VARSEG(DblArray(1)), VARPTR(DblArray(1))) FOR i% = 1 TO 5 PRINT DblArray(i%) NEXT END The following program is ADBL.ASM, which initializes an array of double-precision numbers passed from Basic: ; The following handy .MODEL MEDIUM,Basic directive is found in MASM .MODEL MEDIUM, Basic .DATA Dbl1 DQ 123.45          ; initialize data table Dbl2 DQ 456.78 Dbl3 DQ 98765.432 Dbl4 DQ 12345.678 Dbl5 DQ 777.888 .CODE PUBLIC FillDbl FillDbl PROC push bp       mov bp, sp               ; set stack frame push es                 ; Preserve (push) es, di, si        push di        push si        mov es, [bp+8]           ; segment of array mov di, [bp+6]          ; offset of array mov si, OFFSET Dbl1     ; get offset of data table mov cx, 40              ; length of data in table rep movsb               ; copy data table to array pop si                  ; Restore (pop) si, di, es        pop di        pop es        pop bp        ret 4 FillDbl ENDP END To demonstrate these programs from an .EXE program, compile and link as follows:
 * 5.10 but not in earlier versions:

BC BDBL.BAS;

MASM ADBL.ASM;

LINK BDBL ATWODBL;

BDBL.EXE produces the following output:

123.45

456.78

98765.432

12345.678

777.888

Additional query words: QuickBas BasicCom

Keywords: KB49401

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.