Einsendeaufgaben zur Kurseinheit 6
Aufgabe 6-1: (25 Punkte)
In dieser Aufgabe sollen Sie einfache Probleme
mit Hilfe des Simulators lösen und dadurch zeigen, daß Sie damit umzugehen gelernt haben.
(Die gesuchten Befehlsfolgen sollen Sie in der Lösungsdatei: 1_EA.ASM abspeichern.)
a) (5 Punkte)
Geben Sie in einer Tabelle für den Zahlenbereich
von -1 bis 1 mit einer Schrittweite von 0.1 die vom Simulator verwendeten, "nächstgelegenen" Fractional-Zahlen (Fixed) sowie ihre Interpretation als vorzeichenbehaftete ganze Zahlen (Integer) und als Hexadezimalzahlen an. Berechnen
Sie für die betrachteten Zahlen den maximalen relativen Fehler der Fractional-Darstellung.
b) (5 Punkte)
Berechnen Sie die Summe S = 0x87F8 + 0x2FC5 und
interpretieren Sie die Summanden und das Ergebnis als i) vorzeichenbehaftete ganze Zahlen (Integer), ii) vorzeichenlose ganze Zahlen, iii) Fractional-Zahlen (Fixed).
c) (5 Punkte)
Geben Sie eine Befehlsfolge an, die die Zahl 0xABCD
in eingeeignetes Register einliest und dann in ihr das Bit 10 setzt und das Bit3 zurücksetzt. Wie sieht das Ergebnis aus?
d) (5 Punkte)
Berechnen Sie durch eine Befehlsfolge das Produkt
P=2*0x6F03*0x70FF, wobei die Faktoren als Fractional-Zahlen aufgefaßt werden sollen. "Sättigen" Sie danach das Ergebnis,
falls ein Überlauf (MAC Overflow) auftreten sollte.
e) (5 Punkte)
Initialisieren Sie geeignete Register mit den Werten
0x0034 und 0x0012 und geben Sie eine Befehlsfolge an, die aus diesen Registern das Ergebnis SR1=0x0000, SR0=0x1234 erzeugt.
Aufgabe 6-2: (25 Punkte)
(Lösungsdateien: 2_ML-B.DAT, 2_ML-N.DAT, 2_ML-P.DAT)
Durch die folgende Tabelle sei das Ergebnis einer Klausur zu einem Kurs der Informatik gegeben. Sie sollen eine Befehlsfolge schreiben, die in möglichst wenigen Taktzyklen aus dieser Tabelle die Durchschnittsnote der Klausur ermittelt.
| Note |
1 |
2 |
3 |
4 |
5 |
| % |
10 |
14 |
25 |
18 |
33 |
Im einzelnen sollen Sie
- eine interne Zahlendarstellung für die Noten- und Prozentwerte der Tabelle bestimmen, die besonders gut für die Verarbeitung durch den ADSP-2101 geeignet ist,
- die Berechnungsformel für die Durchschnittsnote angeben und daraus ableiten, wie die Tabellenwerte so in den internen Speicherbereichen abzulegen sind, daß auf sie zur Berechnung des Durchschnittswertes möglichst effektiv zugegriffen werden kann,
- durch eine Folge von Befehlen alle Register und Zustands-Flags geeignet initialisieren, d.h. das "Programm" soll sich nicht ihre Initialisierung nach dem Rücksetzen des Prozessors zunutze machen,
- die Durchschnittsnote mit möglichst wenigen Befehlen, also auch in möglichst wenigen Taktzyklen, (im Einzelschritt-Modus) berechnen und das gerundete Ergebnis im festgelegten Format angeben,
- die Befehlsfolge in der Datei "2_ML-B.DAT", die benutzten Notenwerte in der Datei "2_ML-N.DAT" und die Prozentwerte in der Datei "2_ML-P.DAT" auf der Lösungsdiskette ablegen. (Dies können Sie durch die Tastenkombination CTRL+D
und Eingabe von Anfangs- und Endadresse im entsprechenden, aktivierten Speicherfenster durchführen.)
Aufgabe 6-3: (25 Punkte)
(Lösungsdateien: 3-ML-P.DAT, 3-ML-M.DAT, 3-ML-VW.DAT)
Schreiben Sie ein Programm zur Multiplikation eines 3-dimensionalen Vektors V mit einer 3x3-Matrix M. Alle Vektor- und Matrixelemente seien Fractional-Zahlen (im Bereich -1 bis 1).
Im einzelnen sollen Sie
- die Elemente der Matrix M und des Vektors V so in den internen Speicherbereichen ablegen, daß möglichst effektiv auf sie zugegriffen werden kann; die Belegung der Elemente soll nicht im Programm, sondern direkt in den Speicherfenstern
geschehen,
- alle benötigten Register im Programm initialisieren,
- ein möglichst "schnelles" Programm schreiben, das also mit möglichst wenigen Zyklen auskommt (Zielvorgabe: 41 Zyklen),
- die berechneten Elemente von V "sättigen", falls ein Überlauf auftritt,
- den Ergebnisvektor W = M x V unmittelbar hinter dem Vektor V im Speicher ablegen,
- den Vektor W für die folgende Matrix M und den Vektor V berechnen:
|
| W = |
ì ï î |
0.1 0.8 0.4 |
0.7 0.2 0.1 |
0.3 0.6 0.5 |
ü ï þ |
* |
ì ï î |
0.9 0.3 0.7 |
ü ï þ |
| | |
(Speichern Sie den Speicherbereich mit der Matrix
M in der Datei 3_ML_M.DAT, die Vektoren V, W in der Datei3_ML_VW.DAT und das Programm in der Datei 3_ML_P.DATab.)
Aufgabe 6-4: (25 Punkte)
Schreiben Sie eine Befehlsfolge zur Multiplikation
zweier vorzeichenbehafteter 32-bit-Fractional-Zahlen Z0, Z1 im 1.31-Format.
Gehen Sie dazu in den folgenden Schritten vor:
- Stellen Sie die 32-bit-Zahlen Z0 und Z1 durch
jeweils zwei 16-bit-Zahlen Z00, Z01 und Z10, Z11 dar und geben Sie für jede dieser "Teil"-Zahlen an, ob sie vorzeichenbehaft (S - signed) oder vorzeichenlos (U - unsigned) sind.
- Geben Sie die Formel zur Berechnung des Produktes
von Z0, Z1 aus den Zahlen Z00, Z01, Z10, Z11 an, die die Stellenwertigkeit der Teilprodukte berücksichtigt.
- Geben Sie nun die Befehlsfolge an, die die Zahlen
Z00, Z01, Z10, Z11 zunächst aus dem Datenspeicher ab Adresse DM(0x3800) in die Eingaberegister der MAC-Einheit einliest, danach die geforderte Multiplikation ausführt und das Ergebnis im Datenspeicher ab der Adresse DM(0x3810) ablegt. (Dabei sollen die niederwertigen Teilergebnisse die unteren Adressen belegen.)
- Multiplizieren Sie nun die beiden Zahlen Z0
= 0x87654321, Z1 = 0x789ABCDEF und geben Sie das 64-bit-Ergebnis P als Hexadezimalzahl an. Geben Sie auch eine dezimale Näherung für P an (6 Stellen hinter dem Punkt).