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