Witam,
dostałem następujące zadanie z Assemblera
"Użytkownik podaje jakiś ciąg znaków, następnie podaje znak. Program na wyjściu daje podciąg, który zaczyna się od 1 wystąpienia znaku w ciągu np. jak ktoś da "asdf" następnie znak "d" to na wyjściu będzie "df" ". Ogólnie mam problem gdyż nie umiem w assemblerze działać na stosie, nawet internet jakoś mi nie pomógł. Ogólnie mój pomysł był taki, żeby wpierw dać ciąg na stos, potem znowu do rejestru i znowu na stos, bo z tego co czytałem stos przyjmuje znaki od końca.
Bardzo proszę o pomoc/wskazówki etc.
0
0
Ja tu nie widzę specjalnie sensu zabawy ze stosem. Przecież zadanie jest proste jak budowa cepa
- Czytasz ciag znaków.
- Czytasz znak
- Robisz pętlę po ciągu znaków
- Jeśli aktualny znak jest taki sam jak ten wczytany to skaczesz do etykietki która wypisuje ci ciąg od tego znalezionego indeksu.
0
Jednak z wytycznych mam to, iż muszę wykorzystać stos...a po prostu w assemblerze nie umiem się nim posługiwać :/
1
A na pewno nie masz tego ciągu wypisywać od końca? ;]
No to jak musisz to możesz zrobić tak:
- Czytasz ciag znaków.
- Czytasz znak
- Robisz pętlę po ciągu znaków i wrzucasz je po kolei na stos. Nie ma tu wielkiej filozofii
mov ax, tablica[di]
push ax
- Robisz drugą pętlę w której sciągasz znaki ze stosu
pop ax
I jeśli wczytany ze stosu znak jest taki sam jak ten podany na wejściu to skaczesz do etykietki która zdejmuje to co pozostało na stosie i wypisuje to na ekran.
0
Niestety nie od końca :/ Dlatego nie wiem co zrobić