Cześć. Mam program do napisania w assemblerze jednak jestem zupełnie zielony w tym temacie. Jakby ktoś mógł poratować odpowiedzią i ewentualnie wytłumaczyć co się tam dzieje. Ponoć zadanie nie jest, aż tak bardzo trudne.
Uzupełnić poniższy kod o treść procedury policz. Procedura ta ma pobierać ze stosu argument będący adresem łańcucha znaków i ma zwracać przez rejestr EAX liczbę znaków ’#’ w łańcuchu. Argumenty do procedury policz mają być przekazane przez stos, za usuwanie argumentów ze stosu ma odpowiadać wywołujący funkcję. Przykładowo, po uruchomieniu poniższego kodu na ekranie powinna zostać wypisana liczba 4.
.intel syntax no prefix
.text
.global main
main :
mov eax , offset messg
push eax
call policz
add esp , 4
// wypisanie wyniku
push eax
mov eax , offset printf arg1
push eax
call printf
add esp , 8
exit:
// kod powrotu z programu
xor eax , eax
ret
policz:
[ TUTAJ POWINNO BYC UMIESZCZONE ROZWIAZANIE ]
.data
messg :
.asciz ”Prz∗ykla#do###wy∗tekst”
printf arg1:
.asciz ”%i "