Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Adressierungsarten


1. Java
2. Viren

Soll ein Register (hier beispielsweise der Akkumulator eax) über MOV eax, mit einem Wert geladen werden, dann stehen drei Möglichkeiten zur Verfügung:

. Unmittelbarer Operand (Immediate): MOV eax,6a02h
Das Akkumulatorregister eax wird mit dem Wert 6a02h geladen. Dieser Wert wird zur Programmierzeit fest vorgegeben und ist Bestandteil des Programmcodes, d.h. er erscheint als Bestandteil des Befehlsstromes, der aus dem Speicher geladen wird. Das zugeordnete Segment ist also das Codesegment CS und nicht das Datensegment DS oder ein Extrasegment.


. Registeroperand: MOV eax, ebx
Das Register eax wird mit dem Wert im Register ebx geladen. Auch im obigen Beispiel war eax ein Registeroperand (nämlich Ziel- oder Destination-Operand). Hier ist nun auch der Quellen- oder Source-Operand ein Register (nämlich ebx).

. Speicheroperand: MOV eax, mem32
Anstelle von mem32 muß in diesem Fall die effektive Adresse des symbolischen Operanden stehen, der in den Akkumulator übertragen werden soll. Ist die effektive Adresse fest, d.h. bereits zur Assemblierzeit bekannt, wird sie bereits vom Assembler berechnet. mem32 ist in diesem Fall ein direkter Speicheroperand. Weist die effektive Adresse einen veränderlichen Anteil (meist ein Register) auf, so berechnet die CPU zur Laufzeit die effektive Adresse. In diesem Fall stellt mem32 einen indirekten Speicheroperanden dar.

Als effektive Adresse bezeichnet man den Offset des Operanden innerhalb des ausgewählten Segments (hier: DS). Die effektive Adresse setzt sich aus bis zu vier Elementen zusammen.


. Displacement: MOV eax, array[0]
Im assemblierten Programm steht anstelle der symbolischen Adresse array[0] eine Zahl. Befindet sich array[0] beispielsweise an der Stelle 0f2h, so lautet der Befehl in diesem Fall MOV eax,[0f2h]. Diese Art der Adressierung darf nicht mit einem unmittelbaren Operanden verwechselt werden: Bei einem Displacement wird der Wert an der angegebenen Adresse und nicht der Wert selbst angesprochen. In diesem Beispiel also der Wert am Offset 0f2h im Segment DS und nicht der Wert 0f2h selbst.

. Basisregister: MOV eax, [ebx]
Der Befehl lädt den Operanden im Segment DS bei dem Offset, den der Wert im Register ebx angibt, in den Akkumulator. Weist ebx beispielsweise den Wert 0f2h auf, so ist dieser Befehl äquivalent zu MOV eax,[0f2h]. Der Unterschied besteht nur darin, daß der Wert in ebx zur Laufzeit dynamisch verändert werden kann, array[0] jedoch einen während des Programmablaufs stets festen und konstanten Wert darstellt.


. Indexregister: MOV eax,[esi]
In dieser Grundform ist die Verwendung eines Indexregisters identisch mit der Benutzung des Basisregisters. Zusätzlich besteht aber noch die Möglichkeit, einen Skalierungsfaktor anzugeben. Als Indexregister sind esi und edi gültig.

. Skalierungsfaktor: MOV eax, [esi*4]
Um die effektive Adresse zu berechnen, wird beim angegebenen Beispiel der Wert des Indexregisters mit 4 multipliziert. Hierdurch können Felder angesprochen werden, deren Inhalt vier Byte lang ist. Für den Skalierungsfaktor können die Faktoren 1, 2, 4 oder 8 verwendet werden, die Skalierung (Multiplikation) selbst erfolgt ohne Zeitverlust.

Displacement, Basisregister, Indexregister und Skalierungsfaktor können in beliebiger Kombination angewandt werden. Damit können sehr ausgeklügelte und mehrdimensionale Felder definiert werden.


Beispiel:
Gegeben sei ein Feld mit 10 Elementen, das 10 verschiedene Körper bezeichnet. Jedes Element besitzt den Aufbau Höhe:Breite:Tiefe:Querschnitt. Die Teilelemente Höhe, etc. umfassen jeweils 1 Byte. Das Feld beginnt bei 0c224h. Durch die folgenden Zeilen kann die Tiefe der Elemente in den Akkumulator eax geladen werden.
MOV ebx, 0c224h ;Laden der Basisadresse in ebx
MOV esi, ;Laden der Elementnummer in esi
MOV eax, [ebx+esi*4+2] ;Tiefe (Displacement 2 gegenüber dem Beginn des Elements) des Elements ;(Elementgröße = 4 Byte, daher Skalierung 4) des Feldes (beginnend bei der Basisadresse in ;ebx) in den Akkumulator eax laden.

 
 

Datenschutz
Top Themen / Analyse
indicator Abschließender Vergleich der analysierten Lernprogramme
indicator Voraussetzungen zum Einstieg
indicator Symmetrische und asymmetrische Verfahren
indicator Übertragungsrichtungen
indicator Programme zur Benutzerverwaltung
indicator Kurzeinführung in JAVA
indicator DRAM (Dynamic-RAM):
indicator DNS
indicator 3D-Modellierung-
indicator Unterschiede, Gemeinsamkeiten ISO zu anderen Modellen


Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution