;kód szegmens kod segment para public 'code' assume cs:kod,ds:adat,ss:verem,es:nothing start: mov ax,adat ;ds betoltese mov ds,ax ;ds beallitasa ;foprogram kezdodik mov ax, offset str1 push ax mov ax, offset str2 push ax call strstr add sp, 4 mov ah,4ch ;kilepes mov al,00h ;visszateresi kod int 21h ;dos megszakitás ;strstr eljárás: Stringet keres egy másik stringben. ;Paraméterek: Két paramétere van, melyeket a veremben keres: s1 és s2. ;s1 kerul először a verembe (tehát ő van mélyebben), s2 a másodikként ;átadott paraméter , tehát ő van magasabban. ;Működés: s2 első előfordulását keresi meg s1-ben. ;Visszatérési érték: AX-be helyezi az első előfordulás offsetjét ha ;megtalálható s2 s1-ben. Egyébként AX s1-et záro nulla karakterre mutat. strstr proc push bp ;bp mentése mov bp, sp ;bp = si push si di mov di, [bp+4];s2 offsetje mov si, [bp+6];s1 kov:cmp byte ptr [si], 0 je strstrvege call startswith cmp ax, 1 je strstrvege inc si jmp kov strstrvege: mov ax, si pop di si pop bp ret strstr endp ;ellenorzi, hogy az si által mutatott string eleje megegyezik-e a di által ;mutatott stringel. ;Visszatérési érték: ax = 1 ha megegyezik, ax = 0 ha nem. startswith proc push bx cx xor bx, bx ;index mov ax, 0 sw: mov cl, [di+bx]; cmp cl, 0 ;ha di vége je swvege1 ;akkor készen vagyunk cmp cl, [si+bx];hasonlítsuk ossze a ket betut jne swvege2 ;ha különböznek akkor szintén kilép inc bx ;indexet noveljük jmp sw ;kov ketu swvege1: mov ax, 1 swvege2: pop cx bx ret startswith endp kod ends ;adat szegmens adat segment para public 'data' str1 db "Haho!", 0 str2 db "ah", 0 adat ends ;verem szegmens verem segment para stack dw 256 dup (0) ;helyfoglalás verem ends end start