Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:techinf:assembler:hallowelt:start [22.07.2021 11:19] – sbel | faecher:informatik:oberstufe:techinf:assembler:hallowelt:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Hallo Welt! ====== | ||
- | |||
- | Traditionell betrachtet man bei der Annhäherung an eine neue " | ||
- | |||
- | Damit die Codebeispiele funktionieren müssen die folgenden Voraussetzungen erfüllt sein: | ||
- | |||
- | * Linux als BS | ||
- | * nasm als Assembler muss installiert sein | ||
- | |||
- | Hier also ein Hallo Welt für mit Assemblerbefehlen für Linux: | ||
- | |||
- | <code asm> | ||
- | ; Hello World in Assembler | ||
- | ; | ||
- | ; Uebersetzen: | ||
- | ; nasm -f elf hello.asm | ||
- | ; ld -m elf_i386 -s -o hello hello.o | ||
- | |||
- | ; Speichervariablen | ||
- | SECTION .data | ||
- | msg: db "Hello World!", | ||
- | ; 10 - Newline | ||
- | |||
- | len: equ $-msg ; Berechnung der Laenge der | ||
- | ; Speichervariablen msg | ||
- | ; benoetigt für die Ausgabe | ||
- | ; Im Beispiel 13 | ||
- | |||
- | global _start ; Label fuer den Programmstart | ||
- | |||
- | SECTION .text | ||
- | |||
- | _start: | ||
- | ; Initialisieren und ausfuehren des | ||
- | ; Linux syscalls fuer Ausgabe an STDOUT | ||
- | mov eax,4 ; Syscall-ID (4 = sys_write) | ||
- | mov ebx,1 ; Ausgabe-Descriptor (1 = stdout) | ||
- | mov ecx, | ||
- | mov edx, | ||
- | int 80h ; Softwareinterrupt 0x80, um den Syscall | ||
- | ; (write(1, | ||
- | ; Programm beenden | ||
- | mov eax,1 ; Syscall-ID (1 = exit) | ||
- | mov ebx,0 ; Rueckgabewert 0 (Alles in Ordnung) | ||
- | int 80h ; Softwareinterrupt 0x80, um den Syscall | ||
- | ; auszuführen | ||
- | |||
- | </ | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | Kopiere den Code in eine Text-Datei ('' | ||
- | |||
- | nasm -f elf hello.asm | ||
- | |||
- | Du erhältst eine Datei '' | ||
- | |||
- | ld -m elf_i386 -s -o hello hello.o | ||
- | |||
- | Die Ausgabe dieses Befehls ist eine ausführbare Datei '' | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | * Verändere die Zeile '' | ||
- | * Teste mit '' | ||
- | * Gib nur " | ||