Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
forth:fgforth:assembler [2013/04/30 18:48] – volkerp | forth:fgforth:assembler [2013/05/01 13:26] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 84: | Zeile 84: | ||
| JRNZ #-5 | -5 # JRNZ, | | | JRNZ #-5 | -5 # JRNZ, | | ||
| RES 0,(IY+4) | 0 4 IY # RES, | | | RES 0,(IY+4) | 0 4 IY # RES, | | ||
+ | |||
Hier waren nun hoffentlich alle Varianten dabei. | Hier waren nun hoffentlich alle Varianten dabei. | ||
Zeile 128: | Zeile 129: | ||
Thomas Beierlein, 1990 | Thomas Beierlein, 1990 | ||
- | ====== Reassembliert ====== | + | ===== Beispiel |
- | Ich habe obiges Beispiel getestet. Dabei ist mir aufgefallen, | + | Ich habe obiges Beispiel getestet. Dabei ist mir aufgefallen, |
Folgender Code wird durch den Assembler erzeugt. Man beachte die Umsetzung der Schleifenkonstrukte. | Folgender Code wird durch den Assembler erzeugt. Man beachte die Umsetzung der Schleifenkonstrukte. | ||
Zeile 148: | Zeile 149: | ||
4699 0497 DOVAR | 4699 0497 DOVAR | ||
469B 21 45 00 | 469B 21 45 00 | ||
- | 469E 7C | + | 469E M1 BEGIN, |
- | 469F B5 | + | 469E 7C |
+ | 469F B5 | ||
46A0 CA A7 46 | 46A0 CA A7 46 | ||
- | 46A3 2B | + | 46A3 2B |
46A4 C3 9E 46 | 46A4 C3 9E 46 | ||
46A7 C9 M2 RET RET, | 46A7 C9 M2 RET RET, | ||
Zeile 159: | Zeile 161: | ||
46AB ' | 46AB ' | ||
46B4 $+2 CODE | 46B4 $+2 CODE | ||
- | 46B6 DB 23 M3 IN A, | + | 46B6 M3 BEGIN, |
- | 46B8 CB 47 BIT | + | 46B6 DB 23 IN A, |
+ | 46B8 CB 47 BIT | ||
46BA CA B6 46 | 46BA CA B6 46 | ||
46BD CD 9B 46 | 46BD CD 9B 46 | ||
Zeile 166: | Zeile 169: | ||
46C2 CB 4F BIT | 46C2 CB 4F BIT | ||
46C4 C2 CB 46 | 46C4 C2 CB 46 | ||
- | 46C7 B7 | + | 46C7 B7 |
46C8 C3 CC 46 | 46C8 C3 CC 46 | ||
- | 46CB 37 M4 SCF SCF, | + | 46CB 37 M4 SCF SCF, |
- | 46CC 3A 90 46 | + | 46CC M5 THEN, |
+ | 46CC 3A 90 46 | ||
46CF 17 | 46CF 17 | ||
46D0 32 90 46 | 46D0 32 90 46 | ||
Zeile 175: | Zeile 179: | ||
END-CODE | END-CODE | ||
</ | </ | ||
+ | |||
+ | ===== Strukturoperatoren ===== | ||
+ | |||
+ | Die Strukturoperatoren sind forth-gewohnt zu verwenden: | ||
+ | |||
+ | flag 0=, CY, PE oder 0< | ||
+ | |||
+ | IF...ELSE...THEN | ||
+ | |||
+ | < | ||
+ | flag [NOT] IF, ; JP /flag M1 | ||
+ | ... ; ... | ||
+ | [ELSE, | ||
+ | ... ; M1: ... | ||
+ | THEN, ; M2: | ||
+ | </ | ||
+ | |||
+ | |||
+ | BEGIN ...flag UNTIL | ||
+ | |||
+ | < | ||
+ | BEGIN, | ||
+ | ... ; ... | ||
+ | flag [NOT] UNTIL, | ||
+ | </ | ||
+ | |||
+ | BEGIN...AGAIN | ||
+ | |||
+ | < | ||
+ | BEGIN, | ||
+ | ... ; ... | ||
+ | AGAIN, | ||
+ | </ | ||
+ | |||
+ | BEGIN...flag | ||
+ | |||
+ | < | ||
+ | BEGIN, | ||
+ | ... ; ... | ||
+ | flag [NOT] WHILE, | ||
+ | ... ; ... | ||
+ | REPEAT, | ||
+ | ; M2: | ||
+ | </ | ||
+ | |||
+ | ===== Literatur ===== | ||
+ | |||
+ | Der Assembler ist auch in "Vack, Gert Ulrich: Programmieren mit Forth. VEB Verlag Technik Berlin, 1990" Seite 263-271 beschrieben. | ||