Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Flat Assembler - FASM unter Win7 64Bit

mikemet1 / 12 Antworten / Baumansicht Nickles

Möchte gerne Assembler programmieren (lernen) unter WIN7 64 Bit, leider gibt es keine (Einsteiger)Bücher die sich mit 32/64 Bit Assemblerprogrammierung befassen. Aber vielleicht finden sich hier Gleichgesinnte die sich in der Gruppe das Thema erarbeiten wollen ?!

Bei Interesse bitte melden!

LG
mikemet

bei Antwort benachrichtigen
mi~we mikemet1 „Flat Assembler - FASM unter Win7 64Bit“
Optionen

Verstehe dich nicht, im Internet gibt es jede Menge Seiten die sich mit Assembler-Programmierung beschäftigen , ebenso kostenlose Bücher zum Download wie etwa das hier
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/www.artofasm.com/Windows/index.html
Natürlich ist Assembler-Programmierung keine "leichte" Sache, da wirst du einiges an Zeit und Arbeit investieren müssen......

"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
mikemet1 mi~we „Verstehe dich nicht, im Internet gibt es jede Menge Seiten die sich mit...“
Optionen

Ja, alles 16 BIT, genau das ist das Problem. Zu TASM oder MASM 16Bit gibts (habe ich) einige Bücher nur diese Assembler laufen NICHT unter 64BIT und zum MASM32 oder NASM oder am besten FASM gibts keine Unterlagen oder Bücher für den Einstieg.

bei Antwort benachrichtigen
mi~we mikemet1 „Ja, alles 16 BIT, genau das ist das Problem. Zu TASM oder MASM 16Bit gibts habe...“
Optionen

http://www.lomont.org/Math/Papers/2009/Introduction%20to%20x64%20Assembly.pdf
Die 64bit-spezifischen Sachen wirst du dir wohl separat aneignen müssen, ich kenn da auch keine Bücher/Internetseiten die sich speziell nur mit 64bit Assembler beschäftigen

"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
mikemet1 mi~we „http://www.lomont.org/Math/Papers/2009/Introduction 20to 20x64 20Assembly.pdf...“
Optionen

Danke für den Link!

Das kommt der Sache schon näher, aber wirklich interessant wäre eben der Einstieg, wie er in meinen Büchern beschrieben wird, (zB Hello World) aber eben so, dass das Programm in einem 64 Bit System kompiliert und ausgeführt werden kann. Dabei geht es mir nicht um die Besonderheiten des 64 Bit Systems sondern um die grundsätzliche Möglichkeit den Assembler zu verwenden und das erstellte Programm in einem 64 Bit OS ausführen zu können. Sämtliche Versuche die 16 Bit Programme aus den Büchern, Beispielsweise von MASM umzuschreiben und diese mit dem MASM32 zu kompilieren, sind mangels Fachwissen meinerseits, bisher gescheitert.

Folgende Diplomarbeit zur Assembler Windowsprogrammierung habe ich gefunden:
http://priniel.dnsalias.com/asm32/Diplomarbeit_NDSI12/Dokumente/Manual-Assembler_unter_WindowsXP.pdf

So eine Anleitung für die Konsole wäre ein Traum ;o)

bei Antwort benachrichtigen
mikemet1 Nachtrag zu: „Danke für den Link! Das kommt der Sache schon näher, aber wirklich interessant...“
Optionen

Folgenden "Hello World" funktionsfähigen Quellcode habe ich gerade gefunden:

format PE console
entry start

include 'C:\fasm\include\win32a.inc'

;======================================
section '.data' data readable writeable
;======================================

hello_msg db 'Hello, world!',0

;=======================================
section '.code' code readable executable
;=======================================

start:
ccall [printf],hello_msg
ccall [getchar]
stdcall [ExitProcess],0

;====================================
section '.idata' import data readable
;====================================

library kernel,'kernel32.dll',\
msvcrt,'msvcrt.dll'

import kernel,\
ExitProcess,'ExitProcess'

import msvcrt,\
printf,'printf',\
getchar,'_fgetchar'

bei Antwort benachrichtigen
mi~we mikemet1 „Folgenden Hello World funktionsfähigen Quellcode habe ich gerade gefunden:...“
Optionen
"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
mi~we mikemet1 „Folgenden Hello World funktionsfähigen Quellcode habe ich gerade gefunden:...“
Optionen
"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
Olaf19 mikemet1 „Flat Assembler - FASM unter Win7 64Bit“
Optionen

