Filar Społeczności Chell Opublikowano 10 Kwietnia 2017 Filar Społeczności Udostępnij Opublikowano 10 Kwietnia 2017 mam sobie kodzik: ideal p286n model small stack 256h codeseg org 1h jmp start tekst db "1234567$" proc pisz mov si, 6 ;counter do odejmowania indeksu litery zeby ladnie od przodu lecialy mov cx, 7 ;ile razy wykona sie petla, wielkosc stringa petla: mov al, [tekst+si] int 10h sub si, 1 loop petla ret endp start: mov al, 02h;80x25 text int 10h mov bl, 40h;col mov ah, 09h;bede pisac call pisz mov ax, 4c00h int 21h end start dziala on pieknie, jednak chcialbym zeby rutyna pisz przyjmowala argumenty string i length, jednak nie mam pojecia jak temat tych argumentow ugryzc. moze sie skupmy na tym lengthu, bo latwiej - probowalem proc pisz len:byte sub ch, ch mov cl, len mov si, cx sub si, 1 call pisz, offset 25 bezskutecznie, tasm nie chciał. probowałem przed callem pushować offset 25, bezskutecznie. próbowałem później popować ten offset wszędzie gdzie się da, bezskutecznie. co z tymi argumentami? edit: na chwile obecna zastapilem to macrem, jednak wciaz jestem ciekaw edit2: jednak nie, bo mam tam petle Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 10 Kwietnia 2017 Udostępnij Opublikowano 10 Kwietnia 2017 Dawno nie używalem asm ale zobacz czy zadziała proc pisz len:byte sub ch, ch mov cl, [len] mov si, cx sub si, 1 call pisz, 25 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 10 Kwietnia 2017 Autor Filar Społeczności Udostępnij Opublikowano 10 Kwietnia 2017 jakby to bylo takie proste nie siedzialbym nad tym pol dnia :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 10 Kwietnia 2017 Udostępnij Opublikowano 10 Kwietnia 2017 TASM jaka wersja? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 10 Kwietnia 2017 Autor Filar Społeczności Udostępnij Opublikowano 10 Kwietnia 2017 4.1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 10 Kwietnia 2017 Udostępnij Opublikowano 10 Kwietnia 2017 A można przekazywać argumenty w CALL? Zawsze się to robiło przez stos Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 11 Kwietnia 2017 Administratorzy Udostępnij Opublikowano 11 Kwietnia 2017 a pętli to się nie robiło w stylu (wybaczcie, 7 lat bez assemblera) MOV AX,25 proc pisz sub ax, 1 JNZ pisz ;dalsza czesc kodu JNZ wykona się, gdy wynikiem ostatniej operacji nie było 0 (Jump No Zero). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 11 Kwietnia 2017 Udostępnij Opublikowano 11 Kwietnia 2017 tak, argumenty przekazuje sie do procedury przez stos. tylko pamietaj, ze wazna jest konwencja. najpopularniejsze: CDECL i STDCALL. roznia sie one tym, kto zajmuje sie sprzataniem stosu, ale obie wrzucaja na stos w kolejnosci od ostatneigo do pierwszego argumentu. obczaj sobie te konwencje tu: https://en.wikipedia.org/wiki/X86_calling_conventions Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 11 Kwietnia 2017 Udostępnij Opublikowano 11 Kwietnia 2017 Warto też kojarzyć że w x64 przesyła się już przez rejestry( i dopiero nadmiarowe przez stos ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 11 Kwietnia 2017 Autor Filar Społeczności Udostępnij Opublikowano 11 Kwietnia 2017 robie co moge z tymi stosami, ale nie dziala nawet taki banal jak format binary org 0x100 jmp start utility db "jakis napis" print: pop cx mov ah, 0x02 mov dx, 0x0000 int 0x10 mov ah, 0x09 mov si, cx sub si, 1 petla: mov al, [utility+si] int 0x10 sub si, 1 loop petla ret start: mov al, 0x02;80x25 text 16col int 0x10 mov bl, 0x07 push 11 call print mov ax, 0x4c00 int 0x21 zawsze wyswietla sobie to co ma, a pozniej losowe znaczki na 4 linijki, bez wzgledu na to co pushuje. chyba, ze tu gdzies powinny wkroczyc te calling conventiony? also, teraz kod z fasma gnysek, to petla i to petla, jak teraz assemblery pozwalaja na takie myki to z nich korzystam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 12 Kwietnia 2017 Udostępnij Opublikowano 12 Kwietnia 2017 A jak zamiast push i pop cx dasz mov cx,11 ? Ew zamiast loop daj DEC CX, 1; CMP CX, 0; JG petla Przyczyna: przy wywołaniu call na stos wrzucany jest adres powrotu Rozwianie: zamiast pop użyj mov cx, [esp+2] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 12 Kwietnia 2017 Autor Filar Społeczności Udostępnij Opublikowano 12 Kwietnia 2017 <3 cudowny jestes, dziekuje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się