Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 03:21

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



ASM Adressierungs Frage

Discussion on ASM Adressierungs Frage within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2008
Posts: 14
Received Thanks: 2
ASM Adressierungs Frage

Hi,

ich hab so basis bis mittelgute assembler kenntnisse will ich mal behaupten, allerdings is mir letztens ein stück code über den weg gelaufen den ich nich so ganz verstehe. vielleicht kann mir einer von euch ja mal kurz erklären was da hinter stekt ^^

code:

mov [ebx],eax

(aus einem video tutorial für tsearch, welches hier in einem andern thread gepostet wurde)

also ich kenn das halt nur andersrum, wenn in eax eine adresse steht und ich auf den wert zugreifen will, würde ich ja z.b. mov ebx,[eax] machen.

aber wenn ich dem ebx register einen wert oder eine adresse zuweisen will, was auch immer, dann mach ich das doch einfach mit "ebx" und nicht "[ebx]", oder nicht?

mfg

loona
Loonatec420 is offline  
Old 12/31/2008, 17:03   #2
 
elite*gold: 0
Join Date: Feb 2008
Posts: 33
Received Thanks: 0
Nicht allzuschwer zu erklären, und zwar hast du z.B. voher
ebx einen Zeiger übergeben, und nun möchtest du, dass der Zeiger woanders hinzeigt.

Z.B.:

Code:
void my_mov( int* src, int* dest )
{
    __asm
    {
        mov eax, src ; Addresse von src nach eax
        mov ebx, dest ; Adresse von dest nach ebx
        mov [ebx], eax ; dest = src
    }
}
zeraaaaaa is offline  
Old 12/31/2008, 17:21   #3
 
elite*gold: 0
Join Date: Dec 2008
Posts: 14
Received Thanks: 2
ahhhh!! ^^

ich glaub ich habs verstanden

d.h.

in deinem beispiel mit

mov [ebx], eax

schreibst du gar nich in ebx selber sondern in die adresse auf die ebx zeigt, oder?

wenn also ebx und eax pointer sind und auf irgendetwas zeigen, würde nach

mov [ebx], eax

ebx also ein zeiger auf einen zeiger sein? nämlich zeigt ebx auf eax, und eax ja wiederum irgendwohin?

sag bitte einfach ja, dann hätte ich es kapiert
Loonatec420 is offline  
Old 01/03/2009, 04:17   #4
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
EBX enthält eine Adresse, die für eine Speicherzelle steht, also zunächst ein simpler DWORD-Wert, und, wenn du nun EBX in eckige Klammern einschließt, heißt das, dass der Speicher an dieser Adresse betroffen ist.
Ob nun hineingeschrieben oder ausgelesen wird.
Wie viele Bytes nun effektiv betroffen sind, kannst du noch mit Größenspezifizierern definieren.

Kleines Beispiel:
Code:
mov eax, 400688    ;ganz normaler, absoluter Ganzzahlenwert
mov eax, [400688]  ;Nun stellt dieser Wert eine Adresse dar und es werden 4 Bytes ab da an aus dem Speicher gelesen
Hier genau das Gleiche:
Code:
xor eax, eax
mov ebx, 400688
mov ebx, eax    ;Der Wert von EAX wird in EBX geschrieben - Der vorhergehende Wert von EBX ist unerheblich
mov [ebx], eax  ;Der Wert von EBX, also 400688, stellt eine Adresse des Speichers dar und in die so spezifizierte(n) Speicherzelle(n) wird der Wert von EAX geschrieben
link is offline  
Thanks
1 User
Old 01/03/2009, 16:04   #5
 
elite*gold: 0
Join Date: Dec 2008
Posts: 14
Received Thanks: 2
yo thx, also isses doch so wie ich meinte, die [] nutzt man genauso wie auch in anderen sprachen in der pointerarithmetik zum "dereferenzieren", um mit den werten zu arbeiten die an der angegebenen speicheradresse stehn.

da is übrigens nen kleinen schönheitsfehler in deinem codebeispiel ^^

xor eax, eax ; eax = 0
mov ebx, 400688 ; ebx = 400688
mov ebx, eax ; ebx = 0
mov [ebx], eax ;Der Wert von EBX, also 400688....

der wert von ebx ist 0 :P
Loonatec420 is offline  
Reply




All times are GMT +1. The time now is 03:22.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.