Warum Bitverschiebung bei indirekter adressierung?

S

sps1

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
hallo, wenn ich zb eine db nummer aus einem dw auslese, warum müssen dann die ersten drei bits in dem wort vorher auf 0 gesetzt werden?

das versteh ich nie, wär nett wenn mir das mal wer erklären könnte!

thx!
 

Markus

Administrator
Teammitglied
Beiträge
5.192
Punkte Reaktionen
1.256
ganz einfach 8)

also bei der speicherindirekten adressierung steht die adresse im operanden. dieser opperand benötigt ein doppelwort.

irgendwo in deinem programm schreibst du in dieses doppelwort eine zahl die diesem opperanden später zugewiesen wird.

in diesem doppelwort geben die bits 3-18 die bytenummer an und die bits 0-2 die bitnummer. da du aber bei der adressierung eines bausteines oder eines byts, wortes oder doppelworts keine bitnummer brauchst bzw nur die bytes 3-18 ausgelesen werden, wäre die zahl falsch!

deshalb muss das gesammte bitmuster in dem dw um drei stellen nach links verschoben werden weil es ja erst ab dem dritten bit ausgelesen wir.
 
Oben