home *** CD-ROM | disk | FTP | other *** search
- _GETTING NUMERIC COPROCESSORS UP TO SPEED_
- by John H. Letcher
-
-
- Example 1:
-
- (a)
-
- SUBROUTINE ABC(X,Y,Z)
- Z=X+Y
- RETURN
- END
-
- (b)
-
- ARGLOC DW OFFSET X ; argument 1
- DW SEG X
- DW OFFSET Y ; argument 2
- DW SEG Y
- DW OFFSET Z ; argument 3
- DW SEG Z
-
- (c)
- MOV AX,SEG ARGLOC
- MOV ES,AX
- MOV BX,OFFSET ARGLOC
- CALL ABC
-
-
- Example 2:
-
- TITLE ABC
- CODE SEGMENT 'CODE'
- ; SUBROUTINE ABC(X,Y,Z)
- ABC PROC FAR
- PUBLIC ABC
- LDS SI,ES:[BX] ; NOW DS:SI POINTS TO X
- FLD DWORD PTR [SI] ; LOADS THE VALUE OF X
- LDS SI,ES:4[BX] ; NOW DS:SI POINTS TO Y
- FADD DWORD PTR [SI] ; ADDS Y TO X
- LDS SI,ES:8[BX] ; NOW DS:SI POINTS TO Z
- FSTP DWORD PTR [SI] ; STORES VALUE INTO Z
- RET
- ABC ENDP
- CODE ENDS
- END
-
-
- Example 3:
-
- INCLUDE FCODE.INC
- TITLE ABC
- CODE SEGMENT 'CODE'
- ; SUBROUTINE ABC(X,Y,Z)
- .386
- ABC PROC FAR
- mov eax,0d000h ; EMC
- mov fs,eax ; EMC
- PUBLIC ABC
- LDS SI,ES:[BX] ; NOW DS:SI POINTS TO X
- ; FLD DWORD PTR [SI] ; LOADS THE VALUE OF X
- mov eax,DWORD PTR [SI] ; EMC
- mov DWORD PTR FS:mflds,eax ; EMC
- LDS SI,ES:4[BX] ; NOW DS:SI POINTS TO Y
- ; FADD DWORD PTR [SI] ; ADDS Y TO X
- mov eax,DWORD PTR [SI] ; EMC
- mov DWORD PTR FS:mfadds,eax ; EMC
- LDS SI,ES:8[BX] ; NOW DS:SI POINTS TO Z
- ; FSTP DWORD PTR [SI] ; STORES VALUE INTO Z
- mov eax,DWORD PTR FS:mfstps ; EMC
- mov DWORD PTR [SI],eax ; EMC
- RET
- ABC ENDP
- CODE ENDS
- END
-
-