home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
turbo55
/
tp55
/
tasm
/
idelchar.asm
< prev
next >
Wrap
Assembly Source File
|
1989-05-01
|
2KB
|
75 lines
; FILENAME: IDELCHAR.ASM
;
; Copyright (c) 1988, 1989 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