Fehler beim Ausführen von Lnk563

Offizieller deutscher Support für das MASM32 SDK. Download FAQ

Moderatoren: crack, Krüsty, Marwin

Fehler beim Ausführen von Lnk563

Beitragvon Doltsche » Sonntag 27. Dezember 2009, 02:11

Hallo zusammen

Ich bin ganz neu hier im Forum :wink:.
Dank der Forensuche hier konnte ich schon einige Probleme selber lösen, allerdings komme ich bei folgendem nicht weiter.
Wenn ich Lnk563.exe ausführen will erscheint folgende Meldung:

Die Version dieser Datei ist nicht mit der ausgeführten Windows-Version kompatibel.

Im Kompatibilitätsmodus habe ich es bereits versucht. Allerdings kommt hier die selber Fehlermeldung.
Womöglich liegt es daran, dass ich ein 64-Bit System verwende. Hat mir jemand dafür eine Lösung?
Diesbezüglich drängt sich bei mir auch gleich die Frage auf: "Hat Assembler überhaupt noch Zukunft oder wird Assembler zukünftig nur noch für ganz spezifischhe Sachen wie BIOS verwendet?" Denn im Zusammenhang mit 64-Bit kommt mir das so vor, als ob der Schwierigkeitsgrad von Assembler exponentiel ansteigt...?

Ich danke bereits im Voraus vielmals für eine Antwort

Liebe Grüsse

Samuel
Doltsche
Newbie
 
Beiträge: 4
Registriert: Sonntag 27. Dezember 2009, 00:52

Re: Fehler beim Ausführen von Lnk563

Beitragvon Krüsty » Sonntag 27. Dezember 2009, 14:39

Hallo Samuel und willkommen im Forum!

Die Datei Lnk563.exe ist ja nur ein Selbstenpackendes Programm, welches 3 Dateien beinhaltet, die für die Erstellung von DOS-Programme benötigt werden (siehe auch http://www.codingcrew.de/masm32/masm32_faq.php#27122003). Ich hab dir mal die Dateien in ein Zip-Archiv gepackt, probier mal ob es damit geht.

Was die Zukunft für ASM bereit hält, kann man nur erahnen. Auf jeden Fall sind die Programme meist wesendlich schneller, was auch ein entscheidender Vorteil beim Energieverbrauch der Rechentechnik sein kann. Ich denke die Zukunft von ASM liegt in Systemen mit minimalem Energieverbrauch. Aber das ist nur meine Meinung!
Und zum Schwierigkeitsgrad kann ich nur sagen: Man wächst mit seinen Aufgaben ;-)

Grüße!
Steve aka Krüsty
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

Re: Fehler beim Ausführen von Lnk563

Beitragvon Doltsche » Sonntag 27. Dezember 2009, 18:45

Hallo Steve

Vielen Dank für deine Antwort.
Zwar erzeugt mir der Linker nun eine EXE, wenn ich diese jedoch ausführen will erscheint wieder dieselbe Fehlermeldung.
Was kann man da machen?

LG Samuel

P.s: Kann man sagen, dass Assemblerkenntnisse vorteilhaft sind für tiefes Systemverständnis und u.U. auch zum besseren Verständnis moderner Programmiersprachen dienen? Letztlich muss es ja einen Grund geben, dass noch eine Assembler-Community existiert.
Doltsche
Newbie
 
Beiträge: 4
Registriert: Sonntag 27. Dezember 2009, 00:52

Re: Fehler beim Ausführen von Lnk563

Beitragvon Krüsty » Sonntag 27. Dezember 2009, 19:37

Hallo Samuel!

So wie es aussieht, kann dein Betriebssystem nicht mehr mit DOS-Programmen umgehen. Welches System hast du denn genau? Ich kann ja mal gucken, ob solche Probleme sonst schon aufgefallen sind. Ansonsten poste doch mal den Code, den du verwenden willst.
Du kannst natürlich die Programme mal in einer Virtuellen Maschine ausprobieren. Z.B. http://www.virtualbox.org/ installieren und ein Windows 98 drauf installieren. Wenn du kein Windows 98 hast, kannst du auch FreeDOS( http://www.freedos.org/freedos/files/) probieren. Ich kann es momentan selbst nicht testen, da ich derzeit noch bei meinen Eltern bin, aber ein Versuch ist es wert.

Grüße!
Steve

PS:Zum Systemverständnis ist es auf alle Fälle gut, da sollte man dann aber am besten schon mit der Von-Neumann-Architektur anfangen. Aber dichter an den Prozessor bzw. die Rechnerarchitektur als mit einem Assembler kommt man denke ich nicht.
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

Re: Fehler beim Ausführen von Lnk563

Beitragvon Doltsche » Montag 28. Dezember 2009, 00:05

Hallo Steve

Ich habe Windows Vista Business und ein Intel Quad Core Q9550.
Das er nicht mehr mit DOS-Programmen umgehen kann, bezweifle ich.
Zumal es dann ja definitiv keinen Sinn mehr macht, Assembler zu erlernen :roll:.
Mit C# kann ich beispielsweise ohne Probleme DOS Programme schreiben.

Der Quellcode sieht wie folgt aus:

Code: Alles auswählen
        .MODEL Small        ;Speichermodell: Small
        .Stack 100h         ;Stackgrösse auf 256 Byte
        .DATA               ;Beginn des Datensegements

