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)
Screenshot
Beispiel-Programm (Kopiert Register 1 nach Register 2)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| 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
>
Direkt-Download [Version 1.0 RC3] (1.06 MB) <- Einige Beispielprogramme sind schon mit dabei
>
Programm-Beschreibung, mehr Screenshots und Changelog
So, nun hoffe ich, dass jemand was mit dem Programm anfangen kann...
Chris