home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / TASMSWAN.ZIP / PASDEMO.ASM < prev    next >
Assembly Source File  |  1989-07-17  |  2KB  |  75 lines

  1. %TITLE "Test Turbo Pascal external *.OBJ module"
  2.  
  3.     IDEAL
  4. ;-------- Data segment combines with Turbo Pascal's global data segment
  5. SEGMENT    DATA     word     public
  6.  
  7. ;-------- Import typed constants and variables from Turbo Pascal
  8.     EXTRN    value : WORD, cr : BYTE, lf : BYTE
  9.  
  10. asmCount    dw    ?
  11. ENDS    DATA
  12.  
  13. ;-------- Code segment combines with Turbo Pascal's main program
  14. SEGMENT    CODE    byte    public
  15.  
  16. ASSUME    cs:CODE, ds:DATA
  17.  
  18. ;--------- Export PUBLIC procedures to Turbo Pascal
  19.     PUBLIC    AsmProc, CountPtr
  20.  
  21. ;--------- Import procedures and functions from Turbo Pascal
  22.     EXTRN    PasProc : NEAR, PasFunc : NEAR
  23.  
  24. %NEWPAGE
  25. ;------------------------------------------------------------------------
  26. ;  PROCEDURE asmProc
  27. ;------------------------------------------------------------------------
  28. ;------------ PreInitialized variables must go in Code segment
  29. testString    db    'asmProc: Should be a "hatch mark" --> ', '$'
  30.  
  31. PROC    asmProc        NEAR
  32. ;------- call a Turbo Pascal procedure
  33.     call    PasProc        ; pasProc is in PASDEMO.pas
  34.  
  35. ;------- use local data stored in the code segment
  36.     push    ds
  37.     push    cs
  38.     pop    ds
  39. ASSUME    ds : CODE
  40.     mov    dx,offset testString
  41.     mov    ah,09h
  42.     int    21h
  43.     pop    ds
  44. ASSUME    ds : DATA
  45. ;-------- get typed-constants from Turbo Pascal and use local static variables
  46.     mov    ax,[value]
  47.     mov    [asmCount],ax
  48. ;-------- call a Turbo Pascal function for a character value
  49.     call    PasFunc
  50.     mov    dl,al
  51.     mov    ah,2
  52.     int    21h
  53. ;-------- get variables from Pascal
  54.     mov    ah,2
  55.     mov    dl,[cr]
  56.     int    21h
  57.     mov    dl,[lf]
  58.     int    21h
  59.     ret
  60. ENDP    AsmProc
  61.  
  62. %NEWPAGE
  63. ;------------------------------------------------------------------------
  64. ;  FUNCTION CountPtr : intPtr
  65. ;------------------------------------------------------------------------
  66. PROC    CountPtr    NEAR
  67.     mov    dx, SEG asmCount
  68.     mov    ax, OFFSET asmCount
  69.     ret
  70. ENDP    CountPtr
  71.  
  72. ENDS    CODE
  73.  
  74.     END
  75.