History of Computer Systems

Werbung
History of Computer Systems
Winter 2016/2017
05.12.2016
Übungszettel 6
“EDSAC und Exzess-3 Code”
Vorrechenpunkte gibt es für die Lösung von
• Aufgaben 1.1 und 1.2
• Aufgabe 1.3
• Aufgabe 2.1 und 2.2
• Aufgabe 2.3
1
EDSAC
Sie dürfen nochmal die Programmierung des EDSAC üben.
Der Computerhistoriker Martin Campbell-Kelly hat zusammen mit seinen Studenten einen EDSACSimulator veröffentlicht: http://www.dcs.warwick.ac.uk/∼edsac/
Auf der Website finden Sie sowohl die Simulation zum runterladen, als auch ein Tutorial, das die
Programmierung der EDSAC erklärt. Eine kompakte Übersicht mit Befehlen und Zeichen-Codes finden
Sie unter https://people.cs.clemson.edu/∼mark/edsac.html
Jedes Programm muss mit T n K beginnen, wobei n die Startadresse des Programms ist. Die “Initial
Orders 2” lesen diese Information als erstes und passen alle relativen Adressen entsprechend an. Der
Befehl GK muss am Anfang jeder Subroutine stehen, um den Θ-Parameter auf die aktuelle Ladeadresse
zu setzen. Relative Adressen können mit dem Θ-Zeichen angegeben werden (in der Simulation durch
ein “@”-Zeichen).
Es bietet sich an, das Programm ab Adresse 64 starten zu lassen, da es somit am Anfang (unten rechts)
des “Long Tank 2” steht. Um das Debugging zu vereinfachen können Sie am Anfang und am Ende
eines Programmes den Befehl ZF angeben, um die Maschine anzuhalten. Mit dem “Reset”-Button
lassen Sie die Simulation weiter laufen, mit “Single E.P.” können Sie die Befehle Schritt für Schritt
ausführen.
1.1
Countdown
Schreiben Sie ein Programm, dass die Zahl 16 in den Akkumulator lädt und anschließend schrittweise
um 1 dekrementiert, bis die Null überschritten wird. Die Konstante 1 kann man durch PD angeben.
Warum?
1.2
Ausgabe
Erweitern Sie ihr Programm, sodass es die Zahlen nach jeder Subtraktion ausgibt. Nutzen Sie dafür
die Subroutine P6. Diese ist vor dem eigentlichen Programm einzufügen. Die Subroutine erwartet die
Seite 1 von 2
auszugebende Zahl an Adresse 0F. Als Hilfe können Sie die Beschreibungen zum “Cubes”-Programm
in dem Tutorial (Seite 22 ff.) benutzen.
1.3
Fibonacci Zahlen
Schreiben Sie ein Programm, dass die Reihe der Fibonacci-Zahlen berechnet und ausgibt.
2
Arithmetik des UNIVAC
In der Vorlesung wurde die Exzess-3 BCD Codierung vorgestellt. BCD codiert jede dezimale Ziffer
binär in einer Tetrade (also 4 Bits). Beim Exzess-3 Code findet zusätzlich eine Verschiebung um 3
Tetraden statt. In dieser Übung soll die Zahlendarstellung mit diesem Code und das Rechnen damit
geübt werden.
2.1
Zahlendarstellung XS-3- BCD
Geben Sie folgende Zahlen im Exzess-3-BCD-Format an:
a) 724 =
c) 407 =
b) 23 =
d) 5891 =
2.2
Addition
Die Addition und Subtraktion erfolgt bei BCD von Rechts nach Links für jede Tetrade. Beim Rechnen
mit Exzess-3 codierten Zahlen, muss nach der binären Addition noch eine Korrektur vorgenommen
werden. Wenn zwei Zahlen addiert werden, sodass es zu keinem Übertrag kommt, muss das Ergebnis
anschließend durch Addition von 1101 (Zweierkomplement von −3) korrigiert werden. Kommt es zu
einem Übertrag in die nächste Tetrade (entspricht einem Zehner-Übertrag), muss anschließend 0011
addiert werden.
Berechnen Sie folgende Additionen im Exzess-3-Code:
a) 4 + 5 =
c) 83 + 729 =
b) 12 + 35 =
d) 5891 + 407 =
2.3
subtraktion
Die Subtraktion erfolgt durch Addition des binären 2-er Komplements. Findet dabei ein Übertrag
auf die fünfte Stelle statt, so wird dieser vernachlässigt und zur Korrektur 0011 addiert. Wenn das
Ergebnis negativ ist, wird der Korrekturwert 1101 addiert. Das Zweierkomplement der Tetraden ist
der vorzeichenlose Dezimalwert im Exzess-3 Code.
Berechnen Sie folgende Subtraktionen im Exzess-3 Code:
a) 9 − 5 =
c) 35 − 23 =
b) 5 − 9 =
d) 23 − 35 =
Seite 2 von 2
Herunterladen