home *** CD-ROM | disk | FTP | other *** search
- .MODEL TPASCAL
- .CODE
-
- StripChar PROC FAR
- PUBLIC StripChar
- ARG InpSt : DWORD, char : BYTE : 2 RETURNS OutSt : DWORD
- LOCAL counter : WORD
-
- push ds
- lds si, InpSt ; Load pointer to InpSt into DS:SI
- les di, OutSt ; Load pointer to OutSt into ES:DI
- mov Counter,0 ; Zero out Counter
- lodsb ; Load length byte into AL
- cmp al, 0 ; If Length ( InpSt ) = 0
- je Done ; then Quit
- mov cl, al ; Move length of InpSt into CX
- xor ch, ch
- stosb ; Move length of InpSt into OutSt
-
- Looper:
- lodsb ; Load a new Char from InpSt into AL
- cmp al, char ; Is this a char to strip?
- je BottomOfLoop ; Yes: Don't add to function result
- stosb ; No: Add to OutSt and
- inc Counter ; Increment Counter
-
- BottomOfLoop:
- loop Looper ; If not at end of InpSt, loop again
-
- Done:
- mov ax, Counter ; Move length of OutSt into AL
- les di, OutSt ; Reload OutSt into ES:DI
- stosb ; Save length of OutSt in OutSt
-
- pop ds ; Restore DS
- ret
- StripChar ENDP
-
- ENDS
- END
-