Linker Fehler LNK1190



  • Ich hab einen alten asm-code mit MASM V6.15.8803 (ml.exe) assembliert, und bekomme dann beim Linker den Fehler LNK1190: Ungültiger Fixup aufgetreten.
    Im Code befindet sich die Zeile:
    "mov cs:sssav,ss", wobei sssav im code als
    "spsav dw ?" definiert ist.

    Wenn ich die mov-Zeile auskommentiere, funktioniert der Linker.
    Ist es nicht möglich auf das Code-Segment zu schreiben? bzw. gibt es dafür abhilfen.
    Anbei noch der Code:

    PROCINI _syexec,<PTRARG>
    ;
    ; save crucial registers
    ;
    push ds
    push es
    push bp

    mov cs:sssav,ss
    mov cs:spsav,sp

    ;
    ; load registers from REGS array
    ;
    ARGLODP ds,bp,0
    mov ax, [bp]
    mov bx, 2[bp]
    mov dx, 6[bp]
    mov es,12[bp]
    mov ds,14[bp]
    ;
    ; take the interrupt
    ;
    int 21H
    ;
    ; restore registers
    ;
    mov ss,cs:sssav
    mov sp,cs:spsav
    pop bp
    pop es
    pop ds
    ;
    ; set return value
    ;
    ARGLODP ds,bx,0 ; point to REGS array again
    mov [bx],ax ; save DOS return value
    sbb ax,ax ; return 0 or -1 depending on CY flag
    RETLODV ax

    PROCEND _syexec
    spsav dw ?
    sssav dw ?
    CODEEND
    end



  • Vielleicht solltest du mal eine ältere Version von masm ausprobieren. Mit dem vc++ 6 kann man z.B. auch keine realmode dos programme mehr erstellen.


Anmelden zum Antworten