Materiały dla Linuksa
- Kodu źródłowego umieszczonego w tym kursie można używać na zasadach licencji
GNU LGPL w wersji trzeciej. Wyjątkiem
jest program l_mag, którego licencją jest GNU GPL w wersji trzeciej. Programy innych osób mają swoje licencje.
- Zasady korzystania z materiałów:
- Kurs i wszelkie materiały (za wyjątkiem programów, które objęte są osobnymi zasadami)
można bez ograniczeń kopiować, drukować lub przenosić na inne nośniki informacji na własny użytek, o
ile zachowa się informacje o autorze.
- Można dokonywać modyfikacji treści kursu, ale tylko na własny użytek.
- Kurs rozpowszechniać można tylko z niezmienioną treścią, można jednak w osobnych plikach dodawać
komentarze i inne materiały.
- W przypadku rozpowszechniania
do innych odbiorców należy przekazać informację o pochodzeniu kursu (na przykład adres www)
i autorze oraz zasady dotyczące użytkowania kursu.
Jeśli zauważyliście błędy albo Waszym zdaniem trzeba coś zmienić lub dodać,
to naprawdę piszcie do mnie. Adres jest na dole strony.
- Język asembler w pigułce, czyli wszystkie kursy, mini-kursy, wstęp, dodatki i ta strona
w różnych formatach:
(przeskocz archiwa)
- HTML (po rozpakowaniu
otworzyć index.htm)
- TXT (generowany automatem czysty tekst, bez polskich liter)
- PDF -
Język asembler dla każdego
(jeden plik ze wszystkim, wymaga Okular,
Xpdf lub Adobe Acrobat Reader 5 lub nowszy)
- Kurs języka asembler dla Linuksa online (dla kompilatorów:
Netwide Assembler - NASM i
Flat Assembler -
FASM):
(przeskocz kurs dla Linuksa)
- Informacja dla użytkowników *BSD
- Część 1 - Podstawy, czyli czym to się je.
- Część 2 - Pamięć, czyli gdzie upychać coś, co się nie mieści w procesorze.
- Część 3 - Podstawowe instrukcje, czyli poznajemy dialekt procesora.
- Część 4 - Pierwsze programy, czyli przełamywanie pierwszych lodów.
- Część 5 - Koprocesor, czyli jak liczyć na ułamkach. Odwrotna Notacja Polska.
- Część 6 -
SIMD, czyli jak działa
MMX.
- Część 7 - Porty, czyli łączność między procesorem a innymi urządzeniami.
- Część 8 - Zaawansowane programy, czyli zobaczmy, co ten język naprawdę potrafi.
- Część 9 - Narzędzia programisty, czyli co może nam pomagać w programowaniu.
- Część 10 - Nie jesteśmy sami, czyli jak łączyć asemblera z innymi językami.
- Część 11 - Pamięć jest nietrwała, czyli jak posługiwać się plikami.
- Część 12 - Czego od nas pragną, czyli linia poleceń programu. Zmienne środowiska.
- Część 13 - Operacje na bitach, czyli to, w czym asembler błyszczy najbardziej.
- Część 14 - Operacje o wielokrotnej precyzji, czyli co zrobić, gdy liczby nie mieszczą się w rejestrach.
- Część 15 - If/else if/else, do, while, for, switch/case - czyli o tym, jak używać bloków kontrolnych.
- Część 16 - Operacje na łańcuchach znaków. Wyrażenia regularne.
- Część 17 - Pobieranie i wyświetlanie, czyli jak komunikować się ze światem.
- Co dalej z tą wiedzą, czyli pomysły na programy
- 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)
- Różnice między składnią Intela a AT&T: AT&T a Intel
- Skankody i kody
ASCII klawiszy
- Różnice między dyrektywami NASMa i FASMa: NASM a FASM
- Mini-kursy dla Linuksa (online):
(przeskocz mini-kursy dla Linuksa)
- Moja biblioteka procedur (napisanych oczywiście w asemblerze) dla procesorów x86:
(przeskocz bibliotekę)
- wyświetlanie i pobieranie liczb całkowitych, od 8 do 64 bitów długości: dwójkowo, ósemkowo,
dziesiętnie i szesnastkowo
- wyświetlanie i pobieranie liczb zmiennoprzecinkowych dowolnej precyzji (32, 64 lub 80
bitów) dowolnej postaci, w tym wykładniczej
- wyświetlanie i pobieranie tekstów
- generowanie liczb pseudolosowych od 8 do 64 bitów długości
- wykrywanie rodzaju procesora i koprocesora
- emitowanie dźwięku przez głośniczek (wymaga obsługi głośniczka w jądrze oraz może
wymagać uprawnień administratora)
- operacje na łańcuchach znaków
- operacje na spakowanych i niespakowanych liczbach BCD, od 8 do 64 bitów długości
- instrukcja obsługi i gotowe przykłady użycia
- wersja Linux/*BSD: obsługa składni NASMa i FASMa, numery większości funkcji systemowych,
stałe systemowe, numery błędów systemowych, część struktur używanych przez
przerwanie int 80h
- wersja DOS/BIOS:
obsługa składni TASMa, FASMa i NASMa
- obsługiwane formaty plików:
- DOS: OMF/LIB (kod 16-bitowy),
na przykład dla linkerów VAL i ALINK
- DOS: COFF
(kod 32-bitowy), na przykład dla linkera LD z
DJGPP
- Linux/*BSD: ELF
(kod 32-bitowy), na przykład dla linkera LD z binutils
Wersja dla każdego systemu (DOS, BIOS, Linux, *BSD):
bibl.zip
(525.215 bajtów), 2021-03-14 (podpis GPG/PGP bibl.zip)
Biblioteka przeznaczona jest dla tych, którzy chcą się uczyć asemblera, lecz jeszcze
nie chcą zagnieżdżać się w mroczne zakamarki wypisywania i pobierania danych.
Wejście/wyjście może dla niektórych okazać się najtrudniejszą rzeczą do napisania w
całym programie! Moja biblioteka służy właśnie do tego, aby tym się nie przejmować, a
skupić się na tym, co jest najważniejsze: zrozumieniu języka i pisaniu algorytmów.
W archiwum znajduje się krótki opis użytkowania: bibl\czytaj.txt oraz przykłady
zastosowania procedur: bibl\przykl\.
- Różne programy - przykłady w asemblerze,
konwertery w Perlu, definicje kolorowania składni dla edytora KDE Kate/KWrite.
- Autoryzowane kopie moich materiałów:
- Odnośniki do innych źródeł
(kompilatory, kursy, książki, dokumentacja, programy)
Jeśli chcecie być na bieżąco powiadamiani o zmianach na tej stronie, zasubskrybujcie mój
kanał informacyjny (dynamiczną zakładkę) - w standardzie Atom 1.0:
asm-atom.xml,
asm.atom
lub w standardzie RSS 2.0:
asm-rss20.xml,
asm.rss.
Wszystkie te powinny być widoczne po kliknięciu ikony kanału w pasku adresu w przeglądarce.
Jeśli macie jakieś pytania lub uwagi dotyczące tej strony, biblioteki lub moich kursów,
to piszcie.
Wasze opinie są dla mnie ważne, gdyż dzięki nim mogę bardziej dostosować treść strony do
Waszych potrzeb.
Proszę jednak nie pisać do mnie w sprawach innych procesorów niż te z
rodziny x86 lub jej 64-bitowej następczyni.
Nie wiem nic o programowaniu układów 805x,
PIC, innych mikroprocesorów i kontrolerów,
wyświetlaczy LCD i tym podobnych rzeczy.
Mój adres to bogdandr MAŁPKA op KROPKA pl.
Proszę NIE dodawać sobie mojego adresu do książki adresowej, a przede
wszystkim NIE umieszczać go na żadnej stronie internetowej. Osoby, które
już to zrobiły, proszę o usunięcie.
Krótko o mnie
- kim jestem, czego używam i co polecam.
Mój certyfikat publiczny:
format crt,
format cer,
format pem,
format p7b,
format p7c
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: format der
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
Lista odwołań poprzednich certyfikatów:
format crl,
format pem.
Mój klucz publiczny GnuPG / OpenPGP:
format asc
Numer 1C56DA1E
,
SHA1 klucza: E91E 699F 1026 D0EF 745E EC3B 353A D368 1C56 DA1E
Certyfikat serwera znaczników czasu potwierdzającego czas podpisu można znaleźć na stronie
freeTSA.org.
Jeśli nie wiecie, co zrobić z tym powyżej, to przeczytajcie krótką
instrukcję obsługi.
Jeśli macie pytania ogólne dotyczące asemblera lub jeśli macie problem ze swoimi programami,
zachęcam Was do pisania na grupy dyskusyjne alt.pl.asm,
alt.pl.asm.win32 (nie wszędzie dostępne) lub
pl.comp.lang.asm (powinna być wszędzie dostępna), aby inni także
mogli się czegoś nauczyć. My nie wyśmiewamy nikogo za proste pytania!
Aktualnie grupy alt.pl.asm i pl.comp.lang.asm można znaleźć między innymi na tych serwerach:
Polecam też (głównie do czytania) anglojęzyczne grupy dyskusyjne
alt.lang.asm oraz
comp.lang.asm.x86 (lepsza).
Ta strona i wszystkie podstrony są napisane w prawidłowym
HTML 4.01
,
, według zasad ortografii
i pod wszystkie przeglądarki:
Ta strona i wszystkie podstrony używają prawidłowego arkusza stylów
CSS
Kanały informacyjne na tej stronie są zgodne ze standardem Atom 1.0
oraz RSS 2.0
Ta strona ma politykę bezpieczeństwa zawartości.
Ta strona nie używa obrazków w formacie
GIF ani JPG.
Ta strona wyświetla daty w międzynarodowym formacie
ISO-8601: RRRR-MM-DD.
Ta strona jest napisana w czystym HTML i CSS.
LINUX® jest zarejestrowanym znakiem handlowym Linusa Torvaldsa.
Adobe oraz Adobe Acrobat Reader są albo zarejestrowanymi znakami handlowymi,
albo znakami handlowymi firmy Adobe.
AMD jest znakiem handlowym Advanced Micro Devices, Inc.
Intel jest znakiem handlowym Intel Corporation lub spółek zależnych.
AT&T jest znakiem handlowym AT&T Inc. i/lub AT&T Intellectual Property.
Wszystkie inne znaki handlowe, logo i nazwy na tej stronie i wszystkich podstronach są
własnością odpowiednich właścicieli i są tu podane tylko jako przykład.