Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

x86 Assembler: Umstieg von "debug" zu Masm

Empfohlene Antworten

Veröffentlicht

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

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 von Mephisto81
Ergänzung

Danke dir Mephisto!

Klappt alles wunderbar, bist ein Schatz :-*

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.