WinFuture-Forum.de: Assembler: Adressierung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Assembler: Adressierung Adresse eines Elements in einer Liste


#1 Mitglied ist offline   DCBlaze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 88
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 16. Mai 2008 - 12:40

Hi,
ich habe ein kleines Problem die Adresse eines Elements welches sich in einer Liste befindet zu bestimmen. Leider ist der Syntax von NASM anders als der von MASM oder TASM zu denen man viele Beispiele findet. Sobald ich den MASM-Syntax verwende gibt NASM den Fehler "invalid operand type" aus.

Hier sind die relevanten Fetzen Code:

T_BE_ARRAY: DB "DUMMY$", "SSE4.2$", "SSE4.1$", "SSSE3$", "SSE3$", "SSE2$", "SSE1$", "MMX$"


Ausgabe:		   xor eax, eax
				mov ah, 09h
				mov ecx, 7
Ausgabe_LOOP:		  shr ebx, 1
				jnc END_LOOP
				mov dx, T_BE_ARRAY+cx
				int 21h
END_LOOP:		loop Ausgabe


Bin für jede Hilfe dankbar.

Gruß
DCBlaze
0

Anzeige



#2 Mitglied ist offline   FaceItReal 

  • Gruppe: aktive Mitglieder
  • Beiträge: 42
  • Beigetreten: 11. Januar 06
  • Reputation: 0

geschrieben 21. Mai 2008 - 08:44

Genau kann ich dazu nichts sagen, aber probier mal eckige Klammern:

mov dx, [T_BE_ARRAY+cx]

Möglicherweise musst cx noch mit der Größe eines Pointers multiplizieren:

mov dx, [T_BE_ARRAY+cx * 2]


Nimm doch C, dann musst du dich nicht mit ASM rumquälen. (Und ein C-Compiler erzeugt in den meisten Fällen besseren Code.)

Dieser Beitrag wurde von FaceItReal bearbeitet: 21. Mai 2008 - 08:46

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0