Kiera Geschrieben 24. März 2011 Geschrieben 24. März 2011 Hallo ihr Lieben! Ich habe vor zwei Jahren in der Schule gelernt, unter Windows XP mit dem Programm "debug" kleine Assembler-Programme schreibt. Das hat mein Chef nun spitz bekommen und hat mich gefragt, ob ich vielleicht interesse hätte, in dem Bereich wieder einzusteigen. Das große Problem an der Sache ist nur, es gibt niemanden mehr in der Firma der Assembler beherrscht also niemanden der es mir beibringen könnte. Mein Chef hat mir nun das Buch "Assembler - Grundlagen der Programmierung (2006)" in die Hand gedrückt und mir gesagt, ich soll nach meiner Ausbildung in 2 Jahren nochmal auf ihn zukommen, da hätte er ein paar Aufgaben für mich. Jetzt habe ich mich bis zum ersten Beispiel durchgearbeitet und viele Sachen waren mir bis dahin auch bekannt. Die neue Code-Schreibweise muss ich halt noch lernen, aber das tut man ja bekanntlich beim Programmieren, bzw. in diesem Fall beim Assemblieren. Ach, herje! Es funktioniert aber nicht wie im Buch beschrieben, und ich finde keine Lösung im Internet dafür. Hier das erste Beispiel: hallo.asm .MODEL Small .STACK 100h .DATA Meldung DB "Hallo Welt$" .CODE Start: mov ax,@data mov ds,ax mov dx,OFFSET Meldung mov ah,09h int 21h mov ah,4Ch int 21h END Start Wie im Buch beschrieben, habe ich mir den neusten MASM Heruntergeladen (MASM32 SDK Version 10[32 Bit Macro Assembler]). Ich habe das Programm unter c:\masm32\ installiert und den Pfad der Binärdateien händisch meiner Umgebungsvariable Path hinzugefügt (c:\masm32\bin\). Meine Assembler-Dateien liegen unter c:\Asm. C:\Asm>ml /c hallo.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: hallo.asm Sieht wunderbar aus, wie im Buch beschrieben: die hallo.obj wurde erzeugt. Leider liefert mir der Linker einen Fehler, mit dem ich und Google nicht wirklich viel Anfangen können: C:\Asm>link hallo Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : error : Segment reference in fixup record hallo.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt Hat jemand von euch eine Idee, was das Problem ist? Achja: Ich versuche das Programm im XP-Modus (32 Bit, SP3) von Windows 7 (64 Bit Ultimate, SP1) zum laufen zu bringen. Leider habe ich kein "echtes" XP mehr in der Firma und zuhause. Liebe Grüße Kiera :new Zitieren
Mephisto81 Geschrieben 25. März 2011 Geschrieben 25. März 2011 (bearbeitet) hallo, um ein 16 Bit DOS Programm zu linken, musst Du einen Linker verwenden, der dieses Format erstellen kann. link.exe ist AFAIK auf Windows Programme ausgerichtet. In meinem masm32 Verzeichnis liegt eine link16.exe (bei dir vermutlich auch) - diese sollte wie erwartet funktionieren. Ansonsten findet man im Netz diverse alternative Linker. BTW: Für einfache ASM-Programme musst Du höchstwahrscheinlich keinen Kompatibilitätsmodus verwenden. greetz mep Bearbeitet 25. März 2011 von Mephisto81 Ergänzung Zitieren
Kiera Geschrieben 25. März 2011 Autor Geschrieben 25. März 2011 Danke dir Mephisto! Klappt alles wunderbar, bist ein Schatz :-* Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.