Jak pisać programy w języku asembler?
Wstęp - Dlaczego DOS?
Niektórzy z Was mogą się dziwić, czemu napisałem kurs dla DOS-a - systemu,
którego niewiele osób już dziś używa, a którego programów nie można już
nawet bezpośrednio uruchomić na współczesnych (64-bitowych) systemach.
Powodów jest kilka i postaram się je tutaj przedstawić.
- Po pierwsze, gdy pisałem kurs, program dla DOS-a można było spokojnie
kompilować oraz uruchamiać na (32-bitowym) Windows oraz na
FreeDOS.
Na FreeDOS dalej można to robić, oczywiście.
- Interfejs systemowy DOS-a składa się z jednej instrukcji - zawsze
jest to
int 21h
.
- Nie trzeba tłumaczyć, że nie ma takiej instrukcji procesora jak
invoke
(wywołanie WinAPI) i że jest to makro,
ani co to jest makro oraz co w sobie zawiera i dlaczego akurat to.
- Nie potrzeba osobnych sekcji w programie na importy z
DLL-i.
- Nie trzeba wiedzieć, w którym DLL-u (np.
kernel32.dll
)
dana funkcja się znajduje.
- Czasem nie potrzeba nawet linkowania programu (w przypadku programów typu
.com
).
- Nie trzeba tłumaczyć aspektów trybów pracy procesora - czemu różne programy
nie widzą
ani kodu systemu operacyjnego, ani się wzajemnie.
To wszystko czyni programy dla DOS-a łatwymi w napisaniu, kompilowaniu i wytłumaczeniu.
Programy pisane pod DOS-a w dalszym ciągu można uruchamiać na wspomnianym
FreeDOS-ie, ale mamy też inne narzędzia:
- DOSBox
(sam używam - działa bardzo dobrze),
- DOSEmu /
DOSEmu2,
- Bochs,
- na przykład do zainstalowania sobie FreeDOS-a w
wirtualnej maszynie lub testowania swoich własnych systemów operacyjnych,
- VirtualBox
- na przykład do zainstalowania sobie FreeDOS-a w
wirtualnej maszynie.
Jeśli moje tłumaczenia Was przekonują, to zapraszam do rozpoczęcia przygody z asemblerem.