Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

assembler Info
Gehe zu Seite Zurück  1, 2
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> assembler Info
 
Autor Nachricht
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 02 Jun 2007 - 20:28:04    Titel: assembler Info

Hi,

ich wollte mich mal an Assembler-Programmierung versuchen.
Habe leider bisher überhaupt keine Ahnung was ich dazu alles benötige und wie ich vorgehe.

Also ich arbeite unter Windows XP mit einem Intel Pentium 4 Prozessor.
Welche Assemblersprache nehme ich da?
Welchen Assembler kann ich benutzen? NASM ist nur für Win NT?
Es reicht ja erst einmal der Editor als Texteingabe, oder?

Wie genau geht man vor...
Ich meine damit nicht, dass ich etwa Befehle gesagt bekommen möchte, sondern vielmehr, was muss ich alles erledigen(Installation etc...), bis ich mit dem schreiben anfangen kann?

Vielen Dank
Behind These Walls
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 14.01.2007
Beiträge: 203

BeitragVerfasst am: 02 Jun 2007 - 20:43:58    Titel:

Hi,
fang am besten mit dem 80x86 Assembler an. Unter Windows kannst du NASM, TASM oder MASM verwenden(weiß nicht obs noch mehr gibt). Ein Debugger wäre auch ganz nützlich.
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 02 Jun 2007 - 20:52:42    Titel:

Und wie benutze ich NASM unter Windows XP?
In der Dokumentation steht, dass diese Installation nur für Win 95 und NT ist.
Geek#1
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 01.03.2007
Beiträge: 49

BeitragVerfasst am: 02 Jun 2007 - 20:52:46    Titel:

Hallo,

Also ich benutze zur Assemblerprogrammierung Delphi von Borland, da
mir nasm, tasm und masm zu umständlich waren außerdem ist hier noch
der Vorteil, dass man Assembler mit Object Pascal verbinden kann.

//edit:WinXP basiert auf NT technologie.
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 02 Jun 2007 - 21:02:48    Titel:

Also müsste das funktionieren, wenn ich NASM einfach wie angegeben unter XP installiere?

Vielleicht kennt jemand noch ein gutes Tutorial, worin nicht nur Beispielprogramme genannt werden, sondern auch die einzelnen Begriffe/Befehle richtig erklärt/übersetzt werden...?
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 02 Jun 2007 - 21:08:38    Titel:

Und wie benutze ich Assembler in Delphi?
Behind These Walls
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 14.01.2007
Beiträge: 203

BeitragVerfasst am: 02 Jun 2007 - 22:17:19    Titel:

ja NASM kannst du einfach installieren. Google einfach mal da findet sich bestimmt schnell ein passendes.
Geek#1
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 01.03.2007
Beiträge: 49

BeitragVerfasst am: 02 Jun 2007 - 23:27:58    Titel:

mr.moustache hat folgendes geschrieben:
Und wie benutze ich Assembler in Delphi?


Die Assambleranweisungen einfach eingeben und bei Bedarf mit Object pascal auf unterschiedlichste weise verbinden Wink

//edit:
delphi-inline-asm tutorial http://www.delphipraxis.net/topic94005,0,asc,0.html
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 05 Jun 2007 - 14:47:55    Titel:

So es funktioniert jetzt bei mir.
Ich arbeite nun doch mit NASM und erstelle .exe files per Link über ALINK.

Allerdings habe ich ein Verständnisproblem:

Der mov Befehl kopiert den Inhalt des Quelloperands in eine Adresse die als Zieloperand angegeben wird. Richtig?

Code:

mov ax, bx


Kopiert demnach den Inhalt vom Register BX ind das Register AX.

Code:

mov ax, [010E]


Kopiert also den Inhalt der Speicherzelle 010E in das Register AX.

Soweit so gut.

Nun verstehe ich folgenden Code nicht:

Code:

mov [010E], ax


Das macht für mich keinen Sinn, denn als Zieloperand ist keine Adresse, sondern der Inhalt der Speicherzelle 010E angegeben. Solange dort als Wert keine Adresse angegeben ist, müsste das doch gar nicht funktionieren?

Um den Wert aus dem Register AX nach 010E zu kopieren würde ich folgendes schreiben:

Code:

mov 010E, ax


Was jedoch den Fehler: 'invalid combination of opcode and operands' hervorbringt.

Was verstehe ich hier falsch?
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 06 Jun 2007 - 10:29:22    Titel:

Ja OK, mir war nicht klar, dass der Wert, der in der Speicherzelle liegt, benutzt wird um in die Speicherzelle zu kopieren. Ich hätte das über die Adresse getan.

Hab noch 2 kleine Fragen:

Labels müssen (k)einen Doppelpunkt haben?

Eine Frage zu Registern:

Das Register CS:IP beinhaltet ja die Adresse des nächsten auszuführenden Befehls.

Und das Register DX:AX, wird z.B. beim Multiplizieren und Dividieren benutzt.

Wie genau berechnet sich der Wert bei dieser Schreibweise?

Also wenn in DX=010A und AX=05,

ist dann DX:AX = 010A05 oder vielleicht 010A + 05 ?
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> assembler Info
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum