home *** CD-ROM | disk | FTP | other *** search
-
- ; FILENAME: IDELCHAR.ASM
- ;
- ; Copyright (c) 1988, 1992 by Borland International, Inc.
- ;
- ; DESCRIPTION: This module implements a routine that deletes n characters
- ; from a string starting at a specified index.
- ;
- ; ASSEMBLY INSTRUCTIONS: To assemble this module use the following
- ; TASM command line.
- ;
- ; TASM /dMDL=memorymodel idelchar
- ;
- ; 'memorymodel' in the above command line may be replaced by TINY, SMALL,
- ; MEDIUM, COMPACT, LARGE or HUGE.
-
- %tabsize 4
-
- ifndef MDL
- display "Error: This module requires that you provide a memory model"
- display " definition on the command line. I.E. /dMDL=SMALL."
- err ; Force a fatal error
- else
-
- ideal ; Use TASM's Ideal mode
- % model MDL ; Define the memory model
-
- codeseg
-
- global DeleteChar:proc
-
- proc DeleteChar
-
- ; This routine deletes a specified number of characters from a pascal
- ; style string starting at position n. Note that the routine doesn't
- ; check to make sure enough characters are left before deleting them.
- ;
- ; Input
- ; StrAddress - Far pointer to the string
- ; cx - Number of characters to delete
- ; ax - Starting position
- ; Output
- ; none
- ; Calling conventions
- ; Pascal
- ; Registers modified
- ; ax, cx, di, si, es, flags
-
- arg StrAddress:dword=PARM_SIZE
-
- push bp
- mov bp, sp
- push ds
- cld
- DeleteNextChar:
- push cx
- les di, [StrAddress] ; Get strings address
- dec [byte es:di] ; Decrement the length byte
- mov cl, [byte es:di]
- lds si, [StrAddress]
- add di, ax ; Point to the appropriate
- add si, ax ; memory locations for the move
- inc si
- rep movsb ; Move the bytes
- pop cx
- loop DeleteNextChar
- pop ds
- pop bp
- ret PARM_SIZE
- endp DeleteChar
-
- endif ; ifdef MDL
-
- end
-