Meldung DB "Hallo Welt$"    ;Die Meldung
        .CODE               ;Beginn des Codesegments   
Start:  mov ax, @data       ;Datensegmentadresse nach ax
        mov ds, ax          ;Inhalt von ax nach ds
        mov dx, OFFSET Meldung ;Offsetadr. nach dx
        mov ah, 09h
        int 21h             ;Schreibe String
        mov ah, 4Ch
        int 21h             ;Programm beenden
        END Start


LG Samuel
Doltsche
Newbie
 
Beiträge: 4
Registriert: Sonntag 27. Dezember 2009, 00:52

Re: Fehler beim Ausführen von Lnk563

Beitragvon crack » Montag 28. Dezember 2009, 18:47

Im Prinzip eine Menge von Fragen die irgendwie miteinander verschachtelt sind.

Also Assembler hat auch heute oder gerade wieder eine Zukunft, da Embeddet Systeme, Java Handys, Navis mit WindowsMobile oder ähnliche häufig nicht soviel Speicherplatz bereitstellen das man es sich leisten könnte einen nicht bestens! optimierten Code für das Zielsystem zu schreiben.
Modernere Betriebssysteme sind selbst zwar in C-Sharp oder anderen 'Hoch'sprachen programmiert, jedoch spätestens bei den Gerätetreibern wird man um Assembler nicht drumherumkommen, da hier ja dierekter Hardwarezugriff unumgänglich ist. Desweiteren dürften die Suchroutinen effizienter AV Programme/Firewalls ebenfalls in Assembler erstellt worden sein, da diese auch zumindest einen direkten Zugriff auf die Festplatte und die I/O Ports benötigen um diese nicht mit evtl. schon verseuchten Betriebssystemroutinen zu scannen.

Zur anderen Problematik:
Die Ultimate Version ist sicherlich der einzig gute Griff, wenn man sich für eine Vista Version entschieden hat, aber wie Microsoft ankündigte war die Abwärtskompatibilität kein Entwicklungskriterium.
Ich habe Hier mal eine DOS Emulation (Freeware/Shareware) gefunden von der der Programmierer/Hersteller sagt das sie unter Vista funktioniert. Allerdings könnte dein Problem auch mit deinen Benutzerrechten unter Vista zusammenhängen, ich kenne nur die Home/Premium Version, aber ich vermute mal damit der Linker (vom OS und AV Programm garantiert als 'potentiell schädliche Software' eingestuft) gestartet wird musst Du zu dem Zeitpunkt Administrator/Superuser sein, ich kann mir sehr gut Vorstellen das das Rechtemanagement von Vista diese Aktion für normaler User/Gast blockiert.
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: Fehler beim Ausführen von Lnk563

Beitragvon Doltsche » Montag 28. Dezember 2009, 19:15

Hallo crack

Vielen Dank für deine Ausführliche Antwort.
Ich habe MASM32 nun als Administrator ausgeführt und bei dem Projekt auf Build all geklickt.
Scheint so als läge der Fehler ganz wo anders:

Zeile 7: error A2006: undefined symbol: DGROUP //Start: mov ax, @data ;Datensegmentadresse nach ax
Zeile 14: warning A4023: with /coff switch, leading underscore required for start adress: Start //END Start

Wo genau jetzt da der Fehler liegt...
Kann mir da jemand weiterhelfen?

LG Samuel

P.s: Ich werde es in Zukunft unterlassen, mehrere Fragen in einem Thread zu stellen :wink:.
Doltsche
Newbie
 
Beiträge: 4
Registriert: Sonntag 27. Dezember 2009, 00:52

Re: Fehler beim Ausführen von Lnk563

Beitragvon crack » Montag 28. Dezember 2009, 23:36

Aha, also mit Build All geht es auf jeden Fall nicht, das ist richtig. Allerdings bekomme ich mit 'Assemble' auch kein Ergebniss. Ich vermute einfach mal der Quelltext stammt aus einem Assembler Lehrbuch, möglicherweise geht das so nicht, ich denke das Problem könnte sein das in einem .tiny Modell keine explizieten Segmentzuordnungen erlaubt sind, zumindest nicht für MASM, ich werde das morgen mal genauer unter die Lupe nehmen.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: Fehler beim Ausführen von Lnk563

Beitragvon crack » Mittwoch 13. Januar 2010, 15:58

Erstmal sorry, hat etwas länger gedauert und ich hatte in deinem Quelltext falsch gelesen: dein beabsichtigtes Speichermodell ist ja '.small' und nicht '.tiny'.
Also der Quelltext lässt sich so assemblieren und linken wie er ist, der Fehler lag im Aufruf von ml.exe. Ich habe folgendes gemacht:
  • ein Arbeitsverzeichniss 'Test' angelegt
  • den Quelltext hineinkopiert
  • ml.exe hineinkopiert
  • Link563.exe (ich habe es in Link16.exe umbenannt) hineinkopiert
  • DOS Box in dem Verzeichniss gestartet
  • ml /c hallowel.asm
  • Link16
  • danach dem Dialog des Linkers gefolgt
  • fertig - hat funktioniert
genauso sollte es auch bei Dir funktionieren.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf


Zurück zu MASM32-Package

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron