i

Programme ändern sich selbst

Selbstmodifikation von Programmen[1]

In einem der vorhergehenden Abschnitte haben wir gesagt, dass John von Neumann die Idee hatte, die Programme im Arbeitsspeicher abzulegen, statt direkt von einem externen Datenträger auszuführen, wie das etwa beim deutschen Rechner ZUSE Z3 noch der Fall war. Unabhängig davon, dass der Arbeitsspeicher eines Rechners meist sehr schnell ist, ergeben sich daraus noch ganz andere Möglichkeiten.


Aufgabe 1: Programm-Analyse

Überlege zunächst theoretisch, was das folgende Programm tut und notiere kurz Deine Überlegungen. Teste dann am Simulator, ob die Ergebnisse des Simulationslauf zu Deinen Überlegungen passen.
Beobachte vor allem, was im Laufe der Ausführung mit der Speicherstelle 001 geschieht.

000: 	TAKE    007
001: 	SAVE    100
002: 	INC     001
003: 	DEC     008
004: 	TST     008
005: 	JMP     000
006:    HLT     000
007:            042
008:            013    

Aufgabe 2: Reihenweise Zahlen

a)
Ändere das Programm so ab, dass es nicht immer die gleiche Zahl in den Speicher schreibt, sondern fortlaufende Zahlen, also etwa 42, 43, 44, usw.
b)
Führe eine weitere Änderung durch, und zwar so, dass die Zahlen nur in die geraden Speicherstellen ab Speicherstelle 100 geschrieben werden, also 100, 102, 104, usw.

Aufgabe 3: "Computervirus"

a)
Schreibe ein Programm, das sich selbst im Speicher vermehrt, also sich selbst an eine andere Stelle des Speichers, etwa ab Speicherstelle 50 kopiert.
b)
Jetzt wird's echt schwierig: Ändere das Programm so ab, das es nach dem "Vermehrungsvorgang" in die Kopie springt, und diese sich wiederum vermehrt.

Quellen

Suche

v
12.4.6.2
dev.inf-schule.de/rechner/johnny/zusatzmaterial/exkurs_selbstmodifikation
dev.inf-schule.de/12.4.6.2
dev.inf-schule.de/@/page/gAudb17Wfu0knxJO

Rückmeldung geben