Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
14.01.2003, 11:46
snoopdog



Hi, kennt hier wer nen gutes vernünftig geschriebenes tut, zur indirekten Adressierung in asm?? Oder überhaupt über Adressierung in asm??? Hab mal bei google geguckt, nur da kommen zum teil richtig bescheuert geschriebene Sachen raus....

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
001
14.01.2003, 16:35
[RMen]OneStone



Vielleicht so:

Quellcode:mov eax, 0xF0F0F000
mov [eax], 0x02
Jetzt sollte 0x02 an der Speicherstelle 0xF0F0F000 stehen.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
002
15.01.2003, 15:29
Mazze



Jo, das ist indirekte Adressierung.

In Art Of Assembly Language steht da was drin. ch04
Musst halt mal google bemühen...da gibts viele seiten die das Buch haben.

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
003
15.01.2003, 15:55
Kriz



Sieh an, eine Zuweisung via Dereferenz... Aber noch sehr viel tiefgreifender als C/C++ es können. Schließlich kann der Coder beim Anlegen eines Zeigers nicht den Speicherplatz bestimmen, den bekommt er ja vorgesetzt von der RTE/Compiler. Allerdings sollte man da schon sehr genau wissen, was 0xF0F0F000 vor der Adressierung beherbergt hat. Da einfach mal 0x02 reinzuhauen kann böse enden...

Jaja, war ja nur ein Beispiel, is ja gut, Jungs =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
15.01.2003, 16:33
Tron



kriz, mit gewalt geht alles... (;
Quellcode:void* p = reinterpret_cast<void*>(0xdeadbeef);aber blos nicht zuhause nachmachen, kinder!

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
005
15.01.2003, 18:53
Diablo_bth



oh ja so Spielereien kenne ich. Z.B. wenn da mal wieder was net gefuntzt hat:
Quellcode:if( node == (bsp_node*)0x0123ABCD )
  __asm int 3;
-> we are trained professionals here! do not try that on your own!

--


Dieser Beitrag wurde am 15.01.2003 um 18:57 von Diablo_bth bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
15.01.2003, 19:00
K-Putt



Ich kann leider kein asm, aber könnt ihr mir sagen was passieren würde, wenn man eure beispiele testet? Explodiert der PC? Wird die Partitionstabelle zerfetzt?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
007
16.01.2003, 09:13
Kriz



Quark. Aber du weißt ja nicht, was die Adresse vorher für einen Wert gespeichert hat und für welche Komponente der RTE dieser Wert bedeutsam war. Wenn da mal angenommen die Anfangsadresse des lokalen Heaps des Programms ist und du da auf einmal 0x02 reinpfefferst... Eieiei =)

IGGWERIDMGUIEIDAG, was heißt: Solche Spielereien sind immer evil. Man sollte nicht immer mit freakigen Sachen hackz0ren, wenn man dafür überhaupt keinerlei praktische Verwendung findet. Da dies in 99% der Fälle so ist, sollte man also die Finger von der indirekten Adressierung lassen und das dem Compiler bzw. der RTE überlassen. Dann klappts auch mit der Nachbarstochter...

Cu

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 16.01.2003 um 09:14 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
16.01.2003, 09:49
WareWolf



zudem ist das Beispiel falsch. Als Index kann AX oder EAX gar nicht nicht verwendet werden, wenn schon indirekt, dann [BX] oder die "richtigen" [DI], [SI] ...

ausserdem kann kein direkter Wert indirekt übergeben werden, mann muss das über ein anderes Register machen

mov bx,0abcd
mov [bx],2 ;falsch Befehl unbekannt

richtig wäre
mov bx,0abcd
mov ax,2
mov [bx],ax

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW


Dieser Beitrag wurde am 16.01.2003 um 09:57 von WareWolf bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
16.01.2003, 14:10
Prefect



Warewolf, die 16-Bit-Zeiten sind vorbei. Die Prozessoren ab dem 386er aufwärts können _alle_ (32-Bit-)Register als Basisregister verwenden. Nur bei Registercombos (a la EBX+ESI) gibt es noch die alten Beschränkungen.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
010
16.01.2003, 15:19
WareWolf



ja ja ist ja gut ... ich will halt bis in die Steinzeit abwärtskompatibel bleiben ;)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
011
16.01.2003, 15:47
snoopdog



@Warewolf: hehe auch nen Lebensstil *g*
ne aber eigentlich wollte ich damit recht wenig, nur in meinem Buch stannt es zusammem mit dem DI,SI Register und dann konnt ich da gar nix mehr mit anfangen,von daher wollte ich nur mal short fragen,dankeschön :)

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche