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
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:
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

)
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 ?
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