Beispiele
---------

Die Beispiele koennen mit dem ACME-Assembler uebersetzt werden.


Werte und Variablen laden und speichern:

 z.B. a := 5; b := a;

   +initstp
   +lit 5
   +sto VAR_A
   +lod VAR_A
   +sto VAR_B
   rts

 VAR_A
   !wo 0
 VAR_B
   !wo 0


Arithmetik:

 z.B. a := 5 * (b + 10);

   +initstp
   +lod var_b
   +lit 10
   jsr add     ; b + 10
   +lit 5
   jsr mul     ; * 5
   +sto var_a  ; speichern in a
   rts

 VAR_A
   !wo 0
 VAR_B
   !wo 0


Bedingte Verzweigung:

 z.B. if a = 5 then b := 10 else b := 0;

   +initstp
   +lod VAR_A
   +lit 5
   jsr lss     ; a < 5
   +jpc LBL1   ; Sprung bei False
   +lit 10
   +sto VAR_B  ; b := 10
   jmp LBL2
 LBL1:
   +lit 0
   +sto VAR_B  ; b := 0
 LBL2:
   rts

 VAR_A
   !wo 0
 VAR_B
   !wo 0


Schleifen und Ausgabe von Werten:

 z.B. a := 1;
      while a < 11 do
        begin
          writeln a * 5; a := a + 1;
        end;

   +initstp
   +lit 1
   +sto VAR_A
 LBL1:
   +lod VAR_A
   +lit 11
   jsr lss     ; a < 11
   +jpc LBL2   ; Sprung bei False
   +lod VAR_A
   +lit 5
   jsr mul     ; a * 5
   jsr outdec  ; als Zahlenwert ausgeben
   +lit 13
   jsr outchr  ; Zeilenumbruch ausgeben
   +lod VAR_A
   jsr incr
   +sto VAR_A  ; a := a + 1
   jmp LBL1
 LBL2:
   rts

 VAR_A
   !wo 0


Zugriff auf Basic-Integervariablen:

 z.B. BC% = A% * 15

   +initstp
   +litv 'A', 0   ; A% laden
   jsr lodint
   +lit 15        ; * 15
   jsr mul
   +litv 'B', 'C' ; als BC% speichern
   jsr stoint
   rts