Eine ganz ketzerische Frage... lohnt sich Assembler heutzutage eigentlich noch?

Ich weiß, dass das zu Atari-Zeiten immer ein ganz großes Thema war, aber damals hatten die Rechner auch nur 8 MHz Takt und nicht 3 GHz.

Der Assembler-Code wird doch nach wie vor bei der kleinsten Änderung am System inkompatibel und lässt sich auch nicht auf andere Systeme portieren, oder täusche ich mich da? (...sozusagen ein "Anti-Java").

THX
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
PaoloP Olaf19 „Eine ganz ketzerische Frage... lohnt sich Assembler heutzutage eigentlich noch?...“
Optionen

Sofern es um embedded entwicklung geht sind assembler kentnisse nach wie vor wichtig und der markt boomt wie sau, da werden dringend leute gesucht. Auf nem PC macht es Sinn wenn man gleich hart in die Systemarchitektur einsteigen will - Treiberentwicklung oder vereinzelt auch Peripherie. Ob der Mac das überhaupt zulässt bzw. ob es iAssembler gibt weiss ich leider nicht.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Olaf19 PaoloP „Sofern es um embedded entwicklung geht sind assembler kentnisse nach wie vor...“
Optionen

Nun "iAssembler" heißt das Teil zwar nicht - schade eigentlich *g* - aber einen Assembler gibt es afaik eigentlich für jedes System: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/Assembler/000-Introduction/introduction.html

THX
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
mikemet1 Olaf19 „Eine ganz ketzerische Frage... lohnt sich Assembler heutzutage eigentlich noch?...“
Optionen

Ja, seit ich mich mit Assembler beschäftige weis ich um einiges mehr von meinem PC innenleben. Natürlich mit modernen Programmiersprachen kommt man meist schneller zum Ziel, vorallem beim Programmieren von Standardanwendungen. Sollte es aber um spezielle, hardwarenahe Programmierung gehen ist Assembler immernoch eine gute wahl. Viele Programmiersprachen bieten die Möglichkeit einer Inline Assemblerprogrammierung für Zeitkritische Programmteile und auch Treiber werden zum Teil noch in Assembler verfasst. Auch beim Lowlevelprogrammieren von Betriebsystemen wird neben C auch noch Assembler verwendet.

Das Assembler-Code nach den kleinsten Änderungen am System inkompatibel wird, stimmt so nicht den alle IBM Kompatiblen Prozessoren sind "Abwärtskompatibel" das heisst selbst die neuerste Generation versteht noch die Befehle eines 8086 Prozessors aus dem Jahre 1987. Natürlich sind inzwischen viele neue Befehle hinzugekommen und wenn das Programm an die neueste Prozessorgeneration angepasst ist, ist dieses natürlich zu den Vorgängern inkompatibel.

Meine hier aufgezeigte Frage ergiebt sich auch nicht aus der Verwendung eines neuen Prozessors sondern das Problem tritt auf da einem 64Bit Windowssystem keine 16Bit Programme mehr laufen. Würde ich auf dem selben Rechner ein 32Bit Betriebssystem installieren, wären auch die 16Bit Programme kein Problem (dann könnte das Betriebssytem aber meine 4 GB RAM nicht mehr ausnutzen).

Ach ja was ich noch sagen wollte mich interessiert hauptsächlich die Assembler-Programmierung (FASM) von Konsolenprogrammen 32/64 Bit, für die Windowsprogrammierung habe ich schon ein paar gute Seiten.

bei Antwort benachrichtigen
Olaf19 mikemet1 „Ja, seit ich mich mit Assembler beschäftige weis ich um einiges mehr von meinem...“
Optionen
Sollte es aber um spezielle, hardwarenahe Programmierung gehen ist Assembler immernoch eine gute wahl.

Okay - in diesem Fall wäre wohl auch die Portabilität auf andere Systeme nicht das Wichtigste.

Inline-Assemblercode für performance-kritische Routinen innerhalb von C oder (damals auch gerne) Pascal war schon in den 80ern recht beliebt.

Danke für deine ausführliche Antwort, war ganz aufschlussreich.

THX
Olaf
Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen