Asembler x86/Pierwszy program/GNU AS: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Kj (dyskusja | edycje)
Nowa strona: === Hello world! === Oto przykład programu, napisanego w asemblerze GNU, wyświetlającego napis "Hello World!" w systemie zgodnym z normą POSIX, uruchomionym na komputerze typu i386:...
 
Kj (dyskusja | edycje)
Nie podano opisu zmian
Linia 1:
=== Hello world! (POSIX) ===
Oto przykład programu, napisanego w asemblerze GNU, wyświetlającego napis "Hello World!" w systemie zgodnym z normą POSIX, uruchomionym na komputerze typu i386:
 
Linia 45:
len = . - napis
Jest to zmienna, która zawiera długość napisu. Kropka oznacza "aktualny adres" w pamięci (w naszym przypadku koniec napisu), a "napis" - adres etykiety, pod którą zawarto początek napisu. Różnica koniec - początek daje długość napisu, która jest niezbędna, aby program wypisał na ekranie dokładnie tyle znaków, ile liczy sobie napis.
 
=== Hello World! (WIN32) ===
Analogiczny program, który kompiluje się pod systemami Windows mógłby wyglądać np. tak:
 
.data
napis:
.string "Hello World!\n$"
.text
.globl _start
_start:
movw $napis, %dx
movw $9, %ah
int $0x21
movw 0x4C00, %ax
int $0x21
 
Dokładniejszy opis działania tego programu znajdziesz w rozdziale poświęconemu asemblerowi [[Asembler X86/Pierwszy program/MASM|MASM]].
 
Przyglądając się składni GNU możesz zauważyć, jak bardzo różni się ona od składni NASM lub MASM.