Zwei Anfängerfragen (Bitte um Korrektur)

OP #2722288
Lesenswert?

Ich schreibe demnächst ein Klausur in µ.
Ich habe mir selber einen Fragekatalog erstellt, und versucht alle 
Fragen zu beantworten.

Bei zwei Fragen bin ich mir unsicher und würde um eine Korrektur bitten.


Weshalb muss man wissen, ob Sprungbefehl mit absoluter oder relativer 
Adressierung arbeitet?

Wird das Hauptprogramm mit Unterprogrammen in Speicher verschoben, würde 
der der Sprungbefehl mit relative Adressierung immer noch zur richtigen 
Stelle springen, bei absoluter Adressierung ist es nicht gewährleistet 
bzw. nicht der Fall.


Welche Vorteile bietet die relative Adressierung?

Man kann das ganze Programm(mit Unterprogrammen) im Speicher 
verschieben, und es würde trotzdem noch funktionieren.


Danke!
#2722315
Lesenswert?

Alex Z. schrieb:

> Weshalb muss man wissen, ob Sprungbefehl mit absoluter oder relativer
> Adressierung arbeitet?
>
> Wird das Hauptprogramm mit Unterprogrammen in Speicher verschoben, würde
> der der Sprungbefehl mit relative Adressierung immer noch zur richtigen
> Stelle springen, bei absoluter Adressierung ist es nicht gewährleistet
> bzw. nicht der Fall.

Korrekt.
Das ist allerdings nur dann relevant, wenn du selber Assembler spielst 
bzw. selbst den Code an eine andere Stelle verschiebst. Erfolgt die 
Verschiebung im Source Code dann kümmert sich ja der Assembler bzw 
Compiler um die Adressberechnung und daher tangiert dich dieser Punkt 
weniger.

> Welche Vorteile bietet die relative Adressierung?
>
> Man kann das ganze Programm(mit Unterprogrammen) im Speicher
> verschieben, und es würde trotzdem noch funktionieren.

Ja.
Das ist aber meistens nur die halbe Miete.
Relative Adressierung ist normalerweise auch Speichersparender, weil es 
dann Grenzen gibt, bis zu denen relativ adressiert werden kann. Für 
alles was weiter entfernt ist, muss man dann absolut adressieren.
Zb wenn man relativ zu einer Position nur +-128 Bytes adressieren kann, 
dann braucht man zur Beschreibung einer Adresse nur 1 Byte, während man 
für eine komplette Sprungadresse bei einem 16 Bit Addresssystem 2 Bytes 
brauchen würde.
#2722362
Lesenswert?

Alex Z. schrieb:
> Weshalb muss man wissen, ob Sprungbefehl mit absoluter oder relativer
> Adressierung arbeitet?

Das muß man nicht wissen, weil der Assembler das schon weiß.
Man schreibt immer nur das Ziel-Label hin und der Assembler errechnet 
daraus den richtigen Befehlscode automatisch.

Alex Z. schrieb:
> Wird das Hauptprogramm mit Unterprogrammen in Speicher verschoben, würde
> der der Sprungbefehl mit relative Adressierung immer noch zur richtigen
> Stelle springen, bei absoluter Adressierung ist es nicht gewährleistet
> bzw. nicht der Fall.

Nein.
Wenn man Code einfügt und dann assembliert, werden alle Sprünge wieder 
richtig berechnet.
Ein Sonderfall sind vom OS verschiebbare Programme, z.B. auf dem PC. Da 
macht dann der Programmloader eine Berechnung der Sprünge ohne neu zu 
assemblieren.


Alex Z. schrieb:
> Welche Vorteile bietet die relative Adressierung?

Sie erlaubt einen kürzeren Befehlscode. Es muß ja nicht die vollständige 
Adresse im Befehl stehen, sondern nur der Abstand zum Ziel.
Ist der Abstand zu groß, d.h. kann nicht mehr codiert werden, gibt es 
eine Fehlermeldung.


Peter
#2722546
Lesenswert?

>Das muß man nicht wissen, weil der Assembler das schon weiß.

und

>Ist der Abstand zu groß, d.h. kann nicht mehr codiert werden, gibt es
>eine Fehlermeldung.

passen natürlich super zusammen ....


(die Antwort vom "Karl Heinz Buchegger" ist doch eh super, und richtig 
und ziemlich vollständig, warum antwortest du da überhaupt noch, kann ja 
nur schlimmer werden...)
#2723390
Lesenswert?

Robert L. schrieb:
> passen natürlich super zusammen ....

Ja natürlich paßt das.
Niemand zählt sowas nach.
Erst wenn die Fehlermeldung kommt, stellt man den Code um (negierte 
Bedingung + long Jump).

Robert L. schrieb:
> warum antwortest du da überhaupt noch

Weil ich Zeit brauche, um zu schreiben.
Es mag zwar uncool scheinen, aber ich überlege mir meine Posts.
Es ist völlig normal, daß beim Absenden schon weitere Posts vorliegen 
können.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren