Hochschule Mittweida Lehrgruppe Mikroprozessortechnik Probeklausur Zeit: Unterlagen: Punktzahl: 90 Minuten 1 Blatt A4 beidseitig handschriftlich, Befehlsliste 8086, Taschenrechner 30 Achtung! Alle Programme sind in 8086-Assembler zu schreiben und zu kommentieren. 1. [3 Punkte] Gegeben sind folgende Programmzeilen: MOV AX,3AF6H AND AH,0C5H SUB AL,8EH Geben Sie den Zustand der Flags C, Z und S jeweils nach dem zweiten und dritten Befehl an. 2. [3 + 2 Punkte] Gegeben sei folgendes Programmfragment, welches ein Unterprogramm aufruft: 0100H 0103H 0106H 0300H 0302H 0304H 0307H 0308H ...... MOV CALL … UP_300H: PUSH MOV SUB PUSH MOV SP,1000H UP_300H BP BP,SP SP,6 AX AX,[BP+d] ; rufe Unterprogramm auf ; rette alten Basepointer ; reserviere lokale Variable ; rette AX ..... a) Skizzieren Sie den Aufbau des Stacks zum Zeitpunkt der Ausführung des Befehls auf Adresse 0308H! Tragen Sie die Adressen an die Komponenten an. Markieren Sie die Rückkehradresse. b) Welcher Zahlenwert steht in diesem Moment in den Registern SP und BP? 3. [4 Punkte] Eine CPU mit einem durchschnittlichen CPI von 0,4 wird in einem Rechnersystem eingesetzt, dessen Hauptspeicher 10 Waitstates benötigt. Um dies abzumildern verfügt das System über einen Cache, der eine Trefferrate von 99 % erreicht. Je Befehl benutzt die CPU im Mittel 1,6 Speicherzugriffe. Wie viele Befehle kann dieses System bei einer Taktfrequenz von 2,5 GHZ pro Sekunde bearbeiten? Bitte wenden! 4. [2 + 3 + 2 + 2 + 2 Punkte] Beantworten Sie möglichst knapp und aussagekräftig folgende Fragen: a) Was versteht man unter einer indirekten Adressierung? Nenne ein Beispiel. b) Nenne drei Ereignisse, die dazu führen, dass eine CPU in den Supervisor-Modus versetzt wird! c) Erläutere wie die Zuordnung zwischen Interruptquelle und Startadresse der ISR bei einem vektorisiertem Interruptsystem erfolgt. d) Nenne mindestens zwei Situationen in denen die komplette Sperrung von Interrupts notwendig ist (Begründe die Notwendigkeit)! e) Skizziere die Zerlegung der 24-Bit Adresse für einen direct-mapped Cache mit 256 Cachelines zu je 512 Einträgen. Gib die Breite der jeweiligen Felder an. 5. [7 Punkte] Im Speicher sei eine Tabelle definiert, die einige Vergleichswerte (weniger als 256) enthält und mit dem Wert 0FFFFH als Endekennung abgeschlossen wird. Table: DW 12A4H DW 23FFH ..... DW 0FFFFH Schreiben Sie ein Unterprogramm SUCHE, welches einen im Register AX übergebenen Wert in der Tabelle sucht. Wird der Wert gefunden, ist in AL die Positionsnummer des gefundenen Wertes zurückzugeben und das C-Flag ist gelöscht. Wird der Wert nicht gefunden, ist das C-Flag gesetzt und der Wert in AL ist beliebig. Andere Register sollen unverändert bleiben.