Microsoft KB Archive/64107

= Sample Assembly Function Returning Double to Basic =

Article ID: 64107

Article Last Modified on 11/21/2006



This article was previously published under Q64107



SUMMARY
The two programs shown below demonstrate how an assembly language function can return a double-precision number to a Microsoft Basic program.

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, query in the Microsoft Knowledge Base using the following word:

BAS2MASM

Code Example
The following Basic program is DFUNC.BAS, which displays a double-precision number returned from an assembly language function: DECLARE FUNCTION QPrint# FOR i% = 1 to 2 PRINT QPrint# NEXT The following program is ADBL.ASM, which will return a double-precision number when called: ; The following handy .MODEL MEDIUM,Basic directive is found in MASM .MODEL MEDIUM, Basic .DATA doublenum dq 6765.89
 * 5.10 but not in earlier versions:

.CODE PUBLIC QPrint QPrint PROC mov bp, sp       push es        push si        push di

push ds         ; set es = ds        pop es

mov si, offset dgroup:doublenum mov di, [bp+6]  ; load value into address at bp+6 mov cx, 4 rep movsw       ; 4 words at 2 bytes = 8 bytes

mov ax, [bp+6]  ; load offset of temp value in ax and mov dx, ss      ;   ss into dx

pop di       pop si        pop es        pop bp

ret 2 QPrint ENDP END To demonstrate these programs from an .EXE program, compile and link as follows: BC DFUNC.BAS; MASM ADBL.ASM; LINK DFUNC ADBL; DFUNC.EXE produces the following output:   6765.89 6765.89

Additional query words: QuickBas BasicCom

Keywords: KB64107

-

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

© Microsoft Corporation. All rights reserved.