   Ulatwienia dla niepelnosprawnych (klawisz dostepu: 0 - Shift+Alt+0;
   Alt+0; w Operze: Shift+Esc, potem 0; w Konquerorze: Ctrl, potem 0)

Witam

   Mam nadzieje, ze zamieszczone na tej stronie informacje wynagrodza
   niezbyt wyszukany wyglad, a moje kursy w szybki i latwy sposob
   umozliwia kazdemu zdobycie niemalych umiejetnosci w programowaniu z
   wykorzystaniem jezyka asembler.

   Jesli trafiliscie tu przez przypadek i nie interesuje Was jezyk
   asembler, to przeczytajcie chociaz wstep do tematu, aby przekonac sie,
   ile blednych i niesprawiedliwych opinii krazy o tym wspanialym jezyku
   w srodowisku tak zwanych prawdziwych programistow (ktorzy najczesciej
   o asemblerze po prostu nic nie wiedza).
   UWAGA: Materialy zgromadzone na tej stronie dotycza procesorow rodziny
   x86, czyli od 8086 poprzez 80586, az do najnowszych modeli Intela oraz
   wszystkich procesorow zgodnych z procesorami Intela: AMD, Cyrix,
   Transmeta, ... Nie wiem nic o programowaniu ukladow 805x, PIC, ARM,
   AVR, Alpha, SPARC, PowerPC, Motoroli 68000, wyswietlaczy LCD i tym
   podobnych rzeczy.
     _________________________________________________________________

                            Oto, co ja Wam oferuje

    1. Kodu zrodlowego umieszczonego w tym kursie mozna uzywac na
       zasadach licencji GNU LGPL w wersji trzeciej. Wyjatkiem jest
       program l_mag, ktorego licencja jest GNU GPL w wersji trzeciej.
       Programy innych osob maja swoje licencje.
    2. Zasady korzystania z materialow:
          + Kurs i wszelkie materialy (za wyjatkiem programow, ktore
            objete sa osobnymi zasadami) mozna bez ograniczen kopiowac,
            drukowac lub przenosic na inne nosniki informacji na wlasny
            uzytek, o ile zachowa sie informacje o autorze.
          + Mozna dokonywac modyfikacji tresci kursu, ale tylko na wlasny
            uzytek.
          + Kurs rozpowszechniac mozna tylko z niezmieniona trescia,
            mozna jednak w osobnych plikach dodawac komentarze i inne
            materialy.
          + W przypadku rozpowszechniania do innych odbiorcow nalezy
            przekazac informacje o pochodzeniu kursu (na przyklad adres
            www) i autorze oraz zasady dotyczace uzytkowania kursu.
       Jesli zauwazyliscie bledy albo Waszym zdaniem trzeba cos zmienic
       lub dodac, to naprawde piszcie do mnie. Adres jest na dole strony.
    3. Kurs jezyka asembler dla DOS-a/ (oraz FreeDOS i podobnych) online
       (dla kompilatorow: Turbo Assembler - TASM, Netwide Assembler -
       NASM i Flat Assembler - FASM):
       (przeskocz kurs dla DOSa)
          + Wstep - Dlaczego DOS?
          + Czesc 1D - Podstawy, czyli czym to sie je.
          + Czesc 2D - Pamiec, czyli gdzie upychac cos, co sie nie miesci
            w procesorze.
          + Czesc 3D - Podstawowe instrukcje, czyli poznajemy dialekt
            procesora.
          + Czesc 4D - Pierwsze programy, czyli przelamywanie pierwszych
            lodow.
          + Czesc 5D - Koprocesor, czyli jak liczyc na ulamkach. Odwrotna
            Notacja Polska.
          + Czesc 6D - SIMD, czyli jak dziala MMX.
          + Czesc 7D - Porty, czyli lacznosc miedzy procesorem a innymi
            urzadzeniami.
          + Czesc 8D - Zaawansowane programy, czyli zobaczmy, co ten
            jezyk naprawde potrafi.
          + Czesc 9D - Narzedzia programisty, czyli co moze nam pomagac w
            programowaniu.
          + Czesc 10D - Nie jestesmy sami, czyli jak laczyc asemblera z
            innymi jezykami.
          + Czesc 11D - Pamiec jest nietrwala, czyli jak poslugiwac sie
            plikami.
          + Czesc 12D - Czego od nas pragna, czyli linia polecen
            programu. Zmienne srodowiska.
          + Czesc 13D - Operacje na bitach, czyli to, w czym asembler
            blyszczy najbardziej.
          + Czesc 14D - Operacje o wielokrotnej precyzji, czyli co
            zrobic, gdy liczby nie mieszcza sie w rejestrach.
          + Czesc 15D - If/else if/else, do, while, for, switch/case -
            czyli o tym, jak uzywac blokow kontrolnych.
          + Czesc 16D - Operacje na lancuchach znakow. Wyrazenia
            regularne.
          + Czesc 17D - Pobieranie i wyswietlanie, czyli jak komunikowac
            sie ze swiatem.
          + Opis podstawowych funkcji najczesciej uzywanych przerwan
          + Skankody i kody ASCII klawiszy
          + Roznice miedzy dyrektywami roznych kompilatorow
    4. Kurs jezyka asembler dla Linuksa online (dla kompilatorow: Netwide
       Assembler - NASM i Flat Assembler - FASM):
       (przeskocz kurs dla Linuksa)
          + Informacja dla uzytkownikow *BSD
          + Czesc 1L - Podstawy, czyli czym to sie je.
          + Czesc 2L - Pamiec, czyli gdzie upychac cos, co sie nie miesci
            w procesorze.
          + Czesc 3L - Podstawowe instrukcje, czyli poznajemy dialekt
            procesora.
          + Czesc 4L - Pierwsze programy, czyli przelamywanie pierwszych
            lodow.
          + Czesc 5L - Koprocesor, czyli jak liczyc na ulamkach. Odwrotna
            Notacja Polska.
          + Czesc 6L - SIMD, czyli jak dziala MMX.
          + Czesc 7L - Porty, czyli lacznosc miedzy procesorem a innymi
            urzadzeniami.
          + Czesc 8L - Zaawansowane programy, czyli zobaczmy, co ten
            jezyk naprawde potrafi.
          + Czesc 9L - Narzedzia programisty, czyli co moze nam pomagac w
            programowaniu.
          + Czesc 10L - Nie jestesmy sami, czyli jak laczyc asemblera z
            innymi jezykami.
          + Czesc 11L - Pamiec jest nietrwala, czyli jak poslugiwac sie
            plikami.
          + Czesc 12L - Czego od nas pragna, czyli linia polecen
            programu. Zmienne srodowiska.
          + Czesc 13L - Operacje na bitach, czyli to, w czym asembler
            blyszczy najbardziej.
          + Czesc 14L - Operacje o wielokrotnej precyzji, czyli co
            zrobic, gdy liczby nie mieszcza sie w rejestrach.
          + Czesc 15L - If/else if/else, do, while, for, switch/case -
            czyli o tym, jak uzywac blokow kontrolnych.
          + Czesc 16L - Operacje na lancuchach znakow. Wyrazenia
            regularne.
          + Czesc 17L - Pobieranie i wyswietlanie, czyli jak komunikowac
            sie ze swiatem.
          + Opis przerwania systemowego Linuksa int 80h: funkcje 1-50
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 51-100
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 101-150
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 151-200
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 201-250
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 251-300
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 301-350
            (x86)
          + Opis przerwania systemowego Linuksa int 80h: funkcje 351-379
            (x86)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 0-50
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 51-100
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 101-150
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 151-200
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 201-250
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 251-300
            (x86-64)
          + Opis funkcji systemowych Linuksa 64-bit: funkcje 301-328
            (x86-64)
          + Roznice miedzy skladnia Intela a AT&T: AT&T a Intel
          + Roznice miedzy dyrektywami NASMa i FASMa: NASM a FASM
    5. Mini-kursy dla DOSa (online):
       (przeskocz mini-kursy dla DOSa)
          + Programowanie glosniczka w asemblerze
          + Pisanie wlasnych bibliotek
          + Manipulacja diodami klawiatury
          + Pisanie boot-sektorow + przykladowy bootsektor
          + Zarzadzanie zasilaniem komputera. Wylaczanie monitora,
            resetowanie programowo, parkowanie glowic twardych dyskow.
          + Bezposredni dostep do ekranu z programem do rysowania ramek
          + Pisanie programow rezydentnych (TSR-ow) z przykladowym
            programem TSR
          + Obsluga myszy w asemblerze z przykladowym programem
          + Rysowanie w trybie graficznym z programem do rysowania linii
            i kola
          + Wykrywanie typu procesora
          + Uruchamianie innych programow (z przykladem)
          + Dynamiczna alokacja pamieci
          + Pisanie plikow .SYS (z przykladem)
          + Wyswietlanie obrazkow BMP (z programem)
          + Pobieranie i ustawianie daty oraz czasu (z programem)
          + Wykrywanie sprzetu
          + Korzystanie z portow komunikacyjnych
          + Pamiec EMS i XMS
    6. Mini-kursy dla Linuksa (online):
       (przeskocz mini-kursy dla Linuksa)
          + Informacja dla uzytkownikow *BSD
          + Programowanie glosniczka w asemblerze pod Linuksem z
            przykladowym programem
          + Pisanie wlasnych bibliotek pod Linuksem
          + Manipulacja diodami klawiatury pod Linuksem z przykladowym
            programem
          + Pisanie boot-sektorow pod Linuksem + przykladowy bootsektor
          + Zarzadzanie zasilaniem komputera pod Linuksem. Resetowanie
            programowo, wylaczanie twardych dyskow.
          + Bezposredni dostep do ekranu pod Linuksem z programem do
            rysowania ramek
          + Pisanie programow rezydentnych (tzw. demonow) w Linuksie z
            przykladowym programem
          + Obsluga myszy w asemblerze pod Linuksem z przykladowym
            programem
          + Rysowanie w trybie graficznym pod Linuksem z programem do
            rysowania linii i kola
          + Wykrywanie typu procesora pod Linuksem
          + Uruchamianie innych programow pod Linuksem (z przykladem)
          + Dynamiczna alokacja pamieci pod Linuksem
          + Pisanie sterownikow (modulow jadra) z przykladowym modulem
          + Wyswietlanie obrazkow BMP pod Linuksem (z programem)
          + Pobieranie i ustawianie daty oraz czasu pod Linuksem (z
            programem)
          + Pisanie programow sieciowych pod Linuksem z przykladowym
            serwerem i klientem
          + Pisanie programow wielowatkowych pod Linuksem z przykladowym
            programem
          + Korzystanie z portow komunikacyjnych pod Linuksem z
            przykladowym programem
    7. Moja biblioteka procedur (napisanych oczywiscie w asemblerze) dla
       procesorow x86:
       (przeskocz biblioteke)
          + wyswietlanie i pobieranie liczb calkowitych, od 8 do 64 bitow
            dlugosci: dwojkowo, osemkowo, dziesietnie i szestnastkowo
          + wyswietlanie i pobieranie liczb zmiennoprzecinkowych dowolnej
            precyzji (32, 64 lub 80 bitow) dowolnej postaci, w tym
            wykladniczej
          + wyswietlanie i pobieranie tekstow
          + generowanie liczb pseudolosowych od 8 do 64 bitow dlugosci
          + wykrywanie rodzaju procesora i koprocesora
          + emitowanie dzwieku przez glosniczek
          + operacje na lancuchach znakow
          + operacje na spakowanych i niespakowanych liczbach BCD, od 8
            do 64 bitow dlugosci
          + instrukcja obslugi i gotowe przyklady uzycia
          + wersja Linux/*BSD: numery wiekszosci funkcji systemowych,
            stale systemowe, numery bledow systemowych, obsluga skladni
            NASMa i FASMa, czesc struktur uzywanych przez przerwanie int
            80h
          + wersja DOS/BIOS: obsluga skladni TASMa, FASMa i NASMa
          + obslugiwane formaty plikow:
              1. DOS: OMF/LIB (kod 16-bitowy), na przyklad dla linkerow
                 VAL i ALINK
              2. DOS: COFF (kod 32-bitowy), na przyklad dla linkera LD z
                 DJGPP
              3. Linux/*BSD: ELF (kod 32-bitowy), na przyklad dla linkera
                 LD z binutils
       Wersja dla kazdego systemu (DOS, BIOS, Linux, BSD): bibl.zip
       Wersja DLL dla Windowsa, dzieki uprzejmosci Remka: bibl_dll.zip
       Biblioteka przeznaczona jest dla tych, ktorzy chca sie uczyc
       asemblera, lecz jeszcze nie chca zagniezdzac sie w mroczne
       zakamarki wypisywania i pobierania danych. Wejscie/wyjscie moze
       dla niektorych okazac sie najtrudniejsza rzecza do napisania w
       calym programie! Moja biblioteka sluzy wlasnie do tego, aby tym
       sie nie przejmowac, a skupic sie na tym, co jest najwazniejsze -
       zrozumieniu jezyka i pisaniu algorytmow. W archiwum znajduje sie
       krotki opis uzytkowania: bibl\czytaj.txt oraz przyklady
       zastosowania procedur: bibl\przykl\.
    8. Rozne programy - przyklady w asemblerze, konwertery w Perlu,
       definicje kolorowania skladni dla edytora KDE Kate/KWrite.
    9. Autoryzowane kopie moich materialow:
          + Strona podstawowa
          + Strona zapasowa
          + Druga strona zapasowa
          + Trzecia strona zapasowa
          + Czwarta strona zapasowa (dostepna tez po HTTPS)
          + Piata strona zapasowa
          + Kopia archiwow off-line
          + Ksiazka "Bezpieczenstwo Aplikacji Windows" w Szkole Hakerow
   10. Odnosniki do innych stron (kompilatory, kursy, ksiazki,
       dokumentacja, programy)
     _________________________________________________________________

   Jesli macie jakies pytania lub uwagi dotyczace tej strony, biblioteki
   lub moich kursow, to piszcie. Wasze opinie sa dla mnie wazne, gdyz
   dzieki nim moge bardziej dostosowac tresc strony do Waszych potrzeb.

   Prosze nie pisac do mnie w sprawach innych procesorow niz te z rodziny
   x86 lub jej 64-bitowej nastepczyni. Nie wiem nic o programowaniu
   ukladow 805x, PIC, ARM, AVR, Alpha, SPARC, PowerPC, Motoroli 68000,
   wyswietlaczy LCD i tym podobnych rzeczy.

   Moj adres to bogdandr MALPKA op KROPKA pl.
   Prosze NIE dodawac sobie mojego adresu do ksiazki adresowej, a przede
   wszystkim NIE umieszczac go na zadnej stronie internetowej. Osoby,
   ktore juz to zrobily, prosze o usuniecie.

   Moj certyfikat publiczny:
   MD5 certyfikatu: 68:0D:78:15:1F:6E:24:7A:48:82:EB:CA:0F:3B:5A:A0
   SHA1 certyfikatu:
   8C:9B:7A:AB:A9:8E:39:FE:3A:B0:34:35:C1:41:10:89:38:4B:42:E2

   Certyfikat wystawcy:
   MD5 certyfikatu wystawcy:
   EB:77:B9:23:0F:21:02:2A:29:54:8A:78:A3:A4:8F:20
   SHA1 certyfikatu wystawcy:
   FE:E7:83:1D:AA:8D:1E:10:32:40:2D:08:1D:23:00:0F:86:C4:48:46

   Moj klucz publiczny GnuPG/PGP:
   Numer 1C56DA1E, SHA1 klucza: E91E 699F 1026 D0EF 745E EC3B 353A D368
   1C56 DA1E

   Certyfikat serwera znacznikow czasu potwierdzajacego czas podpisu
   mozna znalezc na stronie freeTSA.org.

   Jesli nie wiecie, co zrobic z tym powyzej, to przeczytajcie krotka
   instrukcje obslugi.
     _________________________________________________________________

   Jesli macie pytania ogolne dotyczace asemblera lub jesli macie problem
   ze swoimi programami, zachecam Was do pisania na grupy dyskusyjne
   alt.pl.asm, alt.pl.asm.win32 (nie wszedzie dostepne) lub
   pl.comp.lang.asm (powinna byc wszedzie dostepna), aby inni takze mogli
   sie czegos nauczyc. My nie wysmiewamy nikogo za proste pytania!

   Aktualnie grupy alt.pl.asm i pl.comp.lang.asm mozna znalezc miedzy
   innymi na tych serwerach:
     * news.task.gda.pl
     * news.gazeta.pl (trzeba miec konto)
     * news.neostrada.pl

   Chetnie zbieram informacje o innych serwerach news posiadajacych te
   grupy.

   Polecam tez (glownie do czytania) anglojezyczne grupy dyskusyjne
   alt.lang.asm oraz comp.lang.asm.x86 (lepsza).

   Ulatwienia dla niepelnosprawnych (klawisz dostepu: 0 - Shift+Alt+0;
   Alt+0; w Operze: Shift+Esc, potem 0; w Konquerorze: Ctrl, potem 0)
