Verständnisfrage
-
Hallo,
ich versuche zur Zeit mehrere Aufgaben zu wiederholen und bin auf eine Aufgabe gestoßen, wo ich nicht so richtig weiß, was ich damit anfangen soll.Hier der Link zur Aufgabenstellung:
http://s14.directupload.net/file/d/3178/uzpcebtr_jpg.htm
Könnt Ihr mir helfen?
-
Wobei sollen wir dir helfen? Mit welchem Teil dieser Aufgabe kannst du denn nichts anfangen?
-
Ich wollte nur wissen, was ich machen soll.
Ich bin jetzt darauf gekommen, das ich den Inhalt angeben muss des Registers AL zum Beispiel.Verstehenich es richtig, dass sobald dort [AL] stehen würde, AL nicht mehr ein Register, sondern nun eine Speicherzelle wäre?
Weiterhin noch eine Frage, wieso erhöht sich der Wert, zum Beispiel in Teilaufgabe k.) jeweils um 1?
Die Lösung von k wäre ja 12345678H,12345679H,1234567AH,1234567BH?
-
Was du machen sollst, ist doch beschrieben? Wenn du nicht weißt, was die Aufgabe des MOV-Befehls oder der eckigen Klammern ist, dann guck in deinen Unterlagen nach oder verwende eine Suchmaschine. Bei x86 findest du genügend Material.
Verstehenich es richtig, dass sobald dort [AL] stehen würde, AL nicht mehr ein Register, sondern nun eine Speicherzelle wäre?
AL bleibt ein Register(-name). Eckige Klammern bezeichnen eine Speicherzelle und dessen Adresse befindet sich eben dazwischen.
[AL]
ist also die Speicherzelle an der Adresse, die sich in AL befindet. Das nennt sich Register-indirekte Adressierung.
Z.B. bei a): das Byte an AdresseAAAA BBBB
(Inhalt von EBX) wird in AL geladen. Lsg.:AAAA BBBB
Weiterhin noch eine Frage, wieso erhöht sich der Wert, zum Beispiel in Teilaufgabe k.) jeweils um 1?
Die Lösung von k wäre ja 12345678H,12345679H,1234567AH,1234567BH?Die Lösung jeder der Teilaufgaben ist _eine_ Adresse. k) kann daher keine 4 Lösungen haben oder bezieht sich das auf eine andere Aufgabe?
-
Nein auf unsere Teilaufgabe k bezieht sich das. Unser Seminarleiter hat die Lösungen so vorgegeben.
Bei Zeilaufgabe j sind es auch 2 "Lösungen".
-
Ich hab mich vertan . Natürlich können auch mehrere Adressen pro Teilaufgabe die Lösung sein! Das liegt daran, dass EBX ein 4 Byte großes Register ist und dann eben 4 Speicherzellen, angefangen mit der Adresse in den eckigen Klammern, ausgelesen werden.
-
Ok, vielen Dank.
Mir ist das mit der eckigen Klammer immernoch schleierhaft. Ich habe mir jetzt vieles Durchgelesen, aber so richtig will es nicht klappen. In den eckigen Klammern steht also immer die Adresse einer Speicherzelle?
-
Patrick1990 schrieb:
Ok, vielen Dank.
Mir ist das mit der eckigen Klammer immernoch schleierhaft. Ich habe mir jetzt vieles Durchgelesen, aber so richtig will es nicht klappen. In den eckigen Klammern steht also immer die Adresse einer Speicherzelle?
Mal ganz langsam. Es sieht mir ganz nach dem Intel-Syntax aus der hier verwendet wird und das bedeutet "Befehl Ziel, Quelle".
Dann wird der Inhalt von eckigen Klammern immer als Adresse interpretiert.
Wobei dort entweder nur ein einzelnes Register als Adressregister enthalten sein kann, oder optinal 2 Register kombiniert als Base+Indexregister und optinal zusammen mit dem Scaling(Index*Scale coefficient von 2, 4, oder und wieder optinal zusammen mit einem Displacement kombiniert werden können.h) mov al,[EDX+ECX*8+8200h]
Adresse = DS:EDX+ECX8+8200h
Adresse ergibt sich aus Segment-Adresse im DS-Descriptor/ oder DS-Segment-Registers
+dem Inhalt von ECX8
+Inhalt von EDX
+8200h
Von dieser Adresse werden 8 Bits(ein Byte) in das AL-Register geladen.d) hier wird das EBP-Register als Adrssregister verwendet welches genauso wie das ESP-Register defaultmäßig zum SS-Segment zugeordnet ist.
(Alle anderen verwendbaren Adressregister werden defaultmäßig zum DS-Segment zugeordnet. Wenn EBP oder ESP als Adressregister alleine oder zusammen mit anderen Adressregister verwendet werden, dann SS-Segment.)Aus den folgenden Tabellen zur Bildung eines Postbytes/Mod R/M-Bytes ergeben sich die verschiedenen Adressierungsmöglichkeiten die wir verwenden können.
(Betrachtet aus dem 16 bit address mode, wo das D-flag nicht gesetzt ist
und wofür eine 32 bit-Adresse ein Address-override-prefix benötigt.)Instruction Prefix 0 or 1 Byte Address-Size Prefix 0 or 1 Byte Operand-Size Prefix 0 or 1 Byte Segment Prefix 0 or 1 Byte Opcode 1 or 2 Byte Mod R/M (Postbyte) 0 or 1 Byte SIB, Scale Index Base (386+) 0 or 1 Byte Displacement 0, 1, 2 or 4 Byte (4 only 386+) Immediate 0, 1, 2 or 4 Byte (4 only 386+) Format of Postbyte(Mod R/M from Intel-Manual) ------------------------------------------ MM RRR MMM MM - Memeory addressing mode RRR - Register operand address MMM - Memoy operand address RRR Register Names Filds 8bit 16bit 32bit 000 AL AX EAX 001 CL CX ECX 010 DL DX EDX 011 Bl BX EBX 100 AH SP ESP 101 CH BP EBP 110 DH SI ESI 111 BH DI EDI --- 16bit memory (No 32 bit memory address prefix) MMM Default MM Field Field Sreg 00 01 10 11=MMM is reg 000 DS [BX+SI] [BX+SI+o8] [BX+SI+o16] 001 DS [BX+DI] [BX+DI+o8] [BX+DI+o16] 010 SS [BP+SI] [BP+SI+o8] [BP+SI+o16] 011 SS [BP+DI] [BP+DI+o8] [BP+DI+o16] 100 DS [SI] [SI+o8] [SI+o16] 101 DS [DI] [DI+o8] [SI+o16] 110 SS [o16] [BP+o8] [BP+o16] 111 DS [BX] [BX+o8] [BX+o16] Note: MMM=110,MM=0 Default Sreg is DS !!!! 32bit memory (Has 67h 32 bit memory address prefix) MMM Default MM Field Field Sreg 00 01 10 11=MMM is reg 000 DS [EAX] [EAX+o8] [EAX+o32] 001 DS [ECX] [ECX+o8] [ECX+o32] 010 DS [EDX] [EDX+o8] [EDX+o32] 011 DS [EBX] [EBX+o8] [EBX+o32] 100 SIB [SIB] [SIB+o8] [SIB+o32] 101 SS [o32] [EBP+o8] [EBP+o32] 110 DS [ESI] [ESI+o8] [ESI+o32] 111 DS [EDI] [EDI+o8] [EDI+o32] Note: MMM=110,MM=0 Default Sreg is DS !!!! --- SIB is (Scale/Base/Index) SS BBB III Note: SIB address calculated as: <sib address>=<Base>+<Index>*(2^(Scale)) Fild Default Base BBB Sreg Register Note 000 DS EAX 001 DS ECX 010 DS EDX 011 DS EBX 100 SS ESP 101 DS o32 if MM=00 (Postbyte) SS EBP if MM<>00 (Postbyte) 110 SS ESI 111 DS EDI Fild Index III register Note 000 EAX 001 ECX 010 EDX 011 EBX 100 never Index SS can be 00 101 EBP 110 ESI 111 EDI Fild Scale coefficient SS =2^(SS) 00 1 01 2 10 4 11 8
Dirk
-
Vielen Dank Dirk.
Wir haben dies in der Uni nur sehr schlecht beigebracht bekommen, bin nicht der einzige, der diese Verständnisprobleme hat und bin Dankbar für jede Antwort.