Jetzt kostenlos registrieren
   
News    Board    DBase    Kinoarchiv    Gruppen    Chat    Teamspeak    Wiki    Banner    Regeln    Team Jetzt kostenlos registrieren! 

Willkommen :)
Nachrichten
Neu: n/a
Insg.: n/a
Neue PN schreiben
Mein Profil
Du hast schon einen Account? Hier kannst du dich anmelden.


 



Wir speichern nicht!


Wenn du dich aktiv gegen den Überwachungswahn engagieren möchtest,
klicke hier



 
Suck my GUI
Benutzerbild von redhell

Registriert seit:
20.07.2007
Beiträge: 265
Für Beiträge bedankt: 195
Erhielt 132 Danke
für 65 Posts
Rang: 21
redhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunft
 
Beitrag #1 (Link) Segmentregister u. Addressierung d. RAMs [ASM] erstellt am: 16.05.2008 um 17:02
Moin,

Teil 3 handelt von den Segmentregistern und von der Addressierung im RAM.

Um die SR (SegmentRegister) zu verstehen ist es hilfreich mit der Addressierung im RAM (=Arbeitsspeicher) zu arbeiten.
Ein Speicherbereich wird als Segment bezeichnet im Programmieralltag... Also die CPU hohlt sich ihre Daten immer aus dem RAM um damit zu arbeiten.
Damit die CPU das unterscheiden kann gibt es das Datensegment (DS), also für Variablen etc, und das Codesegment (CS), indem alle Befehle ausgeführt werden.
Code:
Segmentregister          | RAM       | Offsetregister
                                  | Ende      |
Codesegment(CS)       | Befehle   | IP
Datensegment(DS)      | Daten     | SI / DI / BX
Extrasegment(ES)        | m. Daten| SI / DI / BX
Stapelsp.-Segment(SS)| m. Prog. | 
                                  | speicher |
                                  | Anfang   |
                                  | RAM       |
oben alle Register für x86 CPUs

Im SR wird der Startpunkt für die Addressierung gesetzt, was innerhalb von 16Bit liegen muss (!). DH es können maximal 65.536 Punkte angesprochen werden. Diese nennt man Paragraphen.
Was nun wenn ich 20 Bit anpsrechen möchte?
Lösung: Das Offsetregister (OR). Das OR gibt den Endpunkt der Addressierung an, dh der Bereich zwischen SR und OS ist der bereich den wir ansprechen bzw addressieren wollen.
Will man den nun ansprechen muss man den Wert im SR mal 16 rechnen (bei hexadezimaler rechenart immer eine 0 anhängen).
Aus dem 16Bit SR wert 100h (h=hexadezimal) wird der 20bit wert 1000h. Dual gesehen wird die Addresse um 4Bit nach links geschoben was ein multiplikation mit 16 entspricht.
Nun SR + OR und schon haben wir 20Bit große Addresse. Da das OR nur 16Bit groß ist ist die maximale Variablengröße auf 64KByte begrenzt!

Beispiel:
Das Segment beginnt an stelle 176d (dezimal) und soll 78 Byte später enden.

Segmentaddresse = 176d = B0 = 10110000
Offsetadresse = 78d = 4E = 01001110
10110000 0000
+ 0100 1110
_____________
10110100 1110
__________________________________________________ _________________________________________
Es können beliebig viele Segmente definert werden, aber immer nur 4 gleichzeitig angesprochen werden.

CS: Codesegmet wo alle Befehle verarbeitet werden x86 bildet die 20Bit Addrese (CS:IP)

DS: Für Variablen, Konstaten etc... um die 20 Bit addresse zu bilden werden die OR SI,DI,BX verwendet

ES: Reicht der platz im DS nicht aus, dann ist das ES genau richtig... hier kommt alles rein was nicht ins DS reinpasst. Gleich OR wie im DS

SS: Schneller speicher zum zwischenspeichern von Daten. Die Addresse wird durch SS:SP gebildet (Stapelsegmentpointer)

__________________________________________________ _________________________________________

Der Befehlszeiger IP (Instruction Pointer)

Der IP zeigt im CS darauf welcher Befehl als nächstet verarbeitet werden soll.

Indexregister SI und DI

SI = Sourceindex, dieser gibt an wo die quelle ist wo Daten her kommen
DI = Destinationindex, gibt an wo die Daten hinsollen

Base Pointer (BP)

Will man im SS zugreifenbraucht man ihn um die sachen zu finden bzw dieser kann auch als Index verwenden.

Stapelspeicher- Pointer (SP)

Zeigt immer auf die Aktuelle Position im SS.

__________________________________________________ _________________________________________
Der Stapelspeicher (auch Stack,Stapel)

