; Program wyswietla wlasna linie polecen i zmienne srodowiskowe. ; ; Autor: Bogdan D. ; kontakt: bogdandr (at) op (dot) pl ; ; nasm -O999 -f elf liniap.asm ; ld -s -o liniap liniap.o -Lbibl/lib -lstdasm ; ; Copyright (C) 2005-2007 Bogdan 'bogdro' Drozdowski, bogdandr @ op . pl ; ; Ten program jest wolnym oprogramowaniem; mozesz go rozpowszechniac ; i/lub modyfikowac zgodnie z licencja GNU Lesser General Public License ; (GNU LGPL) w wersji wydanej przez Fundacje Wolnego Oprogramowania; ; wedlug wersji 3 Licencji lub (jesli wolisz) jednej z pozniejszych wersji. ; ; Ten program jest udostepniany z nadzieja, ze bedzie uzyteczny, lecz ; BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyslnej gwarancji PRZYDATNOSCI ; HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH ZASTOSOWAN. W celu uzyskania ; blizszych informacji - Licencja GNU Lesser General Public License. ; ; Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz ; Licencji GNU Lesser General Public License; jesli nie - napisz do ; Fundacji Wolnego Oprogramowania: ; Free Software Foundation ; 51 Franklin Street, Fifth Floor ; Boston, MA 02110-1301 ; USA %include "bibl/incl/nasm/std_bibl.inc" ; przyda sie nam moja biblioteczka section .text global _start _start: push ebp ; typowy "prolog" mov ebp, esp %idefine argc ebp+4 ; ilosc parametrow %idefine argv ebp+8 ; parametry mov eax, [argc] ; EAX = ilosc parametrow pisz32e ; wypisz EAX nwln ; przejdz do nowej linii xor edi, edi ; zerujemy licznik wyswietlonych ; parametrow wypisz_argv: cmp edi, eax ; czy ilosc wyswietlonych = ; ilosc parametrow? je koniec_wypisz_argv ; jesli tak, to wypisalismy wszystkie mov esi, [argv+edi*4] ; pobierz parametr numer EDI. ; kazdy wskaznik jest 4-bajtowy, ; dlatego mnozymy EDI przez 4. pisz_esi ; wypisz napis pod adresem ESI ; (nasz parametr) nwln ; przejdz do nowej linii add edi, 1 ; wybieramy kolejny parametr jmp short wypisz_argv ; i idziemy pisac od nowa koniec_wypisz_argv: ; parametry sie skonczyly. ; Teraz bedzie jeden wskaznik zerowy ; i zmienne srodowiska inc edi ; przeskocz wskaznik zerowy wypisz_env: mov esi, [argv+edi*4] ; pobierz zmienna srodowiskowa test esi, esi ; sprawdz, czy nie wskaznik zerowy jz koniec_wypisz_env ; jesli zero, to skonczylismy pisz_esi ; wypisz zmienna srodowiskowa nwln ; przejdz do nowej linii add edi, 1 ; przechodzimy na kolejna zmienna jmp short wypisz_env ; i wypisujemy dalej koniec_wypisz_env: wyjscie ; koniec...