Hallo,
ich habe mich über das Wochenende daran gesetzt, den
Know How Computer vom Computerclub (muss man nicht kennen, ist schon etwas älter

) nachzuprogrammieren; natürlich besser und mit mehr Funktionen
Zitat von der Seite:
Zitat:
Wenn Sie später in die Assemblersprache einsteigen wollen, so ist der Knowhow – Computer das richtige Lernmittel, um Denkstrukturen in Maschinensprache zu trainieren.
Es wird eine einfache Assembler-Ähnliche Programmiersprache und die Zugriffe auf Speicher-Register simuliert.
Visualisiert wird das ganze durch "Streichhölzer", die in die verschiedenen Register gefüllt werden.
Die Befehle
Befehl | Bedeutung | Beschreibung
jmp | Jump | Setzt den Programmzeiger auf die angegebene Position.
isz | Is Zero | Prüft, ob das angegebene Register null ist. Wenn ja springt der Programmzeiger zwei Schritte weiter, ansonsten nur einen.
inc | Increment | Erhöht das angegebene Register um 1.
dec | Decrement | Verringert das angegebene Register um 1.
stp | Stop | Beendet das Programm.
Funktionen- Importieren des alten Dateiformats vom Original-Programm
- Anzeigen des Programmzeigers mit Pfeil
- Steuern des Programms (Einzelschritte/Kompletter durchlauf)
- Steuern der Ablaufgeschwindigkeit (zum leichteren Verstehen der Programme)
- Zeilen im Programm hinzufügen/löschen mit automatischer Neuberechnungen der jmp-Adressen
- Kommentieren der Programme
- Anzahl der Register festlegen
- Datentyp der Register festlegen
- Byte (8 bit, unsigned ~ 0 - 255)
- ShortInt (8 bit, signed ~ -127 - 127)
- Word (16 bit, unsigned ~ 0 - 65535)
- SmallInt (16 bit, signed ~ -32768 - 32767)
- Verknüpfen mit den Programmdateien (neues und/oder altes Format)
Beispiel-Programm (Kopiert Register 1 nach Register 2)
Code:
01: isz 2 //Ist Register 2 null?
02: jmp 4 //Nein? Dann zu Zeile 4 springen
03: jmp 7 //Ja? Dann zu Zeile 7 springen
04:
dec 2 //Register 2 um 1 verringern
05: jmp 1 //Nach Zeile 1 springen
06:
07: isz 1 //Ist Register 1 null?
08: jmp 10 //Nein? Dann zu Zeile 10 springen
09: jmp 15 //Ja? Dann zu Zeile 15 springen
10:
dec 1 //Register 1 um 1 verringern
11: inc 2 //Register 2 um 1 erhoehen
12: inc 3 //Register 3 um 1 erhoehen
13: jmp 7 //Zurueck zu Zeile 7 springen
14:
15: isz 3 //Ist Register 3 null?
16: jmp 18 //Nein? Dann zu Zeile 18 springen
17: stp //Ja? Dann ist das Programm fertig => STOP
18:
dec 3 //Register 3 um 1 verringern
19: inc 1 //Register 1 um 1 erhoehen
20: jmp 15 //Zurueck zu Zeile 15 springen
Erklaerung:
1-5: R2 := 0
7-13: R1 nach R2 und R3 kopieren, R1 wird geleert
15-20: R3 nach R1 verschieben
Links
>
Programm-Beschreibung, mehr Screenshots und Changelog
So, nun hoffe ich, dass jemand was mit dem Programm anfangen kann...
Chris