home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / tplib21.zip / INSTALL.EXE / SUTRIM.ASM < prev    next >
Assembly Source File  |  1993-06-24  |  4KB  |  86 lines

  1. ;               TURBO PASCAL LIBRARY 2.1
  2. ;               Trim blanks module
  3.  
  4.                 TITLE   UNIT STRINGS: Trim blanks module
  5.                 PAGE    66,132
  6.                 %BIN    12
  7.  
  8. CODE            SEGMENT WORD
  9.                 ASSUME  CS:CODE
  10.                 LOCALS
  11.                 PUBLIC  TRIML, TRIMR
  12.  
  13.  
  14. ;               FUNCTION TrimL (s: STRING): STRING
  15. ;               Trim leading blanks from string
  16.  
  17. TRIML           PROC    FAR
  18.                 PUSH    BP
  19.                 MOV     BP,SP                   ; Set up stack frame pointer
  20.                 PUSH    DS
  21.                 LDS     SI,DWORD PTR [BP+6]     ; Point DS:SI to input string
  22.                 LES     DI,DWORD PTR [BP+10]    ; Point ES:DI to output string
  23.                 CLD
  24.                 MOV     BX,DI                   ; ES:BX points to output length byte
  25.                 LODSB                           ; Get input-string length in CX
  26.                 MOV     CL,AL
  27.                 XOR     CH,CH
  28.                 INC     DI                      ; Skip output-length byte
  29.                 MOV     DL,CL                   ; Copy of input length in DL
  30.                 JCXZ    @@L4                    ; Skip if null-string input
  31. @@L1:           LODSB                           ; Get next character
  32.                 CMP     AL,32                   ; Check for blank
  33.                 JE      @@L2
  34.                 CMP     AL,9
  35.                 JNE     @@L3
  36. @@L2:           DEC     DL                      ; If blank, dec. output length
  37.                 LOOP    @@L1                    ; Go to next character
  38.                 JMP     SHORT @@L4
  39. @@L3:           STOSB                           ; If not blank, store in output
  40.                 DEC     CL
  41.                 REP MOVSB                       ; Transfer remainder of string
  42. @@L4:           MOV     ES:[BX],DL              ; Store output length byte
  43.                 POP     DS
  44.                 POP     BP
  45.                 RET     4
  46. TRIML           ENDP
  47.  
  48.                 PAGE
  49.  
  50.  
  51. ;               FUNCTION TrimR (s: STRING): STRING
  52. ;               Trim trailing blanks from string
  53.  
  54. TRIMR           PROC    FAR
  55.                 PUSH    BP
  56.                 MOV     BP,SP                   ; Set up stack frame pointer
  57.                 PUSH    DS
  58.                 LDS     SI,DWORD PTR [BP+6]     ; Point DS:SI to input string
  59.                 LES     DI,DWORD PTR [BP+10]    ; Point ES:DI to output string
  60.                 STD
  61.                 MOV     CL,[SI]                 ; Get input length in CX
  62.                 XOR     CH,CH
  63.                 JCXZ    @@L3                    ; Skip if null input string
  64.                 ADD     SI,CX                   ; Move SI to last character
  65. @@L1:           LODSB                           ; Get next character
  66.                 CMP     AL,32                   ; Check for blank
  67.                 JE      @@L2
  68.                 CMP     AL,9
  69.                 JNE     @@L4
  70. @@L2:           LOOP    @@L1                    ; If blank, do next character
  71. @@L3:           MOV     ES:[DI],CL              ; Store zero length byte
  72.                 JMP     SHORT @@L5
  73. @@L4:           MOV     ES:[DI],CL              ; Store output length byte
  74.                 INC     SI                      ; DS:SI to last char. required
  75.                 ADD     DI,CX                   ; ES:DI to equivalent position
  76.                 REP MOVSB                       ; Copy characters
  77. @@L5:           POP     DS
  78.                 POP     BP
  79.                 RET     4
  80. TRIMR           ENDP
  81.  
  82. CODE            ENDS
  83.  
  84.                 END
  85.  
  86.