[Asembler] Odczyt danych ze stosu
Ostatnio zmodyfikowano 2013-02-09 18:46
RazzorFlame Temat założony przez niniejszego użytkownika |
[Asembler] Odczyt danych ze stosu » 2013-02-06 19:04:17 Otóż troche sobie słucham kursu Gynvaela o asemblerze (na YT). I chciałem sobie napisać procedure która wyświetla ciąg znaków. Jako że ten Gynvael napisał sobie programik który *coś tam* robi tzn. ma już jakieś wbudowane funkcje z C tzn putchar, getchar, printf, scanf, i exit to uniemożliwia wgląd w ten kod. I chciałbym się odwoływać do jakiejś zmiennej na stosie, tzn robie to tak: org 100h
start:
mov ebp, dane push ebp call _wyswietlDane add esp, 4 xor ah, ah int 16h mov ax, 4Ch int 21h _wyswietlDane: mov ah, 9 mov dx, [esp] int 21h ret dane db "Siemacie", 10, 0
Wyświetla mi śmieci. Przecież przed wywołaniem procedury _wyświetlDane, dodaje na stos zawartość rejestru ebp a później zdejmuje. O co w tym biega? |
|
pekfos |
» 2013-02-06 20:25:07 Call wrzuca na stos adres powrotu. |
|
RazzorFlame Temat założony przez niniejszego użytkownika |
» 2013-02-06 20:38:25 No to to wiem. Hmm chyba jednak nie pomyślałem. Od esp trza odjąć jeszcze dodać 8 bajtów? Już próbowałem 4. Sprawdze czy działa :)
EDIT: AHH próbowałem [esp], [esp + 4], [esp - 4], [esp + 8] i [esp + 4]. Nie działa :( |
|
pekfos |
» 2013-02-06 21:00:46 String powinien być zakończony znakiem dolara. |
|
DejaVu |
» 2013-02-06 21:04:47 |
|
pekfos |
» 2013-02-06 21:07:19 Raczej nie pomoże. Kurs dość słaby i opisuje składnię TASMa ;) |
|
DejaVu |
» 2013-02-06 21:08:31 Tyle, że on pisze właśnie w tasmie... to, że kod ma inny 'układ' wcale nie oznacza, że jest zły :) |
|
pekfos |
» 2013-02-06 21:13:29 Mi się wydaje, że pisze pod NASMa ;) A to mieszanie nie powinno stanowić problemu. I tak stos operuje na słowach 32-bitowych. |
|
« 1 » 2 3 |