Informatik für Ingenieure I
- Grundzüge der Datentechnik -

Übungsaufgaben

 
Aufgabe 1: Halbaddierer

Es ist ein Schaltnetz zu entwerfen, das zwei Binärziffern a0 und b0 addieren kann.

a) Stellen Sie die Funktionstabelle nach den Regeln der binären Addition auf.
b) Geben Sie disjunktiven Normalformen für die beiden unter a) gefundenen Schaltfunktionen (Summe s0 und Übertrag c1) an.
c) Skizzieren Sie die zugehörigen disjunktiven Normalformen mit UND- und ODER-Gattern.
d) Skizzieren Sie die Normalform der Summe s0 mit NAND-Gattern.

 
Aufgabe 2: Volladdierer

Es ist ein Schaltnetz zu entwerfen, das eine beliebige Stelle i zweier Binärzahlen A und B addieren kann.

Volladdierer
 
a) Stellen Sie die Funktionstabelle für eine Volladdiererstelle nach den Regeln der binären Addition auf.
b) Geben Sie disjunktiven Normalformen für die beiden unter (a) gefundenen Schaltfunktionen (Summe si und Übertrag ci+1) an.
c) Skizzieren Sie die zugehörigen disjunktiven Normalformen mit UND- und ODER-Gattern als unvermaschtes Schaltnetz. Wie Verringert sich der Aufwand durch Vermaschen des Schaltnetzes?
d) Minimieren Sie (soweit möglich) die beiden Schaltfunktionen mit Hilfe von zwei Karnaugh-Tafeln, und geben Sie die Funktionsgleichungen der Minimalformen an.

 
Aufgabe 3: Umcodierer (Grdl. DV H70 A2)

Es ist ein Schaltnetz zu entwerfen, das aus einer binär codierten Dezimalziffer die zweite Binärstelle (F2) im 2-aus-5-Code bildet.

Die binär codierte Dezimalziffer (im Dualen Dezimalcode) liefert die vier Eingangsvariablen des Schaltnetzes. Die Ausgangsvariable des Schaltnetzes soll die Stelle y3 im 2-aus-5-Code sein. Das ist die vierte Stelle von rechts mit dem Stellenwert 4 (außer bei Darstellung der Null).

Die Schaltfunktion y3 ist in minimierter Form anzugeben. Das zugehörige logische Schaltbild ist zu skizzieren.

 
Aufgabe 4: Mikroprogrammsteuerwerk (Grdl. DV FJ76 A6)

Es ist ein Schaltwerk zu entwerfen, das an seinem Ausgang y zwei verschiedene digitale Impulsprogramme abgeben kann. Das schaltwerk wird mit einem kontinuierlichen Takt T versorgt. Die Abgabe eines Impulsprogramms wird durch einen Startimpuls ausgelöst. Das gewünschte Impulsprogramm wird über einen Steuereingang x ausgewählt. Die Steuervariable x ist nur während des Startimpulses gültig.

Zeitdiagramme
 
a) Skizzieren Sie das Flußdiagramm für den folgerichtigen Funktionsablauf innerhalb des Generators.
b) Skizzieren Sie das logische Blockschaltbild des Generators in der Form eines Mikroprogrammsteuerwerkes.

 
Aufgabe 5: Schaltwerk (Grdl. DV H78 A5)

Für eine Ampelanlage an einer Straßenkreuzung ist ein Steuerwerk zu entwerfen. Die Zeitschritte werden von einem alle 5 Sekunden eintreffenden Taktimpuls bestimmt, der das Steuerwerk weiterschaltet. Die Folge der für beide Straßen vorgesehenen Lichtsignale ist der folgenden Tabelle zu entnehmen.

 Zeitschritt   Straße 1   Straße 2 
0 gelb rot
1 rot rot/gelb
2 rot grün
3 rot grün
4 rot gelb
5 rot/gelb rot
6 grün rot
7 grün rot
8 grün rot
9 grün rot
Im Tagbetrieb wiederholt sich die Folge periodisch nach 10 Zeitschritten.
Im Nachtbetieb bleibt die Ampel für die bevorrechtigte Straße 1 so lange grün, bis über eine Signalleitung (Kontaktschwelle) ein wartendes Auto in Straße 2 gemeldet wird. Es läuft dann einmal die tabellierte Folge ab.
a) Legen Sie die Zustandscodierung fest, und bezeichnen Sie die Eingangs- und Ausgangsvariablen des Schaltwerkes.
   b) Skizzieren Sie ein Flußdiagramm für den folgerichtigen Funktionsablauf innerhalb des Schaltwerkes.
   c) Skizzieren Sie das logische Blockschaltbild des Schaltwerkes in der Form eines Mikroprogrammsteuerwerkes.

 

 
Aufgabe 6: Speicher (Grdl. DV FJ87 A4)

