Das erste Programm "Hello World": Unterschied zwischen den Versionen

Aus C und Assembler mit Raspberry
Die Seite wurde neu angelegt: „ <syntaxhighlight lang="asm"> .global _start _start: mov x0,#1 ldr x1,=helloworld mov x2,#13 mov x8,#64 svc 0 mov x0,#0 mov x8,#93 svc 0 .data helloworld: .ascii "Hello World!\n" helloworldlen: .word .-helloworld </syntaxhighlight> <syntaxhighlight lang="shell"> as -o HelloWorld.o HelloWorld.s ld -o HelloWorld HelloWorld.o </syntaxhighlight>“
 
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Nach der ersten Theorie wollen wir endlich mal etwas Programmieren. In den meisten Programmiersprachen wird mit einem einfachen Programm begonnen, welches oft einfach auf den Bildschirm ein "Hello World" ausgibt. Auch hier machen wir dies.
<syntaxhighlight lang="asm">
.global _start //Definition der Einsprungsadresse als GLOBAL
_start:        //Label, für den Start des Programms
    mov x0,#1  //Setze das Register x0 auf 1 (StdOutput)
    ldr x1,=helloworld //In x1 ein Zeiger auf den String
    mov x2,#13 //x2 wird die Länge des Strings angegeben
    mov x8,#64 //Systemcall für Output
    svc 0 //Führe den Systemcall aus
    mov x0,#0 //x0 auf 0: Kein Fehler
    mov x8,#93 //Systemcall für Exit
    svc 0 //Führe den Systemcall aus


<syntaxhighlight lang="asm">
.data //Definition des Datenbereichs
.global _start
helloworld: //Label für den String, der angezeigt werden soll
_start:
    .ascii "Hello World!\n" //Der String selbst
mov x0,#1
ldr x1,=helloworld
mov x2,#13
mov x8,#64
svc 0
mov x0,#0
mov x8,#93
svc 0
.data
helloworld:
.ascii "Hello World!\n"
helloworldlen:
    .word .-helloworld
</syntaxhighlight>
</syntaxhighlight>


Zeile 22: Zeile 21:
as -o HelloWorld.o HelloWorld.s
as -o HelloWorld.o HelloWorld.s
ld -o HelloWorld HelloWorld.o
ld -o HelloWorld HelloWorld.o
./HelloWorld
</syntaxhighlight>
</syntaxhighlight>

Version vom 20. November 2024, 11:12 Uhr

Nach der ersten Theorie wollen wir endlich mal etwas Programmieren. In den meisten Programmiersprachen wird mit einem einfachen Programm begonnen, welches oft einfach auf den Bildschirm ein "Hello World" ausgibt. Auch hier machen wir dies.

.global _start //Definition der Einsprungsadresse als GLOBAL 
_start:        //Label, für den Start des Programms
    mov x0,#1  //Setze das Register x0 auf 1 (StdOutput)
    ldr x1,=helloworld //In x1 ein Zeiger auf den String
    mov x2,#13 //x2 wird die Länge des Strings angegeben
    mov x8,#64 //Systemcall für Output
    svc 0 //Führe den Systemcall aus
    mov x0,#0 //x0 auf 0: Kein Fehler
    mov x8,#93 //Systemcall für Exit
    svc 0 //Führe den Systemcall aus

.data //Definition des Datenbereichs
helloworld: //Label für den String, der angezeigt werden soll
    .ascii "Hello World!\n" //Der String selbst


as -o HelloWorld.o HelloWorld.s
ld -o HelloWorld HelloWorld.o
./HelloWorld