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ć.

  1. 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.

  2. Interfejs systemowy DOS-a składa się z jednej instrukcji - zawsze jest to int 21h.

  3. 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.

  4. Nie potrzeba osobnych sekcji w programie na importy z DLL-i.

  5. Nie trzeba wiedzieć, w którym DLL-u (np. kernel32.dll) dana funkcja się znajduje.

  6. Czasem nie potrzeba nawet linkowania programu (w przypadku programów typu .com).

  7. 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:

Jeśli moje tłumaczenia Was przekonują, to zapraszam do rozpoczęcia przygody z asemblerem.

Pierwsza część kursu (klawisz dostępu 4)
Spis treści off-line (klawisz dostępu 1)
Spis treści on-line (klawisz dostępu 2)
Ułatwienia dla niepełnosprawnych (klawisz dostępu 0)