Ein Prozessor versteht nur Maschinencode: Zahlen, die Befehle darstellen. Assembler ist die lesbare Schreibweise dafür. Jede Zeile entspricht fast immer genau einem Prozessorbefehl, zum Beispiel mov (kopieren) oder add (addieren).
Hier lernst du x86-64 mit der NASM-Syntax, wie sie in den meisten PCs und Servern läuft. Ein Programm besteht aus Abschnitten (Sections): .text enthält den Code, .data feste Daten.
section .data
text db "Hallo, Welt!", 10
laenge equ $ - text
section .text
global _start
_start:
mov rax, 1 ; Systemaufruf write
mov rdi, 1 ; Ziel: Bildschirm (stdout)
mov rsi, text ; Adresse des Textes
mov rdx, laenge ; Anzahl der Zeichen
syscall
mov rax, 60 ; Systemaufruf exit
xor rdi, rdi ; Rückgabewert 0
syscallSo führst du den Code aus: Datei hallo.asm speichern, mit nasm -f elf64 hallo.asm übersetzen und mit ld hallo.o -o hallo binden, dann ./hallo (Linux, NASM-Syntax).
Merke
- Eine Zeile entspricht meist einem Prozessorbefehl
.textist der Code,.datasind Daten- Kommentare beginnen mit
;
Aufgabe
Ändere den Text und übersetze das Programm neu.