2017-05-26 8 views
1

Ich habe die folgende Montagebefehle:Wie speichert mov eax Daten im Speicher?

mov eax, 10001 
mov [eax], DEADCODEh 

Was ich weiß, ist

  • ich über X86 spreche
  • eax hat 32 Bits
  • ich Little-Endian im Auge zu behalten haben

Also, wie sieht das Gedächtnis aus? Wird die ganze Hex-Nummer bei 10001 oder nur ein Teil davon gespeichert? Wie sehen die Adressen 10002, 10003 und 10004 aus?

+0

Warum Sie es nicht versuchen, herauszufinden? – Iridium

Antwort

3

Der Code führt die folgenden:

  1. Last eax mit dem Wert 10001 (dezimal). Dies ist 0x2711 in Hexadezimal. Der Wert eax ist jetzt 0x00002711. Beachten Sie die führenden Nullen, da eax ein 32-Bit-Register ist.
  2. Speichern Sie den Wert 0xdeadc0de (notieren Sie die 0, die Sie falsch kopiert/eingefügt haben) in den Speicher unter der Adresse eax. Da die Byte-Reihenfolge Little Endian ist, wird der Speicher um 10.001 gehen folgende Inhalte haben:

    10001: 0xde 
    10002: 0xc0 
    10003: 0xad 
    10004: 0xde 
    
+0

Vielen Dank. Jetzt bin ich verwirrt. Ich dachte, Little Endian bedeutet hohen Adresswert für niedrigen Stellenwert? – isecstud

+1

@isecstud Nein. Das wäre Big Endian. Little Endian bedeutet, dass das niedrigstwertige Byte zuerst kommt. Für Einzelheiten siehe [Wikipedia] (https://en.wikipedia.org/wiki/Endianess#Little). Vergessen Sie nicht, die Antwort als akzeptiert zu markieren, sobald Ihr Problem gelöst wurde. – fuz

+0

Vielen Dank. Jetzt habe ich meine Frage als durch Ihre Antwort gelöst markiert. – isecstud

Verwandte Themen