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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library Version 5.5    *
  5. ; *    File Name Split Routine                *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,89 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    SPLT
  12.  
  13.     LOCALS    @@
  14.  
  15. CODE    SEGMENT    BYTE PUBLIC
  16.  
  17.     ASSUME    CS:CODE
  18.  
  19.     PUBLIC    FSplit
  20.  
  21. FSplit        PROC    FAR
  22.  
  23. PathP        EQU    (DWORD PTR [BP+18])
  24. DirP        EQU    (DWORD PTR [BP+14])
  25. NameP        EQU    (DWORD PTR [BP+10])
  26. ExtP        EQU    (DWORD PTR [BP+6])
  27.  
  28.     PUSH    BP
  29.     MOV    BP,SP
  30.     PUSH    DS
  31.     CLD
  32.     LDS    SI,PathP
  33.     LODSB
  34.     MOV    DL,AL
  35.     XOR    DH,DH
  36.     MOV    BX,DX
  37.     OR    BX,BX
  38.     JE    @@2
  39. @@1:    CMP    BYTE PTR [SI+BX-1],'\'
  40.     JE    @@2
  41.     CMP    BYTE PTR [SI+BX-1],':'
  42.     JE    @@2
  43.     DEC    BX
  44.     JNE    @@1
  45. @@2:    MOV    AX,67
  46.     LES    DI,DirP
  47.     CALL    CopyString
  48.     XOR    BX,BX
  49.     JMP    SHORT @@4
  50. @@3:    CMP    BYTE PTR [SI+BX],'.'
  51.     JE    @@5
  52.     INC    BX
  53. @@4:    CMP    BX,DX
  54.     JNE    @@3
  55. @@5:    MOV    AX,8
  56.     LES    DI,NameP
  57.     CALL    CopyString
  58.     MOV    BX,DX
  59.     MOV    AX,4
  60.     LES    DI,ExtP
  61.     CALL    CopyString
  62.     POP    DS
  63.     POP    BP
  64.     RET    16
  65.  
  66. CopyString    PROC    NEAR
  67.  
  68.     SUB    DX,BX
  69.     CMP    AX,BX
  70.     JB    @@1
  71.     MOV    AX,BX
  72. @@1:    STOSB
  73.     MOV    CX,AX
  74.     ADD    BX,SI
  75.     REP    MOVSB
  76.     MOV    SI,BX
  77.     RET
  78.  
  79. CopyString    ENDP
  80.  
  81. FSplit        ENDP
  82.  
  83. CODE    ENDS
  84.  
  85.     END
  86.