29.06.2015 Aufrufe

Lösung 4 - auf Matthias-Draeger.info

Lösung 4 - auf Matthias-Draeger.info

Lösung 4 - auf Matthias-Draeger.info

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!