Assembler - Ilość wystąpień jednego ciągu znaków w drugim

0

Witam,
Mam takie zadanie:

Napisać program pobierający z linii zleceń dwa argumenty x i y tak, aby na ekranie terminala po jego uruchomieniu wypisana
została liczba wystąpień w łańcuchu x łańcucha y. Np. w przypadku gdy x = ”abcabab xxabc”, a y = ”ab”, to efektem działania programu
powinno być wyprowadzenie na ekran liczby 4.

Potrafię wczytać te ciągi z parametru, ale nie potrafię sprawdzić ile razy jeden występuje w drugim. Mam coś takiego:

.intel_syntax noprefix
.text
.globl main

main:

    mov eax, [esp+4]
    cmp eax, 3
    jge function

    mov eax, offset blad
    push eax
    call printf
    add esp, 4
    mov eax, 0
    ret

function:

    mov eax, [esp+8]
    mov ebx, [eax+4]
    mov ecx, 0
    call loop

loop:


.data
    blad:
        .asciz "Podaj dwa ciagi zakow w parametrach\n"

W main sprawdza czy podało się parametry jeżeli nie to wyświetla komunikat, potem przechodzi dalej. W loop powinien być kod sprawdzający to.

Z gory dzięki za pomoc.

0

No i czego od nas oczekujesz? o_O Musisz w pętli dla każdego elementu z tego pierwszego ciągu puścić pętlę która porówna cały drugi ciąg z pierwszym ciągiem od danego miejsca. Jak sie cały zgodzi to podbijasz licznik.

0

Teorie znam, ale w assemblerze ja potrafię tylko proste rzeczy robić, jeżeli ktoś by mi chociaż jakiś przykład pokazał to bym może w oparciu o niego coś zrobił, a tak to ja nie wiem nawet jak się za to zabrać.

2

To napisz to sobie w C, potem zrób gcc -S -O0 i przeanalizuj wynik ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.