Category : Assembly Language Source Code
Archive   : STDLIB_A.ZIP
Filename : STRINSL.ASM

 
Output of file : STRINSL.ASM contained in archive : STDLIB_A.ZIP
stdlib segment para public 'slcode'
assume cs:stdlib
;
;
; strinsl- Inserts one string within another.
;
; inputs:
;
; ES:DI- Points at destination string, the one into which the source
; string will be appended.
;
; CS:RET- Points at the string to insert.
;
; CX- Index into source string (ES:DI) to begin insertion.
;
;
; Note: The destination string's (ES:DI) buffer must be sufficiently large
; to hold the result of the concatentation of the two strings.
;
public sl_strinsl
;
rtnadrs equ 2[bp]
srcseg equ -2[bp]
destseg equ -4[bp]
insindx equ -6[bp]
source equ -8[bp]
dest equ -10[bp]
;
sl_strinsl proc far
push bp
mov bp, sp
push dx ;Dummy spot
push es
push cx
push si ;Dummy spot
push di
pushf
push ax
push bx
push ds
push dx
push si
;
mov si, rtnadrs
mov source, si
mov dx, rtnadrs+2
mov srcseg, dx
cld
;
; Compute the length of the string to insert.
;
xchg si, di
mov es, dx ;(srcseg)
mov al, 0
mov cx, 0ffffh
repne scasb
mov rtnadrs, di
neg cx
dec cx
dec cx
mov bx, cx ;Save for later.
;
; Find the length of the dest string.
;
xchg si, di
mov es, destseg
mov cx, 0ffffh
repne scasb
;
; Compute the address of the insertion point:
;
mov dx, dest
add dx, insindx
cmp dx, di ;See if beyond end of string.
jb InsOkay
lea dx, -1[di]
InsOkay:
;
; Make room for the insertion.
;
mov ds, destseg
mov si, di
add si, bx
xchg si, di
mov cx, bx
std
rep movsb
;
; Now perform the insertion.
;
cld
mov si, source
mov di, dx
mov cx, bx
mov ds, srcseg
rep movsb
;
;
pop si
pop dx
pop ds
pop bx
pop ax
popf
pop di
pop cx ;Dummy
pop cx
pop es
pop bp ;Dummy
pop bp
ret
sl_strinsl endp
;
;
stdlib ends
end


  3 Responses to “Category : Assembly Language Source Code
Archive   : STDLIB_A.ZIP
Filename : STRINSL.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/