Asembler x86/Narzędzia: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m →Hello world!: poprawki |
|||
Linia 26:
== Zaczynamy! ==
=== Hello world! ===
Zacznijmy od dawki kodu, żeby mieć pojęcie jak to w ogóle wygląda. Będzie to tradycyjny już program Hello World:
<pre>
.model small
Linia 46:
Dyrektywa .model pozwala zdefiniować z jakiego modelu pamięci ma korzystać nasz program. Model small oznacza segmentowy model pamięci z jednym segmentem kodu i jednym segmentem danych.
.386
Ta dyrektywa określa z jakiego zbioru instrukcji będzie korzystać nasz program. W tym przypadku
.data
Określa, że od tego miejsca w dół definiowany jest segment z danymi.
tekst byte "Hello World!",0Ah,0Dh,"$"
Wrzuca do segmentu z danymi ciąg znaków "Hello World!" zakończony znakiem nowej linii (0A0D) oraz znakiem $ określającym, iż jest to koniec naszego ciągu
.stack 100h
Dyrektywa tworzy segment stosu o wielkości 100h. Umieszczenie literki ''h'' za liczbą oznacza, że '''jest zapisana szesnastkowo''' (100h = 256 dziesiętnie).
Linia 66:
Instrukcja int wywołuje podprogram obsługi przerwania (dokładnie co to są przerwania opisane jest w rozdziale [[Asembler X86/Instrukcje_specjalne|Instrukcje]]) o numerze podanym jako A (w tym przypadku chodzi o numer 21h). Podprogram obsługujący przerwanie o tym numerze wywołuje określoną funkcję o numerze przekazanym w rejestrze ah (przerwanie 21h, funkcja przerwania numer 09h).
.exit
end
Określa że w tym miejscu kończy się kod. Asembler po napotkaniu tego słowa kończy proces asemblacji, niezależnie od tego, czy znajduje się jakiś kod jeszcze dalej.
|