MASM Version 5.00 Mixed-Language Example with BASIC

ID Number: Q40528

5.00

MS-DOS

Summary:

Below are the demonstration files BA.ASM and BAMAIN.BAS from the MASM

Version 5.00 Disk 1 mixed directory.

More Information:

The following is BA.ASM:

.MODEL medium

.CODE

; BASIC function for QuickBASIC, Version 4 and future versions

; of Microsoft and IBM BASIC Compilers

PUBLIC Power2

Power2 PROC

push bp ; Entry sequence - save old BP

mov bp,sp ; Set stack framepointer

mov bx,[bp+8] ; Load Arg1 into

mov ax,[bx] ; AX

mov bx,[bp+6] ; Load Arg2 into

mov cx,[bx] ; CX

shl ax,cl ; AX = AX * (2 to power of CX)

; Leave return value in AX

pop bp ; Restore old framepointer

ret 4 ; Exit, and restore 4 bytes of args

Power2 ENDP

; BASIC subprogram for QuickBASIC, Versions 1, 2, and 3;

; for the Microsoft BASIC Compiler through Version 5.36

; for the IBM BASIC Compiler through Version 2.02

PUBLIC Power2S

Power2S PROC

push bp ; Entry sequence - save old BP

mov bp,sp ; Set stack framepointer

mov bx,[bp+10] ; Load Arg1 into

mov ax,[bx] ; AX

mov bx,[bp+8] ; Load Arg2 into

mov cx,[bx] ; CX

shl ax,cl ; AX = AX * (2 to power of CX)

mov bx,[bp+6] ; Store result in

mov [bx],ax ; Arg3

pop bp ; Restore old framepointer

ret 4 ; Exit, and restore 4 bytes of args

Power2S ENDP

END

The following is BAMAIN.BAS:

DEFINT A-Z

' Function call for QuickBASIC, Version 4,

' and for future versions of Microsoft and IBM BASIC Compilers

' Comment out for older versions

DECLARE FUNCTION Power2(A AS INTEGER, B AS INTEGER)

PRINT "3 times 2 to the power of 5 is ";

PRINT Power2(3,5)

' Subprogram equivalent to function for QuickBASIC, Versions 1, 2, and 3;

' for the Microsoft BASIC Compiler through Version 5.36

' for the IBM BASIC Compiler through Version 2.02

CALL Power2S(3, 5, C)

PRINT "3 times 2 to the power of 5 is "; C

END