Wert durch Addresse erhalten
-
Hi!
Ich arbeite mich derzeit ein wenig in Assembler ein und bin nun auf ein "Problem" gestoßen. Ich definiere in C ein UINT-Array (
UINT dwArr[] = { 13, 37, 42, 24 };
) und möchte innerhalb des Inline-Assemblers aufdwArr[1]
zugreifen.Bisheriger Ansatz:
UINT dwArr[] = { 13, 37, 42, 24 }; ... __asm { pushad ; push double regs lea eax, dwArr ; load &dwArr into accu reg add eax, 4h ; &dwArr += 4 ( dwArr[1] ) popad ; pop double regs } ...
Frage:
eax enthält nun die Addresse von dwArr[1]. Durch welchen Befehl (/Operator ?) teile ich dem Assembler nun mit mir den Wert, der hinter dieser Addresse steckt, zu liefern?MfG, 0x2A
-
entweder:
lea eax, dwArr mov eax,[eax+4]
oder direkt:
mov eax,dwArr[4] ; (4 Byte Offset)
-
Danke für deine Antwort.
... Das Problem hat sich jetzt eh erledigt. Ich Tollpatsch hatte das Ergebnis schon... habe mich nur immer gewundert, wieso er eine 25 anstatt einer 37 bei
dwArr[1]
ausgibt... Hexadezimale Ausgabe...
while(1) { Kopf = Tisch; Sleep( 5000 ); }
MfG, 0x2A
-
Nur nen sleep; von 5000? mit 50000 kommste hin! :p
-
0x2A_ schrieb:
while(1) { Kopf = Tisch; Sleep( 5000 ); }
Kopf = Tisch ist immer true. Ist also ne Endlosschleife ...
-
FrEEzE2046 schrieb:
Kopf = Tisch ist immer true. Ist also ne Endlosschleife ...
while(1)
-
while ist kein Funktionsaufruf, daher:
while (1) { ... }
-
abc.w schrieb:
while ist kein Funktionsaufruf
wirklich?
-
while(1) schrieb:
abc.w schrieb:
while ist kein Funktionsaufruf
wirklich?
Ja, unglaublich, aber wahr!