home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l040 / 13.ddi / RTLDOS.ZIP / ENVS.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-10-28  |  1.1 KB  |  87 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library Version 5.5    *
  5. ; *    Environment String Routines            *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,89 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    ENVS
  12.  
  13.     LOCALS    @@
  14.  
  15. DATA    SEGMENT    WORD PUBLIC
  16.  
  17.     EXTRN    PrefixSeg:WORD
  18.  
  19. DATA    ENDS
  20.  
  21. CODE    SEGMENT    BYTE PUBLIC
  22.  
  23.     ASSUME    CS:CODE,DS:DATA
  24.  
  25.     PUBLIC    EnvCount
  26.  
  27. EnvCount    PROC    FAR
  28.  
  29.     XOR    DX,DX
  30.     CALL    EnvStrCnt
  31.     XCHG    AX,DX
  32.     NEG    AX
  33.     RET
  34.  
  35. EnvCount    ENDP
  36.  
  37.     PUBLIC    EnvStr
  38.  
  39. EnvStr        PROC    FAR
  40.  
  41. EnvStrP        EQU    (DWORD PTR [BP+8])
  42. EnvIndex    EQU    (WORD PTR [BP+6])
  43.  
  44.     PUSH    BP
  45.     MOV    BP,SP
  46.     PUSH    DS
  47.     MOV    DX,EnvIndex
  48.     CALL    EnvStrCnt
  49.     MOV    SI,DI
  50.     PUSH    ES
  51.     POP    DS
  52.     XOR    AL,AL
  53.     MOV    CX,256
  54.     REPNE    SCASB
  55.     NOT    CL
  56.     LES    DI,EnvStrP
  57.     MOV    AL,CL
  58.     STOSB
  59.     REP    MOVSB
  60.     POP    DS
  61.     POP    BP
  62.     RET    2
  63.  
  64. EnvStr        ENDP
  65.  
  66. EnvStrCnt    PROC    NEAR
  67.  
  68.     MOV    ES,PrefixSeg
  69.     MOV    ES,ES:[2CH]
  70.     XOR    DI,DI
  71.     CLD
  72. @@1:    XOR    AL,AL
  73.     CMP    AL,ES:[DI]
  74.     JE    @@2
  75.     DEC    DX
  76.     JE    @@2
  77.     MOV    CX,-1
  78.     REPNE    SCASB
  79.     JMP    @@1
  80. @@2:    RET
  81.  
  82. EnvStrCnt    ENDP
  83.  
  84. CODE    ENDS
  85.  
  86.     END
  87.