Zum Inhalt springen

Liste von Hallo-Welt-Programmen/Assembler

aus Wikipedia, der freien Enzyklopädie

Diese Liste von Hallo-Welt-Programmen von Assemblersprachen enthält kleine Computerprogramme, die auf einfache Weise zeigen, welche Anweisungen für ein vollständiges Programm in einer Programmiersprache benötigt werden.

Zweck

Aufgaben dieser Hallo-Welt-Programme ist, den Text Hallo Welt! in einem einfachen Programm auszugeben. Weitere Programme sind verfügbar:

x86-CPU

{{#if: X86-Prozessor|{{#ifexist:X86-Prozessor|

|{{#if: Prozessor|{{#ifexist:Prozessor|

→ Haupt{{#if:|seite|artikel}}: [[Prozessor{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

DOS (COM-Datei), MASM, TASM

{{#if: Disk Operating System|{{#ifexist:Disk Operating System|

|{{#if: Microsoft Macro Assembler|{{#ifexist:Microsoft Macro Assembler|

→ Haupt{{#if:|seite|artikel}}: [[Microsoft Macro Assembler{{#if: MASM||MASM}}]]{{#if: Turbo Assembler|{{#ifexist:Turbo Assembler| und [[Turbo Assembler{{#if: TASM||TASM}}]]|}}|}}

|{{#if: Turbo Assembler|{{#ifexist:Turbo Assembler|

→ Haupt{{#if:|seite|artikel}}: [[Turbo Assembler{{#if: TASM||TASM}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

{{#invoke:Vorlage:Siehe auch|f}} <syntaxhighlight lang="asm"> .MODEL Tiny .CONST

HW     DB      "Hallo Welt!$"

.CODE .org 100h start:

 MOV DX, OFFSET DGROUP:HW
 MOV AH, 09H
 INT 21H
 RET

end start </syntaxhighlight>

DOS (EXE-Datei), MASM, TASM

{{#invoke:Vorlage:Siehe auch|f}} <syntaxhighlight lang="asm"> .MODEL Small .STACK 100h .CONST

 HW      DB      "Hallo Welt!$"

.CODE

start:

 MOV AX,@data
 MOV DS,AX
 MOV DX, OFFSET DGROUP:HW
 MOV AH, 09H
 INT 21H
 MOV AH, 4Ch
 INT 21H

end start </syntaxhighlight>

DOS, FASM

{{#if: flat assembler|{{#ifexist:flat assembler|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm"> FASM example of writing 16-bit DOS .COM program

Kompilieren
"FASM HELLO.ASM HELLO.COM"
 org  $100
 use16
 mov  ah,9
 mov  dx,hello
 int  $21    ; Textausgabe
 mov  ah,$4C
 int  $21    ; Programm beenden

hello db 'Hallo Welt !!!$' </syntaxhighlight>

Windows, FASM

<syntaxhighlight lang="asm">

Ausgabe in Messagebox (ohne Titel) mit OK-Button

include 'win32ax.inc'

.code

 start:
       invoke  MessageBox,HWND_DESKTOP,text,"",MB_OK
       invoke  ExitProcess,0

.end start

.data

text: db "Hallo Welt!",0 </syntaxhighlight>

Linux

{{#if: Linux|{{#ifexist:Linux|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

AT&T-Syntax

<syntaxhighlight lang="asm">

  1. Kompilieren mit
  2. "as -o hallo.o hallo.s; ld -o hallo hallo.o"
   .section .data

s: .string "Hallo Welt!\n"

   .section .text
   .globl _start

_start:

   movl $4,%eax      # Syscall-ID 4 (= sys_write)
   movl $1,%ebx      # Ausgabe-Dateideskriptor stdout (= 1)
   movl $s,%ecx      # Adresse des ersten Zeichens der Zeichenkette
   movl $12,%edx     # Länge der Zeichenkette (12 Zeichen)
   int $0x80         # Softwareinterrupt 0x80, um Syscall (write(1,s,12)) auszuführen
   movl $1,%eax      # Syscall-ID 1 (= sys_exit)
   movl $0,%ebx      # Rückgabewert 0 (= alles in Ordnung)
   int $0x80         # Softwareinterrupt 0x80 um Syscall (exit(0)) auszuführen

</syntaxhighlight>

Intel-Syntax

<syntaxhighlight lang="asm">

Befehl zum Assemblen
nasm -felf hello.s
&& ld -o hello hello.o
   section data

hello db "Hallo Welt!",0xa len equ $-hello

   section text
   global  _start

_start:

   mov eax, 4 ; write(stdout, hello, len)
   mov ebx, 1
   mov ecx, hello
   mov edx, len
   int 80h
   mov eax, 1 ; exit(0)
   mov ebx, 0
   int 80h

</syntaxhighlight>

x86-CPU, FreeBSD, Intel-Syntax

{{#if: FreeBSD|{{#ifexist:FreeBSD|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

 section .data
   hello_world db 'Hallo Welt!', 0x0a
   hello_world_len equ $ - hello_world
 section .text
   align 4
   sys:
     int 0x80
     ret
   global _start
   _start:
     push hello_world_len
     push hello_world
     push 1
     mov eax, 4
     call sys
     push 0
     mov eax, 1
     call sys

</syntaxhighlight>

PowerPC-CPU, Linux

{{#if: PowerPC|{{#ifexist:PowerPC|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

  # Kompilieren mit "gcc -nostdlib -s hallo.s"
      .section    .rodata
      .align 2
  .s:
      .string "Hallo Welt!\n"
      .section    ".text"
      .align 2
      .globl _start
  _start:
      li 0,4          # SYS_write
      li 3,1          # fd = 1 (stdout)
      lis 4,.s@ha     # buf = .s
      la 4,.s@l(4)
      li 5,12         # len = 12
      sc              # syscall
      li 0,1          # SYS_exit
      li 3,0          # returncode = 0
      sc              # syscall

</syntaxhighlight>

MMIX, MMIXAL

{{#if: MMIX|{{#ifexist:MMIX|

|{{#if: MMIXAL|{{#ifexist:MMIXAL|

→ Haupt{{#if:|seite|artikel}}: [[MMIXAL{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm" highlight="4">

string  BYTE  "Hallo Welt!",#a,0  % auszugebende Zeichenkette (#a ist ein Zeilenumbruch,
                                  % 0 schließt die Zeichenkette ab)
Main    GETA  $255,string         % Adresse der Zeichenkette in Register $255 ablegen
        TRAP  0,Fputs,StdOut      % Zeichenkette, auf die mit Register $255
                                  % verwiesen wird, nach StdOut ausgeben (Systemaufruf)
        TRAP  0,Halt,0            % Prozess beenden

</syntaxhighlight>

680x0-CPU, Amiga

{{#if: Motorola 68000|{{#ifexist:Motorola 68000|

|{{#if: Amiga|{{#ifexist:Amiga|

→ Haupt{{#if:|seite|artikel}}: [[Amiga{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

          ; Getestet mit ASM-One V1.01
          move.l  4.w,a6
          lea     dosn(pc),a1
          jsr     -408(a6)        ; OldOpenLibrary
          move.l  d0,a6
          lea     s(pc),a0
          move.l  a0,d1
          jsr     -948(a6)        ; PutStr
          move.l  a6,a1
          move.l  4.w,a6
          jsr     -414(a6)        ; CloseLibrary
          moveq   #0,d0
          rts
  dosn:   dc.b    "dos.library",0
  s:      dc.b    "Hallo Welt!",10,0

</syntaxhighlight>

PA-RISC-CPU, HP-UX

{{#if: PA-RISC|{{#ifexist:PA-RISC|

|{{#if: HP-UX|{{#ifexist:HP-UX|

→ Haupt{{#if:|seite|artikel}}: [[HP-UX{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

  ; Kompiliert und getestet mit
  ; "as hallo.s ; ld hallo.o /usr/ccs/lib/crt0"
  ; unter HP-UX 11.0 auf einer HP9000/L2000
          .LEVEL 1.1
          .SPACE $TEXT$
          .SUBSPA $LIT$,ACCESS=0x2c
  s       .STRING "Hallo Welt!\x0a"
          .SPACE $TEXT$
          .SUBSPA $CODE$,ACCESS=0x2c,CODE_ONLY
          .EXPORT _start,ENTRY,PRIV_LEV=3
          .EXPORT __errno
          .EXPORT __sys_atexit
  _start
  __errno
  __sys_atexit
          ldil    L'0xC0000000,%r18
          ldi     4,%r22                  ; SYS_write
          ldi     1,%r26                  ; fd = stdout
          ldil    LR's,%r4
          ldo     RR's(%r4),%r25          ; buf = s
          be,l    4(%sr7,%r18)            ; Syscall
          ldi     12,%r24                 ; len = 12 (Branch delay slot)
          ldi     1,%r22                  ; SYS_exit
          be,l    4(%sr7,%r18)            ; Syscall
          ldi     0,%r26                  ; returncode = 0 (Branch delay slot)

</syntaxhighlight>

SPARC-CPU, Linux

{{#invoke:Vorlage:Siehe auch|f}} <syntaxhighlight lang="asm">

Kompilieren mit "as -o hallo.o hallo.s; ld -o hallo hallo.o"

.section .data

hello_str:

   .asciz "Hallo Welt!\n"
   .align 4                ; Speicher muss aligned sein, damit wir später mit ld darauf zugreifen können

hello_str_len:

   .word . - hello_str     ; Länge der Zeichenkette (12 Zeichen)

.section .text

.global _start _start:

   set 4, %g1              ; Syscall-ID 4 (= __NR_write)
   set 1, %o0              ; Ausgabe-Filedeskriptor STDOUT (= 1)
   set hello_str, %o1      ; Adresse des ersten Zeichens der Zeichenkette
   set hello_str_len, %l0  ; Die Stack-Adresse, an der die Länge der Zeichenkette steht, in local 0 laden
   ld [%l0], %o2           ; Den Wert auf den local 0 zeigt in out 2 laden
   t 0x110                 ; Softwareinterrupt 0x110 um Syscall (write(1,hello_str,hello_str_len))auszuführen
   set 1, %g1              ; Syscall-ID 1 (= __NR_exit)
   set 0, %o0              ; Rückgabewert 0 (= alles ok)
   t 0x110                 ; Softwareinterrupt 0x110 um Syscall (exit(0)) auszuführen

</syntaxhighlight>

Assemblersprache (Jasmin)

{{#if: Jasmin (Programmiersprache)|{{#ifexist:Jasmin (Programmiersprache)|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

HelloWorld.j

.bytecode 50.0 .source HelloWorld.java .class public HelloWorld .super java/lang/Object

.method public <init>()V

 .limit stack 1
 .limit locals 1
 aload_0
 invokespecial java/lang/Object/<init>()V
 return

.end method

.method public static main([Ljava/lang/String;)V

 .limit stack 2
 .limit locals 1
 getstatic java/lang/System/out Ljava/io/PrintStream;
 ldc "Hallo Welt!"
 invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
 return

.end method </syntaxhighlight>

MIPS-32 mit erweitertem Befehlssatz

{{#invoke:Vorlage:Siehe auch|f}} <syntaxhighlight lang="asm">

  1. Emulation mit 'spim -f hw.asm'

.data helloworld: .asciiz "Hallo Welt!\n" # 'z' in asciiz für Null-terminierter-string

.text main: la $a0, helloworld # lade Adresse von helloworld li $v0, 4 # print_string syscall

li $v0, 10 # Betriebssystem exit-Routine syscall </syntaxhighlight>

Arm-Armv7l, Linux

{{#if: Arm-Architektur#Armv7 (2004)|{{#ifexist:Arm-Architektur#Armv7 (2004)|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm"> .text

.global _start

_start:

       /* print */
       mov     r2, $11
       ldr     r1, =hw
       mov     r0, $1
       mov     r7, $4
       svc     $0
       /* exit */
       sub     r0, r0, r0
       mov     r7, $1
       svc     $0

.data

hw: .ascii "Hallo Welt\n" </syntaxhighlight>

TAS{{#invoke:Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}} (Telefunken-Assembler-Sprache)

{{#if: TR 440|{{#ifexist:TR 440|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

TAS

--- Hallo Welt am TR440 --
HALLO.=SEGM,
START HALLO, ALARM CIAO, XBASIS INDIZES, UNTPR 7, VORBES (1,0) -- Einzelheiten zum Programmstart --
INDIZES=ASP 256/G -- Indexspeicher ist Teil des Arbeitsspeichers --
VB616=CIAO/AG, 3/H, TXT/A, 2/H, 0 -- Einzelheiten für SSR 6 16 --
TXT=''*021Hello World'',
XBA VB616, SSR 6 16 -- Text ausgeben --
CIAO=      SSR 0 12 -- Programmlauf beenden --
ENDE,
  • Die Sprache ist weitgehend formatfrei: Informationseinheiten (Befehle und Pseudobefehle) werden durch Kommata oder Kommentare begrenzt.
  • Kommentare werden zwischen doppelte Minuszeichen eingeschlossen.
  • Ein Kommentar, der mit drei Minuszeichen beginnt, wirkt als Seiten-Kopfzeile im Assembler-Protokoll.
  • Das Betriebssystem benötigt zum Programmstart fünf Angaben: die Start-Adresse, die Alarm-Adresse (Fortsetzung des Programms nach einem Alarm), Anfangswert der Register BXB und BU, Inhalt des freien Arbeitsspeichers.
  •  Systemdienste werden mit dem SSR-Befehl aufgerufen.
  • Konstanten (wie VB616) und Variable (wie INDIZES) werden im Kompilat automatisch getrennt von den Befehlen abgelegt; daher bezeichnet HALLO den XBA-Befehl (den ersten Befehl in der vorliegenden Quelle).

 TASR

--- Hallo Welt am TR440 --
HALLO.=SEGM,
R&DRUCKETEXT (''Hello World!'') -- Text ausgeben --
R&ENDE -- Programmlauf beenden --
ENDE,
  • TASR bietet einen Rahmen für TAS-Programme, die im Normalmodus ablaufen, und stellt Makros für häufig benötigte Systemdienste zur Verfügung.
  • Die 5 Angaben zum Programmstart entfallen, da sie im Rahmenprogramm enthalten sind.
  •  Alle in diesem Beispiel benötigten Systemdienste können durch Makro-Aufrufe erledigt werden.

IBM-Mainframe-ASSEMBLER

{{#if: Z Systems#Die CPU|{{#ifexist:Z Systems#Die CPU|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm"> HALLOW CSECT

  • ASSEMBLER-PROGRAMM FUER IBM-MAINFRAME MIT
  • STANDARD-REGISTERSICHERUNG, LAUFFAEHIG UNTER
  • DEN GAENGIGEN KLASSISCHEN MAINFRAME-BETRIEBSSYSTEMEN
  • (ALSO JEDENFALLS Z/OS UND Z/VM UND DEREN VORLAEUFERN)
        STM   14,12,12(13)      REGISTER SICHERN
        LR    12,15             ENTRYPOINT KOPIEREN NACH REG 12
        USING HALLOW,12         BASISADR = ENTRY POINT
        LA    2,SAVEAREA        NEUE SAVE AREA EINSTELLEN
        ST    2,8(13)           VORWAERTSVERKETTUNG SAVE AREAS
        ST    13,4(2)           RUECKWAERTSVERKETTUNG SAVE AREAS
        LR    13,2              NEUE SAVE AREA NACH REG 13
        OPEN  (AUSGABE,OUTPUT)  DD:SYSPRINT AUFMACHEN
        PUT   AUSGABE,BUFFER    AUSGABE: HALLO WELT!
        CLOSE AUSGABE           DD:SYSPRINT ZUMACHEN
        L     13,4(13)          ALTE SAVE AREA WIEDER EINSTELLEN
        LM    14,12,12(13)      REGISTER ZURUECKLADEN
        XR    15,15             RETCODE AUF NULL
        BR    14                RUECKSPRUNG

SAVEAREA DS 18F SAVE AREA

AUSGABE DCB DSORG=PS,MACRF=PM,DDNAME=SYSPRINT,RECFM=FBA,LRECL=133

BUFFER DC CL133' HALLO WELT!'

        END   HALLOW

</syntaxhighlight>

Der Programmcode wird in festgelegten Spaltengrenzen erfasst.

  • Spalte 1–8 = Namensfeld (Feldbezeichnung oder Sprungziel)
  • Stern in Spalte 1 = Kommentarzeile (neuerdings ist es auch möglich, Zeilen komplett leer zu lassen)
  • in Spalte 10 beginnend = Befehlscode
  • in Spalte 16 beginnend = Operanden, dahinter (nach Leerstelle) optional beliebige Kommentare
  • Spalte 72 = Fortsetzung in der nächsten Zeile, wenn hier ein Zeichen ungleich Blank steht (nötig für lange Literale und Makros mit vielen Parametern)
  • die Fortsetzung erfolgt ggf. in der nächsten Zeile immer in der Spalte 16
  • Spalte 73–80 = Kennung oder lfd. Nummerierung (optional)

Tatsächlich sind die Spaltengrenzen heute etwas flexibler; z. B. gibt es heute Namen mit mehr als 8 Zeichen; dann beginnen die Befehlscodes nicht in Spalte 10, sondern später. Genauso können die Parameter auch nach Spalte 16 beginnen. Die Regeln sind wie folgt:

  • Ein Name muss immer in Spalte 1 beginnen, wenn vorhanden
  • wenn kein Name vorhanden ist, kommt der Befehlscode frühestens in Spalte 2, ansonsten muss er vom Namensfeld durch mindestens ein Blank abgetrennt sein
  • genauso bei den Operanden, sie müssen durch mindestens ein Blank vom Befehlscode abgetrennt sein
  • und die Kommentare müssen durch mindestens ein Blank von den Operanden abgetrennt sein
  • Blanks in Hochkommas zählen dabei nicht (siehe oben die Blanks im String ' HALLO WELT!' in der mit BUFFER markierten Anweisung)
  • wenn ein Befehl keine Operanden braucht, kann man ersatzweise ein einfaches Komma codieren

6502-CPU, C64

{{#if: C64|{{#ifexist:C64|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm">

Hello World for 6502 CPU (C64)
Assembler used
win2c64
   LDY #$00      ;init loop counter

L0

   LDA L1,Y      ;load a byte of the text
   BEQ L2        ;if zero -> end
   JSR $FFD2     ;call CHROUT
   INY           ;inc loop counter
   JMP L0        ;thanks to paul nicholls

L1

   .byte "hello world",0

L2

   RTS

</syntaxhighlight>

8048-CPU, Philips G7000

{{#if: Intel 8048|{{#ifexist:Intel 8048|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm"> start

       call    gfxoff              ; switch the graphics off
       mov     r0,#vdc_char0       ; start char
       mov     r3,#20h             ; x-position
       mov     r4,#20h             ; y-position
       mov     r2,#0Bh             ; length
       mov     r1,#hellostr & 0FFh ; the string to print
                                   ; must be in the same page

loop mov a,r1  ; get pointer

       movp    a,@a                ; get char
       mov     r5,a                ; into to right register
       inc     r1                  ; advance pointer
       mov     r6,#col_chr_white   ; colour
       call    printchar           ; print it
       djnz    r2,loop             ; do it again
       call    gfxon               ; lets see what is written

stop jmp stop  ; Thats all hellostr db 1Dh, 12h, 0Eh, 0Eh, 17h, 0Ch

        db     11h, 17h, 13h, 0Eh, 1Ah

</syntaxhighlight>

Z80-CPU, Amstrad CPC

{{#if: Zilog Z80 8048|{{#ifexist:Zilog Z80 8048|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="asm" line="1">

ld hl,text  ; address of text into hl loop: ld a,(hl)  ; load akku by content at address in hl cp 0  ; compare to zero ret z  ; return if zero call &bb5a  ; otherwise print char in akku inc hl  ; hl=hl+1 jr loop  ; relative jump to loop text: db "Hello World!",0  ; text with 0 as end mark </syntaxhighlight>