4087490682

4087490682



27.05.2010

section .data    ; początek sekcji danych.

tekst db    "Czesc", Oah    ; nasz napis, który wyświetlimy

dlugosc equ    $ - tekst    ; długość napisu

I w końcu program 64-bitowy dla FASMa:

(przeskocz pierwszy 64-bitowy program w składni FASM1

; wersja FASM na system 64-bitowy (x86-64)

format ELF64 executable

; typ pliku

entry _start

; punkt startu programu

segment readable

executable

; początek sekcji kodu

_start:

; punkt startu programu

mov

rax, 1

; numer funkcji systemowej:

; sys_write - zapisz do pliku

mov

rdi, 1

; numer pliku, do którego piszemy.

; 1 = standardowe wyjście = ekran

mov

rsi, tekst

; RSI = adres (offset) tekstu

mov

rdx, [dlugosc]

; RDX = długość tekstu

syscall

; wywołujemy funkcję systemową

mov

rax, 60

; numer funkcji systemowej

; (sys_exit - wyjdź z programu)

syscall

; wywołujemy funkcję systemową

segment readable

writeable

; początek sekcji danych.

tekst db

'Czesc", Oah

; nasz napis, który wyświetlimy

dlugosc dq

$ - tekst

; długość napisu w trybie 64-bitowym

Bez paniki! Teraz omówimy dokładnie, co każda linia robi.

•    linie lub napisy zaczynające się średnikiem.

Traktowane są jako komentarze i są całkowicie ignorowane przy kompilacji. Rozmiar skompilowanego programu wynikowego nie zależy od ilości komentarzy. Dlatego najlepiej wstawiać tyle komentarzy, aby inni (również my) mogli później zrozumieć nasz kod.

•    (FASM)format ELF executable/format ELF64 executable

Określa format (typ) pliku wyjściowego: wykonywalny plik ELF (format używany w Linuksie). FASM nie potrzebuje programów łączących, aby utworzyć program. Format ELF64 jest używany oczywiście pod systemem 64-bitowym.

•    (FASM) entry _start

Określa, gdzie program się zaczyna. Po uruchomieniu programu procesor zaczyna wykonywać komendy zaczynające się pod podaną tutaj etykietą (_start) znajdującą się w sekcji kodu.

•    (FASM)segment readable executable

Określa nowy segment programu - segment kodu, któremu ustawiamy odpowiednie atrybuty: do odczytu i do wykonywania. Innym atrybutem jest writeable (do zapisu), który powinien być

16


Pisanie i kompilowanie (asemblowanie) swoich programów



Wyszukiwarka

Podobne podstrony:
Uchwala nr 265/2010 z dn. 27.05.2010 r. w sprawie ustalenia rocznego wymiaru zajęć dydaktycznych ora
Koło Naukowe Mechaniki Budowli ^
27.05.2010 10    i    i 5
27.05.2010 jest zabroniona. W ogóle najlepiej unikać jakichkolwiek operacji na rejestrach segmentowy
27.05.2010 kompilator. Miłego eksperymentowania. Na świecie jest 10 rodzajów ludzi: ci, którzy
27.05.2010 które takie instrukcje będą udawać (już są takie napisane). Ale nie ma nic uniwersalnego.

więcej podobnych podstron