Fasm: Erzeugte exe lässt sich nicht starten
-
Hallo zusammen. Ich habe heute das Assembler lernen begonnen und habe mich für FASM entschieden. Nachdem ich mir den Compiler runtergeladen habe und mein erstes Programm geschrieben habe, wurde allerdings nach dem compilen nur eine .bin Datei erstellt.
Brauch ich noch einen Linker?
Wenn ich in die Eingabeaufforderung "fasm Hello.asm Hello.exe" schreibe, wird zwar eine erstellt, diese lässt sich jedoch nicht öffnen.
Könnte es damit zusammenhängen, dass ich Vista benutze und daher x86 Programme nicht laufen?Oder liegt es an meinem Code:
mov ax, 1 mov bx, 2 mov ecx, 5 loopA: dec ecx add bx jnz loopA ret
-
Du brauchst bei fasm keinen Linker, solltest aber auch mal die Anleitung durchlesen. fasmw, also die Windowsversion ist auch einen Blick wert, man braucht nicht unbedingt auf der Konsole compilieren.
Du kannst im "Header" reinschreiben, was für ein Programm du haben willst, und welches Format.
Etwa org100h für 16bit Dos Com prgformat. Bei Dosprogrammen sind die ersten 256 bytes (100h) vorreserviert.
z.B.org 100h mov ah,12 mov al,24 mov bh fe mov bl dc
Ich habe auch Vista(32bit), und mir reicht zum Experimentieren meistens ein Com-Proggi.
Damit du aber auch sehen kannst, was du genau gemacht hast, brauchst du noch einen Debugger, und dafür ist (für den Anfang) das Programm debug super. debug kann zwar nur 16bit, das macht aber erstmal nix.
Ach so, und wenn der ret keine Adresse zum rückspringen hat, ist das auch immer nicht so toll.
-
Ok danke dir. Aber leider löst das mein Problem nicht. Ich habe alles so gemacht wie gesagt allerdings bekomme ich immer noch die Meldung
"Das Programm bzw. die Funktion ..\Test.COM kann aufgrund einer Inkompitabilität mit 64 bit Versionen nicht gestartet werden."
Was kann ich nun tun?
-
Kompatiblitätsmodus schon getestet ?
btw. der IDA Pro Debugger is besser als Debug.
Debug ist total umständlich meiner Meinung nach.Von IDA gibt es auch eine Kostenlose Version:
-
Bei 64bit Windows kann man für die alten 16bit Programme einen Emulator wie Dosbox nehmen. Es gibt auch 32bit Klons von debug, die müssten gehen, ich weiß allerdings nicht wie gut.
Du kannst aber bei fasm noch andere "Header" angeben, z.B. Format MZ oder du kannst auch einfache 64bit Programme ausbrobieren. Ich habe kein 64bit Windows (brauch ich auch nicht) und kann nicht testen, was dort genau geht und was nicht. Schau dir die Beispiele von fasm an und die Anleitung. Dann siehst du schon, welche Sythax du für einfache Testprogramme nehmen kannst. Und ein bißchen herumprobieren musst du sowieso. Und irgendeinen Debugger brauchst du.
Das gute an debug ist, dass es eigentlich eher eine Entwicklungsumgebung ist als Debugger. Wie gesagt, schau dir die Anleitung von fasm an, und die Beispiele, schau im fasm forum nach Code, und probier aus, mit welchem Debugger du am besten zurecht kommst. Ollydbg http://www.ollydbg.de ist für Schulungszwecke geschrieben, wäre keine schlechte Alternative. Oder eben was es da sonst so gibt, u.a. : http://de.wikipedia.org/wiki/DebuggerAn @_°/° :
Ida ist übrigens hauptsächlich ein Disassembler, und wesentlich leistungsfähiger und komplexer als Debug. Also wer hier schreibt, dass debug zu kompliziert ist, outet sich selbst als Hirni :D, der wahrscheinlich mit IDA auch nicht allzuviel anzufangen weiß. Soweit ich informiert bin, gibt es aber bei Windows64 auch gar kein debug.