Seite 2 von 2

Verfasst: 23.04.2005 12:50
von zigapeda
jetzt hätte ich noch mal eine frage: wenn ich was an eine adresse kopieren wil dann schreib ich

Code: Alles auswählen

mov ds:dx,eax
oder?
Und was ist jetzt mit dem push? stimmt das mit push ds:dx?

Verfasst: 23.04.2005 12:58
von Danilo
zigapeda hat geschrieben:Und was ist jetzt mit dem push? stimmt das mit push ds:dx?
Das sieht nach DOS (oder ohne OS) aus, und Du hast noch
nichtmal gesagt welches Programm Du zum assemblieren
verwendest. TASM, MASM, NASM, FASM, Debug, ... ?

Die Syntax bei den Assemblern unterschiedet sich teilweise
beim ansprechen von Adressen und Registern. Bei dem einen
kommt ein Klammerpaar [] drumherum, wenn man auf den
Inhalt zugreifen will, bei einem anderen nicht usw.

Beispiel:

Code: Alles auswählen

MOV AX, variable
Bei einem Assembler heißt das "offset von variable nach AX",
bei einem anderen heißt das "inhalt von variable nach AX".

Diese Feinheiten sind im Handbuch Deines Assemblers beschrieben.

Verfasst: 23.04.2005 13:37
von zigapeda
Eigentlich mit NASM und wie meinst du das mit dem handbuch?

Verfasst: 23.04.2005 14:30
von traumatic
zigapeda hat geschrieben:Eigentlich mit NASM und wie meinst du das mit dem handbuch?
Na das Handbuch, die Doku, das Manual...
http://nasm.sourceforge.net/doc/html/nasmdoc0.html

Verfasst: 23.04.2005 15:04
von zigapeda
uff wo soll ich da zu suchen anfangen? Eigentlich will ich ja nur wissen ob das mit der adresse so funktionieren könnte also push ds:dx. was wird da gepusht? die adresse selber oder der inhalt der speicherzelle mit der adresse?

Verfasst: 05.05.2005 21:25
von Eric
Wenn ich die Doku von NASM richtig interpretiert hab,
wir durch
push ds:[si]
(jedenfallsunter DOS)
das dword was im Segment cs am offset si ist, auf den Stack gepackt wird.
(kann mich aber auch irren :lol: )

Verfasst: 05.05.2005 23:14
von zigapeda
Ah aus der antwort kann ich rauslesen das man adressen mit ds:dx angibt. thx

Verfasst: 06.05.2005 08:19
von DarkDragon
traumatic hat geschrieben:Wozu denn das LEA ?

Code: Alles auswählen

!PUSH [v_TestVar]
!CALL [MeineGeileTestFunk]
Machs gleich lauffähig ^^ :

Code: Alles auswählen

Procedure MeineGeileTestFunk(a.l)
  Debug a
EndProcedure

MeineGeileTestFunk.l = @MeineGeileTestFunk()
TestVar.l = 10
!PUSH dword [v_TestVar]
!CALL [v_MeineGeileTestFunk] 
Oder hier:

Code: Alles auswählen

Procedure MeineGeileTestFunk(a.l)
  Debug a
EndProcedure

TestVar.l = 10
!PUSH dword [v_TestVar]
!CALL _Procedure0