2010-11-18 13 views
10

Nur zum Teufel, ich habe ein Interesse am Lernen Montage genommen. Das Problem ist, ich kann keinen guten Ausgangspunkt finden ...Willst du Assembly lernen, verwirrt darüber, wo ich anfangen soll

Es scheint eine Menge von Assemblern zur Verfügung zu stehen (FASM, NASM, YASM, MASM), aber jeder hat seine eigene separate Syntax, Befehle und Funktionen. FASM scheint am bequemsten zu sein, da es ausführbare Dateien ohne einen Linker kompilieren kann, aber ich konnte keine Tutorials finden, um mich anzufangen. Alle "Hallo Welt" -Beispiele, die ich gesehen habe, sind 16 oder 32-Bit, aber ich verwende 64-Bit-Windows, so dass keiner von ihnen funktioniert. Die Windows-Beispiele, die in FASM enthalten sind, funktionieren, aber ich möchte nicht von Anfang an in die Windows-Programmierung einsteigen, ich möchte zuerst die Grundlagen verstehen.

Kann mir jemand in die richtige Richtung zeigen?

+3

Wenn Sie die Grundlagen zuerst verstehen möchten, würden Sie in Erwägung ziehen, einige einfache Geräte mit einem PIC- oder AVR-basierten Mikroprozessor herzustellen? Sie würden einen viel einfacheren Befehlssatz verwenden und könnten die Dinge wahrscheinlich schneller aufnehmen. –

+2

@ Jonathon: Paradoxerweise kann ihre Einfachheit es schwerer machen, sie zu erlernen. Zum Beispiel müssen Sie ohne eine Multiplikations- oder Divisionsanweisung eine (etwas nicht-triviale) Routine schreiben, um das zu handhaben. –

Antwort

2

32-Bit-Beispiele sollten funktionieren, obwohl Ihr Host-Betriebssystem 64-Bit ist.

Obendrein ist der Unterschied zwischen einem 32- und einem 64-Bit Hallo Welt nur zwei Zeichen:

include 'win64ax.inc' 

vs

include 'win32ax.inc' 
3

Ich bin kein Experte auf Montage, aber es ist eine wesentliche Sache, zumindest vertraut zu sein, in der EDV. In einer Computer-Engineering-Klasse verwendeten wir SPIM von James Laurus, einem MIPS-Architektur-Simulator für Windows. Ich denke, es ist ein guter Ausgangspunkt. Sie können einen MIPS-Spickzettel über die Google-Suche sowie einige Tutorials finden.

Montage ist cool, weil es im Wesentlichen Maschinensprache ist. Fröhliches Hacken!

+1

MIPS-Assembly ist einfach einfacher und einfacher zu lernen als x86, also ist es ein guter Startpunkt. – Crashworks

+1

Die MIPS-Baugruppe ist im Wesentlichen veraltet. Wenn Sie etwas Nettes wollen und nichts dagegen haben, dass es veraltet ist, lernen Sie die PDP-11 Assemblersprache. –

+1

MIPS ist dem RISC-Stil, der von modernen Prozessoren verwendet wird, ein wenig näher, und es gibt bessere Simulatoren und Lehrwerkzeuge als für (sagen wir) PPC. Ich habe zuerst auf Sparc gelernt, und ja, es ist veraltet, aber die Fähigkeiten wurden so gut übertragen, dass ich MIPS an einem Tag abholen konnte (als wir noch Unterhaltungselektronik mit MIPS verkauften). – Crashworks

1

Es ist einfach langweilig, Assembler ohne Ziel zu lernen.

Kann ich Ihnen empfehlen, ein Roboterkit zu kaufen? Wie ich weiß RoboSavvy Roboter werden von assmeblers/C verwaltet .. Andere dürfen nur DSL haben.

http://robosavvy.com/site/

P. S. Ich habe Assembler gelernt, als ich in Spielen schummeln musste. Aber heute würde ich Robotersätze wählen.

+0

Was du meinst ist "Ich persönlich denke, dass es langweilig ist, Montage ohne Ziel zu lernen." –

5

Wenn Sie Assembly lesen lernen möchten, empfehle ich, WInDbg oder IDA Pro als Ihren primären Debugger zu verwenden - lernen Sie nicht nur, was die Anweisungen tun, sondern auch, wie ein C++ - Compiler idiomatisch Ihren Quelltext in Assembly übersetzt weit besser als lernen, wenn Sie gekünstelt 100% Montagebeispiele

2

Dies ist die beste x86 ASM Einführung tun habe ich gefunden:

http://www.drpaulcarter.com/pcasm/

Es ist eine pDF-Version seines Buches auf dieser Seite . Es beginnt bei den Grundlagen und arbeitet sich hoch. Ich habe all das grundlegende ASM-Wissen, das ich gerade mit diesem Buch brauchte (Stack-Frame-Erstellung, Aufrufkonventionen, c interop, um nur ein paar zu nennen).

0

Wenn Sie ein Bigner sind und die Baugruppe besser lernen wollen, um ASM-Kenntnisse zu erhalten. zweitens versuchen, die grundlegende Logik hinter jedem Code zu lernen. 3. Genießen Sie die Sprache, wenn Sie versuchen zu lernen, wenn Sie Interesse haben, andernfalls lassen Sie es.

Verwandte Themen