Du befindest dich hier: FSI Informatik » jahrgaenge » 2006 » "Muster"-Lösungen » "Muster"-Lösungen zu Klausuren aus Technische Informatik 2 » Aufgabe 1 (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
jahrgaenge:2006:loesungen:technische_informatik_2:sep2006 [20.09.2007 15:07] – Der Ich | jahrgaenge:2006:loesungen:technische_informatik_2:sep2006 [21.09.2007 13:32] (aktuell) – 87.234.153.214 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
==== Aufgabe 1 ==== | ==== Aufgabe 1 ==== | ||
- | * 1) 1, 2 , 1, 2, 1, 1, 1, 1 | + | * 1) w, f , f, f, w, w, w, w |
- | * 2) 1, 1, 2, 1, 2, 1, 2, 2 | + | * 2) w, w, f, w, f, w, f(edit: zero-bit hat nichts mit rechten zu tun), f(edit: |
- | * 3) mov für Speicherzugriff; | + | * 3) mov für Speicherzugriff; |
- | * 4) ? | + | * 4) Die Behandlung eines Interrupts darf nicht durch einen anderen Interrupt unterbrochen werden, da sie nicht neu aufgesetzt werden kann. |
==== Aufgabe 2 ==== | ==== Aufgabe 2 ==== | ||
+ | 1. | ||
* A E X | * A E X | ||
* A E X | * A E X | ||
* A X E | * A X E | ||
* A X E | * A X E | ||
- | * AE AE AE | + | * EA EA EA |
* A E E | * A E E | ||
* E X A | * E X A | ||
+ | |||
+ | 2. Da gibt's bestimmt eine schöne Zeichnung im Skript. | ||
+ | * Eingänge: IOR, IOW, Adressbus | ||
+ | * Ein-/ | ||
+ | * Fest: Adresse des Geräts | ||
+ | * Adresse am Adressbus wird durch Komparator mit Geräteadresse verglichen. Ausgang des Komparators wird verundet mit IOR (-> Leitung zu Sensor) und IOW (-> Leitung zu Aktor). | ||
+ | * Sensor hat Ausgang auf Datenbus, Aktor Eingang von Datenbus. | ||
==== Aufgabe 3 ==== | ==== Aufgabe 3 ==== | ||
- | * 1) 2^16 adressen, an jeder adresse liegen 8 bit; 2^16 * 8bit = 64 KB; -48 KB für programm | + | * 1) |
- | * 2) | + | |
+ | | ||
+ | 16 kB / 16 Bytes = 1024 | ||
+ | |||
+ | * 2) Neue Strukturgröße: | ||
* 3) | * 3) | ||
Zeile 41: | Zeile 53: | ||
==== Aufgabe 4 ==== | ==== Aufgabe 4 ==== | ||
- | * 1) tanx -> taylor reihe; div -> newton-raphson | + | * 1) tanx -> Taylorreihe; div -> Newton-Rphson |
* 2) (steht nirgends schnell): | * 2) (steht nirgends schnell): | ||
Zeile 54: | Zeile 66: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Das funktioniert so nicht. Hierbei muss immer geshiftet werden. | ||
+ | Am besten ein Beispiel rechnen und dann sieht man es. | ||
==== Aufgabe 5 ==== | ==== Aufgabe 5 ==== | ||
* 1) | * 1) | ||
+ | |||
<code c> | <code c> | ||
#define unsigned int ui | #define unsigned int ui | ||
Zeile 73: | Zeile 89: | ||
more: return res; | more: return res; | ||
} | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | * 2) | ||
+ | < | ||
+ | movl 4(%esp), %ebx | ||
+ | cmpl $2, %ebx | ||
+ | jge else // | ||
+ | movl $1, %eax | ||
+ | ret | ||
+ | else: | ||
+ | subl $1, %ebx | ||
+ | pushl %ebx | ||
+ | call fibo | ||
+ | addl $4, %esp | ||
+ | movl %eax, %ecx | ||
+ | subl $1, %ebx | ||
+ | pushl %ebx | ||
+ | call fibo | ||
+ | addl $4, %esp | ||
+ | addl %ecx, %eax | ||
+ | ret | ||
+ | </ | ||
+ | |||
+ | Das funktioniert so nicht... Wegen der tiefen Rekursion werden die Register immer wieder ueberschrieben. Man muss hierbei den Stack verwenden, in em da das Zwischenergebnis gespeichert wird. | ||
+ | |||
+ | Ich denke, bei call werden die Register automatisch auf dem Stack gesichert und bei ret wiederhergestellt. Ist das nicht gerade der Unterschied zu iret? | ||
==== Aufgabe 6 ==== | ==== Aufgabe 6 ==== |