Category : Assembly Language Source Code
Archive   : RHSTDLIB.ZIP
Filename : STRSTR.ASM

 
Output of file : STRSTR.ASM contained in archive : RHSTDLIB.ZIP
stdlib segment para public 'slcode'
assume cs:stdlib
;
;
; strstr- Returns the position of a substring in another string.
;
; inputs:
;
; es:di- address of string to search through.
; dx:si- address of substring to search for.
;
;
; returns:
;
; cx- position of character in string (if present).
; carry=0 if character found.
; carry=1 if character is not present in string.
;
public sl_strstr
;
sl_strstr proc far
push ds
push es
pushf
push si
push di
push ax
push bx
push dx
cld
mov ax, es
mov es, dx
mov ds, ax
xchg si, di
;
mov bx, di ;Save ptr to substring.
;
; Compute the length of the substring:
;
mov cx, 0ffffh
mov al, 0
repne scasb
neg cx
dec cx
dec cx
mov dx, cx ;Save length of smaller string.
;
mov ax, si ;Save ptr to string.
StrLp: mov cx, dx
repe cmpsb ;Compare the strings
jz StrsAreEql ;Jump if substring exists.
inc ax ;Bump pointer into string.
mov si, ax ;Restore pointers.
mov di, bx
cmp byte ptr [si], 0 ;Done yet?
jne StrLp
;
; Bad news down here, the substring isn't present in the source string.
;
xor cx, cx
pop dx
pop bx
pop ax
pop di
pop si
popf
pop es
pop ds
stc
ret
;
StrsAreEql:
mov cx, ax ;Save ptr to string
pop dx
pop bx
pop ax
pop di
sub cx, di ;Compute index to substring.
pop si
popf
clc
pop es
pop ds
ret
sl_strstr endp
;
;
stdlib ends
end


  3 Responses to “Category : Assembly Language Source Code
Archive   : RHSTDLIB.ZIP
Filename : STRSTR.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/