Lösung 4 - auf Matthias-Draeger.info
Lösung 4 - auf Matthias-Draeger.info
Lösung 4 - auf Matthias-Draeger.info
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Severin Lerch, <strong>Matthias</strong> Dräger, Alexander Narweleit TI II – Rechnerarchitektur 08.07.2008<br />
Aufgabenblatt 4 (korrigierte Lösungen)<br />
Aufgabe 1<br />
a) Die 3210<br />
ist in Binärschreibweise durch 1000002<br />
gegeben.<br />
Bei Verwendung des 2er-Kompliments reichen dementsprechend 7 Stellen aus, allerdings<br />
benötigt man bei B+V-Darstellung 7 Stellen, da das Vorzeichen separat als MSB angegeben<br />
werden muss. In B+V lautet 32 daher 01000002<br />
.<br />
b) 2-Komplement<br />
73 10 = 0 0100 1001<br />
-73 10 = 1 1011 0110 (Einerkomplement)<br />
-73 10 = 1 1011 0111 (Zweierkomplement)<br />
49 10 = 0 0011 0001<br />
-73 10 + 49 10<br />
1 1011 0111<br />
+0 0011 0001<br />
1 1110 1000<br />
Ergebnis umwandeln in Einerkomplement:<br />
1 1110 1000<br />
-0 0000 0001<br />
1 1110 0111<br />
Ergebnis wird gekippt und das Vorzeichen gemerkt:<br />
0 0001 1000<br />
Umwandeln in Dezimalzahl:<br />
11000 2 = 2 4 +2 3 = 24 10<br />
Wir erhalten also -24.<br />
B+V-Darstellung<br />
-73 10 = 1 0100 1001<br />
49 10 = 0 0011 0001<br />
Aufgrund der Eigenschaft der B+V-Darstellung, dass die Vorzeichen gesondert betrachtet<br />
werden müssen, erhalten wir bei normaler Subtraktion das Ergebnis der Addition und<br />
umgekehrt.<br />
1 0100 1001<br />
+0 0011 0001<br />
1 0111 1010 = -122 10<br />
Seite 1 von 3
Severin Lerch, <strong>Matthias</strong> Dräger, Alexander Narweleit TI II – Rechnerarchitektur 08.07.2008<br />
Daher benutzen wir die Subtraktion, um das richtige Ergebnis zu erhalten:<br />
1 0100 1001<br />
-0 0011 0001<br />
1 0001 1000 = -24 10<br />
c) Zwei Nachteile der Darstellung durch Betrag und Vorzeichen sind zum einen die Tatsache,<br />
dass es zwei Repräsentanten der 0 gibt (positiv und negativ) und zum anderen müssen die<br />
Vorzeichen bei Rechnungen gesondert betrachtet werden, was durchaus umständlich sein<br />
kann.<br />
Aufgabe 2<br />
a) ( 5 ⋅ 1+ 4 ⋅ 16) + ( 4 ⋅ 1+ 4 ⋅ 8 + 4 ⋅ 64 + 3⋅ 512 + 1⋅ 4096) + ( 2 + 4 + 8 + 128) + 1111010<br />
10 10 10<br />
= 5 + 64 + 4 + 32 + 256 + 1536 + 4096 −2 −4 −8 − 128 + 11110 = 16961<br />
b)<br />
10110011 ⋅2 − 11110 = 10010101 ⋅ 2 = 596<br />
2 2<br />
2 2 2 10<br />
c) ( 4 + 16 + 64 + 128) + ( 5 + 32 + 320 + 1024 + 12288 + 98304) ⋅8 − ( 15 + 224 + 3584 + 61440)<br />
10 10 10<br />
10<br />
= 212 + 111973 ⋅8 − 65263 = 212 + 895784 − 65263 = 830733<br />
10 10 10 10 10 10 10 10<br />
d)<br />
1101100100 ⋅ 2 + 11110000 ⋅ 2 + 111111 ⋅ 2 = 10010010011 ⋅ 2<br />
−6 −6 −6 −6<br />
2 2 2 2<br />
( ) 10 10 10<br />
= 1+ 2 + 16 + 128 + 1024 : 64 = 1171 : 64 = 18,296875<br />
10<br />
Aufgabe 3<br />
a) Clear<br />
L: DBNZ R,L → Schleife wird solange ausgeführt, bis R = 0<br />
b) GOTO Label<br />
Clear R<br />
DBNZ R,Label<br />
→ setzt zuerst R <strong>auf</strong> 0 und springt dann durch DBNZ zum Label<br />
oder die bessere Lösung wegen schnellerer L<strong>auf</strong>zeit:<br />
DBNZ R,Label<br />
DBNZ R,Label<br />
→ die erste Zeile löst den Sprungbefehl für alle R ≠ 1 aus und die zweite Zeile wird<br />
ausgeführt falls R = 1.<br />
c) NEG R,S<br />
Clear S<br />
L: DBNZ S,M<br />
M: DBNZ R,L<br />
→ Für jeden Schleifendurchl<strong>auf</strong> wird R und S um 1 verringert, wobei S bei 0 beginnt. Dies<br />
geschieht solange, wie R > 0 ist. Am Ende ist S = – R.<br />
Seite 2 von 3
Severin Lerch, <strong>Matthias</strong> Dräger, Alexander Narweleit TI II – Rechnerarchitektur 08.07.2008<br />
d) SUB R,S<br />
M: DBNZ S,L<br />
L: DBNZ R,M<br />
→ Prinzip wie bei NEG, aber S kann beliebig sein<br />
e) ADD X,Y,Z<br />
NEG X,T<br />
SUB Y,T<br />
NEG T,Z<br />
f) MOV A,B<br />
CLEAR T<br />
SUB A,T<br />
NEG T,B<br />
→ T wird zuerst mit 0 initialisiert und bekommt dann den negativen Wert von A zugeordnet.<br />
Danach wird T nochmal negiert und B zugeordnet.<br />
g) COPY A,B<br />
CLEAR B<br />
CLEAR T<br />
L: DBNZ B,M → B bekommt den negativen Wert von A<br />
M: DBNZ T,N → T bekommt auch negativen Wert von A<br />
N: DBNZ A,L → runtergezählt, bis A = 0<br />
NEG T,A → T wird noch negiert und A zugewiesen<br />
NEG B,T → B wird negiert und T zugeordnet<br />
MOV T,B → T, das nun genauso ist wie A, wird B zugeordnet<br />
Aufgabe 4<br />
siehe Quellcode<br />
Seite 3 von 3