Assembler

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Eigentlich mit NASM und wie meinst du das mit dem handbuch?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
traumatic
Beiträge: 478
Registriert: 27.11.2004 15:42

Beitrag 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
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag 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: )
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ah aus der antwort kann ich rauslesen das man adressen mit ds:dx angibt. thx
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten