Frage

Was ist der kürzeste Weg, um einen Wert aus dem Speicher in X86 Assembler zu holen?

War es hilfreich?

Lösung

Sie meinen anderen als MOV -Register, [Adresse]?

Andere Tipps

Es gibt keine Problemumgehung im Assembler Haw, um dies zu tun. Alle Anweisungen des Assemblers sind streng engagiert.

mov AL, 0x12

Laden Sie den Wert 0x12 sofort, um sich zu registrieren

xor  AL,AL

Das Ergebnis des Betriebs im Al -Register beträgt 0

lodsb

lädt Byte aus DS: [ESI] (oder DS: [si] unter 16 Bit CPU) Speicheradresse an AL

mov AL,[ESI]

lädt Byte aus DS: [ESI] (oder DS: [si] unter 16 Bit CPU) Speicheradresse an AL

mov AL,[0xFFFF]

lädt Byte von DS: [0xffff] Speicheradresse an AL

pop AX

lädt Byte von SS: [esp] (oder SS: [sp] unter 16 Bit CPU) Speicheradresse an AL

in AL, 0x123

Laden Sie Byte von der Portadresse 0x123

xlatb [EBX + AL]

Laden Sie Byte aus DS: [EBX + Al] Speicheradresse

...

Ok, der kürzeste Weg ist, Register zu popieren, wie pop eax, Es ist eine Byteanweisung.
Dies kann jedoch nur in besonderen Fällen verwendet werden, bei denen der Stapelzeiger ESP auf einen Puffer verweist.
Und wahrscheinlich werden Sie den Stapel nicht für einen anderen Zweck verwenden, bis der Code, der ihn verwendet, erledigt ist.

Der Standardweg besteht darin, die zu verwenden mov Anweisung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top