Läuft nach dem simplen prizip Last-In-First-Out (LIFO) also nach dem motto: was als letztes drin küt auch als erstes raus ;-)
Um sachen in den Stack zu schieben musst du pushen (=drücken) mit dem Befehl PUSH bzw um es rauszuhohlen poppen (xD) mit dem Befehl POP.

Bsp:

Code:
mov ax, wichtig
mov bx,wichtiger ;hab ich schonmal erklärt mit MOV
push ax ;yeah, AX ist im Stapel 
push bx ; gleich mit BX
; iwas machen
;iwas machen
pop bx ; bx is back ;D
pop ax ; huch ax is auch :D => Werte sind unverändert
Es kann alles reingeschoben werden außer der IP!!!

Das wars erstmal, nächstes Thema STATUSREGISTER.
Viel Spaß beim Lesen und grübeln. Fragen etc
Links sind  nur für registrierte Mitglieder sichtbar.
INFO: Die Registrierung dauert nur ein paar Sekunden. 

 
oder pmen

Sag Niemals Nie!
Programmiersprachen:
Visual Basic, Delphi, C++, PHP, HTML, SQL, JavaScript
Mein Post hat dir geholfen? Danke Sagen
redhell ist offline Mit Zitat antworten Antwort
 
DDLB-Elly
treue Memberin


Registriert seit:
26.06.2007
Beiträge:
228

Für Beiträge
bedankt:
326
Erhielt 194 Danke
für 79 Posts
Rang:
91

knoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäreknoob sorgt für eine eindrucksvolle Atmosphäre
knoob sorgt für eine eindrucksvolle Atmosphäre
Standard erstellt am: Gestern um 19:02

Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen.
Albert Einstein



 
C.der
Benutzerbild von Jeix

Registriert seit:
23.10.2007
Ort: Direkt hinterm Lüfter PIN 12
Beiträge: 310
Für Beiträge bedankt: 55
Erhielt 232 Danke
für 82 Posts
Rang: 36
Jeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes Ansehen
 
Standard #2 (Link) erstellt am: 17.05.2008 um 00:25
Nice, sind zwar nicht sooo viele Infos drin, aber du hast dir Mühe gegeben, es übersichtlich und gut erklärt. Thanks. Nur ganz oben den ersten Code-Block, kann man nicht richtig erkennen, was was sein soll.


Visit hxxp://issen.tk

Jeix ist offline Mit Zitat antworten Antwort
 

 
Suck my GUI
Benutzerbild von redhell

Registriert seit:
20.07.2007
Beiträge: 265
Für Beiträge bedankt: 195
Erhielt 132 Danke
für 65 Posts
Rang: 21
redhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunftredhell hat eine strahlende Zukunft
 
Standard #3 (Link) erstellt am: 17.05.2008 um 12:52
ne tabelle--- scheiß code fenster
Um ASM verstehen zu können muss man von anfang beginnen. Wenn ich jetzt dirckt mit direkter Addressierung oder ähnliches angefangen wäre, dann hätten sich warscheinlich fragen aufgetan die es jetzt nicht mehr so gibt!

Sag Niemals Nie!
Programmiersprachen:
Visual Basic, Delphi, C++, PHP, HTML, SQL, JavaScript
Mein Post hat dir geholfen? Danke Sagen
redhell ist offline Mit Zitat antworten Antwort
 

 
C.der
Benutzerbild von Jeix

Registriert seit:
23.10.2007
Ort: Direkt hinterm Lüfter PIN 12
Beiträge: 310
Für Beiträge bedankt: 55
Erhielt 232 Danke
für 82 Posts
Rang: 36
Jeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes AnsehenJeix genießt hohes Ansehen
 
Standard #4 (Link) erstellt am: 17.05.2008 um 21:03
Das stimmt, durch meiner Kenntnisse in C++, war das auch viel leichter für mich zu verstehen. Damit meine ich auch die anderen Tutorials, in die ich mich zurzeit einarbeite .


Visit hxxp://issen.tk

Jeix ist offline Mit Zitat antworten Antwort
 

  Lesezeichen

Antwort


Themen-Optionen

 
Themen, die dich interessieren könnten
Thema Autor Forum Antworten Letzter Beitrag
CPU Register [ASM] redhell Tutorials 3 16.05.2008 23:15
Grundlagen assembler [ASM] redhell Tutorials 0 29.04.2008 15:25
2 rams nichts geht chriss0022 Allgemein (Hardware) 29 08.02.2008 21:14



News   |   Board    |   Chat    |   Teamspeak    |   Team   |   Stuff    |   Partner   |   Archive

SEO by vBSEO 3.2.0


Umbau läuft (v4)