a) Skizzieren Sie ein logisches Blocksymbol für einen Festwertspeicherbaustein (ROM) mit einer Speicherkapazität von 1 K Worten zu 4 Bit (1 K = 1024).
b) Wie viele Adreßeingänge und wie viele Datenausgänge hat der Speicherbaustein? Durch welchen (zusätzlichen) Steuereingang wird der Speicherbaustein ausgewählt, und was bewirkt dieses Steuersignal innerhalb des Bausteins?
c) Skizzieren Sie unter Verwendung des zu a) gefundenen Blocksymbols einen Festwertspeicher mit 4 K Worten zu 8 Bit. Verbinden Sie die Ein- und Ausgänge der Speicherbausteine richtig miteinander, und stellen Sie deutlich dar, welche Leitungen zum Benutzer herausgeführt werden. Welches logische Element wird außer den Speicherbausteinen zusätzlich gebraucht?

 
Aufgabe 7: Mikroprogrammsteuerwerk (Grdl. DV H84 A5)

Der zum Aufruf und zur Ausführung der folgenden Befehle erforderliche Teil der Befehlswerk-Ablaufsteuerung (Vorlesungsumdruck) soll als separates Mikroprogrammsteuerwerk dargestellt werden:

Cc n und Cc n" bed. Sprungbefehl
A n und A n" Ladebefehl
S n und S n" Speicherbefehl
ab n und ab n" Arithm. Befehl (+, -, x, /)
AKZII (") wird mit dem Adreßteil n ersetzt.
 
a) Geben Sie an, welche Ein- und Ausgänge das Steuerwerk für die angegebenen Befehle aufweisen muß. Der Typ den aufgerufenen Befehls sie durch vier Bedingungsleitungen gekennzeichnet, von denen nur eine gleichzeitig aktiv ist.
b) Entwerfen Sie ein Flußdiagramm für Aufruf und Ausführung der o.a. Befehle. Ordnen Sie den Elementen des Flußdiagramms Zustände zu, und geben Sie die gewählte Zustandscodierung an.
c) Skizzieren Sie auf Grund des unter b) aufgestellten Flußdiagramms die Befehlswerk-Ablaufsteuerung in der Form eines Mikroprogrammsteuerwerkes, soweit es für das angegebene Beispiel erforderlich ist.

 
Aufgabe 8: Programm (Grdl. DV H84 A5)

Mit einem programmgesteuerten Rechner soll ein in Kugelkoordinaten (r, θ, φ) angegebener Punkt (im Raum) in kartesische Koordinaten (x, y, z) mit folgenden Transformationsgleichungen umgerechnet werden, die nur den Sinus als Winkelfunktion enthalten:

x = r · sin(θ) · sin(π/2 - φ)
y = r · sin(θ) · sin(φ)
z = r · sin(π/2 - θ)

Die Sinusfunktion soll in einem Unterprogramm w = sin v für die verschiedenen Argumente v entsprechend der Reihe

Sinusreihe

berechnet werden. Zweckmäßigerweise berechnet man das k-te Glied der Reihe aus dem vorhergehenden (k - 1)-ten Glied mit der Rekursionsformel

Rekursion

Programmcode und Variablenbereich von Haupt- und Unterprogramm sollen voneinander getrennt sein. Das Hauptprogramm kennt nur die Startadresse des Unterprogramms. Das Argument v sowie das Ergebnis w der Sinusfunktion sollen im Akkumulator Ak des Rechners zwischen Haupt- und Unterprogramm übergeben werden.

Die Kugelkoordinaten eines Punktes stehen in drei aufeinanderfolgenden Speicherzellen des Rechners. Die zu berechnenden kartesischen Koordinaten sind in drei anderen Speicherzellen abzulegen. Außerdem sind beiden Koordinatensätze dieses einen Punktes in zwei aufeinanderfolgenden Zeilen in der Reihenfolge

r θ φ
x y z

auszudrucken.

a) Stellen Sie ein Flußdiagramm für das geforderte Hauptprogramm und das dazugehörige Unterprogramm auf.
b) Erstellen Sie Haupt- und Unterprogramm im Maschinencode nach der in der Vorlesung angegebenen Befehlsliste.

 
Aufgabe 9: Wirkungsweise eines Assemblers

Am Programmbeispiel 1 aus dem Vorlesungsumdruck (S. 7.8) ist die Wirkungsweise eines Assemblers darzustellen, der dieses Programm aus dem mnemonischen Source-Code in den binären (bzw. hexadezimal notierten) Objekt-Code (Maschinencode mit absoluten Adressen) übersetzt.

Die Befehlsliste enthält die bekannten 16 Maschinenbefehle mit den OP-Codes 0 ... F (hex.):

Typ OP
hex
OP
mnem.
AD Bedeutung
Leerbefehl 0 -- - NOP (No Operation)
Transport-
befehle
1
2
3
I
A
S
n
n
n
<I> <== <n>
<Ak> <== <n>
<n> <== <Ak>
Arithm.
Befehle
4
5
6
7
+
-
×
/
n
n
n
n
<Ak> <== <Ak> + <n>
<Ak> <== <Ak> - <n>
<Ak> <== <Ak> × <n>
<Ak> <== <Ak> / <n>
Sprung-
befehle
8
9
A
B
C
CC
CI
CU
n
n
n
n
<BZ> <== n
<BZ> <== n, wenn <Ak> </= 0
<BZ> <== n, wenn <I> >/= 0
<n> <== <BZ> + 1, <BZ> <== n + 1
Betriebs-
befehle
D
E
F
DR
Z
STOP
-
-
-
<Ak> drucken
Wagenrücklauf, Zeilenvorschub
Anhalten (bzw. Rückkehr zum Betriebssystem)
Pseudo-
befehle
ORG
DW
DW
n
n
?
Referenz-Zähler <== n 1)
Speicherwort <== n 2)
Speicherwort <== ? (i.a. = 0000) 2)
1) nächste Adresse beim Assemblieren
2) beim Laden des Programms

und den Adressierungsarten 0 ... 3

Art AA
hex
OP
mnem.
AD Bedeutung
direkt 0 ... n abs. Adresse <== n
relativ 1 ... n' abs. Adresse <== n +<B> Änderung 1. Art
indirekt 2 ... n" abs. Adresse <== <n> Änderung 2. Art
indiziert 3 ... n + i abs. Adresse <== n +<I> Änderung 3. Art

Zum Lösen der Aufgabe ist der angegebene Kopf des Programmlistings auf ein leeres Blatt zu übertragen, und die Spalten sind entsprechend den folgenden Aufgabenpunkten auszufüllen. Der Adreßraum des Modellrechners betrage 1 K (0 ... 1023 dez. bzw. 000 ... 3FF hex.), d.h. ein Maschinenbefehlswort von 16 Bit besteht aus 4 Bit OP-Code, 2 Bit Adressierungsart, und 10 Bit Adresse. Eine ganzzahlige Variable soll ebenfalls aus 16 Bit im Zweierkomplement bestehen (Wertebereich von - 32768 dez. = 8000 hex. bis + 32767 dez. = 7FFF hex.). Zahlenwerte in den Source-Spalten ohne Angabe einer Zahlenbasis werden als Dezimalzahlen interpretiert (z.B. zum Definieren von Variablenwerten beim Laden mit dem Pseudobefehl DW).

Zeile Object-Code Source-Code
Z.-
Nr.

dez.
Adr.
 

hex.
 
OP

hex.
Inh.
AA

hex.
 
AD

hex.
Name,
Marke
Befehl
OP

mnem.
 
AD

symb.
Kommentar
 

Klartext
 
000
···
999
000
···
3FF
0
···
F
0
···
3
000
···
3FF
A0
···
ZZZZZZ
--
···
STOP
A0
···
ZZZZZZ
; von
; ···
; bis

a) Das Programmbeispiel 1 (Umdruck S. 7.8) soll mit folgenden ganzzahligen Parametern ausgeführt werden: a = 3, b = - 5, x0 = 0, xe = 100 und Δ x = 1 (statt 0,1). Da der Assembler außer den Satz- und Rechenzeichen nur Großbuchstaben und Ziffern kennt, benennen Sie alle Variablen um, die entweder mit mnemonischen Befehlen verwechselt werden können oder unbekannte Sonderzeichen (z.B. den griechischen Buchstaben Δ) enthalten.
b) Übertragen Sie das Programmbeispiel 1 mit mnemonischen Befehlen und symbolischen Adressen in die o.a. Spalten für den Source-Code. Ergänzen Sie die erforderlichen Marken und die Pseudoanweisungen für den Assembler, damit das übersetzte Objektprogramm in denselben Speicherzellen steht wie das ursprüngliche Beispiel 1.
c) Übersetzen Sie das unter b) aufgestellte Programm von Hand wie ein Zweipass-Assembler. Legen Sie beim "ersten Pass" die Adressen fest, stellen Sie eine Symboltabelle auf, und tragen Sie die definierten Ladewerte der Variablen ein (? ==> 0000). Beachten Sie dabei die hexadezimale Notierung im Maschinencode! Tragen Sie im "zweiten Pass" das Programm mit allen Adreßreferenzen ein, und zwar getrennt nach OP-Code, Adressierungsart und Adreßteil in der vorgesehenen hexadezimalen Notierung Mnemonics ohne Adreßteil - ==> 000).
d) Ergänzen Sie die in c) aufgestellte Symboltabelle (Name und Adreßwert) zu einer typischen Referenztabelle durch Angabe der Zeilennummer, in der jedes Symbol definiert ist, und aller Zeilennummern, in denen das jeweilige Symbol verwendet wird.


Zurück zu Lehre