Testat 1 Aufgabe 8
03.03.2012 02:54:08
0 LOADI IN2 1^24
1 LOAD ACC 0
2 ADDI ACC 1
3 OR ACC 0
4 STORE 0
5 JUMP>= -4

Hi Leute ich blick des irgendwie nicht. Ich versteh das so: In 1 wird der ACC auf 1^24 gesetzt, weil Reti mit Zweierkomplementzahlen rechnet also auf den Wert -1. In 2 wird der ACC um 1 erhöht also auf 0^24 bzw. 0. Bei 3 rechnet er dann das or von 0^24 und 1^24 wobei ja 1^24 rauskommen müsste speichert des in 0 ab und vergleicht dann ob -1 größer gleich 0 ist merkt das es nicht so ist und JUMP´t nicht. Wo ist mein Denkfehler?

Danke schon mal an die schlauen Menschen die mir helfen können ;).



1 mal bearbeitet. Zuletzt am 03.03.2012 02:54 von Guru.
Re: Testat 1 Aufgabe 8
03.03.2012 09:52:48
Hi Guru,

Reti rechnet im 2er Komplement, aber mit 32Bit-Zahlen. Wenn du also in den ACC 1^24 schreibst, stehen 0^8 1^24 im ACC (das ist dann auch nicht mehr -1). Im Datenblatt von Reti steht ja: LOADI D i ; D := 0^8 i
Reti kann mit den Immediates nur 24 Bit von den 32 abdecken, also kann man damit nur positive Zahlen zwischen 0 und 16777215 setzen.

Grüße Lukas
Re: Testat 1 Aufgabe 8
03.03.2012 14:14:14
Huhu GURU,

Die Antwort von Lukas ist zutreffend, hier aber nur die halbe Wahrheit.

Denn in Zeile 1 des Programms lädst du damit auch nicht nur den Inhalt der letzten 24 Stellen, sondern das gesamte Bitwort, das den Befehl "LOADI IN2 1^24" codiert. Das sind insgesamt 32 Bit, die letzten 24 alle 1, die ersten 8 gehören zur Befehlscodierung (und nicht 8 Nullen).

Ansonsten ist es korrekt: ReTI kann zwar nur Immediates mit bis zu 24 Bit handhaben, aber trotzdem mit Zahlen bis zu 32 Bit (im Zweierkomplement) umgehen/rechnen.

Grüße,
Sven

------------------
Sven Reimer
Lehrstuhl für Rechnerarchitektur
Geb. 51 / Raum 01-030



1 mal bearbeitet. Zuletzt am 03.03.2012 14:15 von Sven Reimer.
MEGA
04.03.2012 04:59:41
Achso cool dann ergibt das jetzt einen Sinn. Hab immer die Befehlskodierung von den restlichen Bits getrennt betrachtet. Somit wär nach dem vierten durchlauf der ACC=0=1^32 und der Jump befehl sieht den ACC als zweierkomplement also -1 und der PC geht weiter auf 6.

Danke für die Hilfe ihr seid beschte
Re: Testat 1 Aufgabe 8
05.03.2012 17:03:48
ich habe da auch mal eine Frage und zwar redet ihr ständig davon dass bei Zeile 1 des Programms also bei LOAD ACC 0, 1^24 in den ACC geladen wird, aber das stimmt doch so nicht? Da wird doch D := M(<i>) gemacht sprich D = ACC & M(<i>) = M(<0>) => ACC := M(<0>)
Also wird in den ACC der Wert der Speicherzelle mit Adresse 0 geladen (was in M(<0>) ist, steht in den Sternen?!)

oder habe ich da was falsch verstanden?

gruß
Re: Testat 1 Aufgabe 8
05.03.2012 17:23:03
Ahmed schrieb:
-------------------------------------------------------
> (was in M(<0>) ist, steht in den Sternen?!)

Hier steht das Programm in den Speicherzellen, das heißt in M(<0>) steht der codierte erste Befehl.
LOADI IN2 1^24 was codiert folgendes ist: 0111001011111111...
Re: Testat 1 Aufgabe 8
05.03.2012 17:29:38
da kann ich nur sagen: ahhhhh

danke!
Sorry, Sie haben nicht die erforderliche Berechtigung, um in diesem Forum zu schreiben.