16Bitprogrammierung



  • Hey Leute
    Ich hab folgendes Pronblem:
    Wenn ich ein Programm unter DOS schreiben will,
    [code]
    .model small
    .stack 100h
    .data
    Hallo db "Welt"
    .code
    Start:
    mov ax,@data
    mov ds,ax
    mov ah,09h
    mov dx,OFFSET Hallo
    int 21h
    mov ah,4Ch
    int 21h
    END Start
    [code]
    dann klappt zwar das Assemblieren aber beim Linken kommt folgende Meldung:
    "Error while conversation to COFF"
    "Entry Point must be defined"
    Was ist mein Fehler?



  • Verräts du uns auch, welchen Assembler du benutzt?



  • Hallo Joni2,

    ich vermute mal, dass Du MASM benutzt. Der Linker, der bei MASM beiliegt, kann nur 32-Bit-Programme erzeugen.
    Du benötigst einen 16-Bit-Linker, d.h. einen Linker, der DOS-Exe erzeugen kann.

    Hole Dir den Linker von hier: http://win32asm.cjb.net/

    Klick auf Download und in der erscheinenden Liste gibt es einen Link mit Namen Link version 5.63.

    Das Programm lnk563.exe ist ein selbstentpackendes Archiv. Nach der Ausführung stehen drei Dateien im Verzeichnis:

    link.exe
    cvpack.exe
    readme.txt

    Den Linker link.exe umbenennen in link16.exe und in das Verzeichnis bin kopieren.

    Dein Programm übersetzt Du so:

    ml /c DeinProgramm.asm
    link16 DeinProgramm.obj;

    Das Semikolon am Ende der Linker-Kommandozeile unterdrückt den Abfragemodus.

    Ciao


Anmelden zum Antworten