Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Indizierte Spalte

+1 Punkt
368 Aufrufe
Hallo,

ich habe trotz Betrachtung der entsprechenden Folie (Folie 9-20) die indizierte Adressierung nicht verstanden.

Könnte mir jemand diese bitte nochmal erklären?

Warum ist hier der Datenbankinhalt genau um eine Adresse nach oben verschoben? Ist das immer so?

 

Danke
Gefragt 6, Feb 2015 in REK-AH von uldzp uldzp Lernwillige(r) (170 Punkte)  

2 Antworten

+1 Punkt
Hallo,

bei der indizierten Adressierung, wird die Adresse berechnet, indem ich den Inhalt eines Indexregisters (dieses ist in der Aufabe mit 1 belegt, daher die Verschiebung um eine Zeile!) zu dem Operanden addiere. In dieser Aufabe sollen Sie das ganze nun quasi umkehren. Sie wissen also, dass vorher 1 auf das k addiert wurde und wollen die passende Zeile auslesen also in dem Fall immer bei k+1. Wenn das Indexregister anders belegt ist ändert sich die" Verschiebung" natürlich!

Viele Grüße,

Janina (Tutorin)
Beantwortet 6, Feb 2015 von utdbu utdbu Tutor(in) (106,580 Punkte)  
0 Punkte

Vielleicht noch ein Kommentar zur praktischen Anwendung von relativer und indizierter Adressierung (weil das erfahrungsgemäß sehr beim Verstehen der Grundidee und beim Auseinanderhalten der beiden nach dem gleichen Prinzip arbeitenden Adressierungen hilft):

  • Indizierte Adressierung wird verwendet, um auf Array-Elemente zuzugreifen. Die Idee ist, dass auf Assembler-Ebene, wo es ja keine höheren Datentypen gibt, ein Array einfach aus einem sequentiellen Speicherblock gehört, der etwa die Adressen $n, n+1, \ldots, n+m$ umfasst. Damit man jetzt auf das $i$-te Element einfach durch (bspw.) LOAD $i$ zugreifen kann, anstatt immer $n+i$ schreiben zu müssen, lädt man einfach das Indexregister mit $n$.
  • Relative Adressierung ist nötig, damit man Programme schreiben kann, die unabhängig von ihrer Position im Speicher funktionieren. Sagen wir, Sie schreiben ein Programm, das den Befehl GOTO $i$ enthält. Dann bezieht sich $i$ bei direkter Adressierung (zumindest auf unterster Maschinensprachen-Ebene) nicht etwa auf die $i$-te Programmzeile, sondern auf die Speicherzelle an Adresse $i$. Das würde aber bedeuten, dass Sie erstens schon während der Programmierung wissen müssten, wo Ihr Programm im Speicher liegt, und dass zweitens ein Umkopieren des Programms an eine andere Stelle zum Verlust von dessen Funktion führen würde. Stattdessen kann man durch Nutzung der relativen Adressierung wieder das entsprechende Register mit der Adresse des Programmbeginns füllen und muss sich danach nicht mehr um die absolute Position im Speicher kümmern.
Beantwortet 6, Feb 2015 von Lukas König Dozent (10,065,100 Punkte)  
...