Asembler x86/Podstawy: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Nie podano opisu zmian
 
Linia 11:
etykieta:
Etykieta musi znajdować się na początku linii i być niepoprzedzona niczym innym. Gdy już połączymy to z naszą dotychczasową wiedzą o korzystaniu z instrukcji, możemy napisać prosty przykład:
<sourcesyntaxhighlight lang="asm">etykieta: movl %ecx, %eax</sourcesyntaxhighlight>
Od tej pory, gdy będziemy chcieli odnieść się do tego adresu (np. gdy zechcemy przeskoczyć w wykonaniu naszego programu bezpośrednio w miejsce z naszą instrukcją ''mov''), możemy napisać po prostu:
<sourcesyntaxhighlight lang="asm">jmp etykieta</sourcesyntaxhighlight>
zamiast podawać cyferki adresu w pamięci (instrukcja jmp modyfikuje rejestr [[../Architektura#EIP|EIP]], przez co procesor "przeskakuje" do innego kodu; więcej o tej instrukcji w rozdziale [[../Funkcje|Funkcje]]). Dodatkowo, poprzedni kod, który zdefiniowaliśmy, jest równoznaczny z poniższym:
<sourcesyntaxhighlight lang="asm">
etykieta:
movl %ecx, %eax
</syntaxhighlight>
</source>
Jak zapewne zauważyłe(a)ś, definicja etykiety podczepia się automatycznie pod najbliższą linijkę (jednak nie zawsze obowiązuje ta zasada!).
 
== Komentarze ==
Komentarz jest to po prostu notatka mająca ułatwić zrozumienie danego fragmentu kodu innym, którzy będą go czytać oraz przede wszystkim temu, kto go napisał. Jeśli programista daruje sobie komentowanie kodu, orientowanie się w nim będzie zajmowało mu więcej czasu, lub też zajmie mu to nieskończoną ilość czasu, gdyż z obłędem w oczach skasuje całą swoją pracę nie mogąc zrozumieć ani jednej linijki. Komentarze istnieją jedynie na poziomie kodu źródłowego, po kompilacji nie pozostaje po nich żaden ślad. Aby uczynić dowolny tekst komentarzem i tym samym wyłączyć go z procesu asemblacji, należy poprzedzić go średnikiem. Średnik zamienia w komentarz wszystko, co znajduje się za nim, aż do końca linii.
<sourcesyntaxhighlight lang="asm">movl %edx, %eax ; to jest komentarz</sourcesyntaxhighlight>
 
'''Asembler MASM''' umożliwia jeszcze jedną metodę komentowania:
Linia 34:
 
'''GNU Assembler''' z kolei ma zupełnie inną składnię komentarzy. Aby objąć dowolny blok komentarzem, należy umieścić go między /* oraz */ (zapewne ten sposób komentowania jest znajomy dla programistów C). W przypadku tego asemblera, dozwolone jest również używanie znaku # , który ma identyczne działanie jak znak ; (średnik) w przypadku innych asemblerów. np.
<sourcesyntaxhighlight lang="bash">
# to jest komentarz
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="c">
/* to jest komentarz
to też jest komentarz */
to już nie!
</syntaxhighlight>
</source>
 
== Struktura kodu asemblera ==