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.txtDen 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