Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Asembler] Odczyt danych ze stosu

Ostatnio zmodyfikowano 2013-02-09 18:46
Autor Wiadomość
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?
P-75819
pekfos
» 2013-02-06 20:25:07
Call wrzuca na stos adres powrotu.
P-75834
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 :(
P-75839
pekfos
» 2013-02-06 21:00:46
String powinien być zakończony znakiem dolara.
P-75846
DejaVu
» 2013-02-06 21:04:47
P-75849
pekfos
» 2013-02-06 21:07:19
Raczej nie pomoże. Kurs dość słaby i opisuje składnię TASMa ;)
P-75851
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 :)
P-75852
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.
P-75855
« 1 » 2 3
  Strona 1 z 3 Następna strona