assembler und c



  • hi
    wer kann mir erklären, warum das prog. in der mfc nicht läuft?

    #include<stdio.h>

    extern int ASMUP (int,int,int);

    void main(void)

    {

    int ergebnis;

    ergebnis = ASMUP(10,5,1);

    printf("\nErgebnis: %d\n", ergebnis);

    ergebnis = ASMUP(0,0,2);

    printf("\nHauptspeichergrösse: %d\n",ergebnis);

    }

    PUBLIC _ASMUP;

    _TEXT SEGMENT WORD PUBLIC 'CODE'

    ASSUME CS:_TEXT

    _ASMUP PROC

    PUSH BP

    MOV BP,SP

    MOV AX,[BP+8]

    CMP AX,1

    JE Subtrahiere

    CMP AX,2

    je Hauptspeicher

    jmp EndeUp

    Subtrahiere: MOV AX, [BP+4]

    SUB AX,BX

    JMP EndeUp

    Hauptspeicher: int 12h

    EndeUP: MOV SP,BP

    POP BP

    RET

    _ASMUP ENDP

    _TEXT ENDS

    END
    END

    Fehlermeldungen lauten:

    C:\Windows\Desktop\C_dat\Assembler\assi\assi.cpp(27) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner '_ASMUP'
    C:\Windows\Desktop\C_dat\Assembler\assi\assi.cpp(27) : error C2501: 'PUBLIC' : Fehlende Speicherklasse oder Typbezeichner
    C:\Windows\Desktop\C_dat\Assembler\assi\assi.cpp(27) : fatal error C1004: Unerwartetes Dateiende gefunden
    Fehler beim Ausführen von cl.exe.



  • kann das sein, das das alles in einer datei steht? auserdem währe syntaxhyligthning angebracht.

    also. zu dem fehler. ich nehem an, das das alles in einer datei steht. aseembler code sowie c code. und das geht so leider nicht. sollte/ muss getrennt werden. der erste teil in die c datei, der untere teil in eine ASM datei, die du dann mittels tasm oder masm in eine obj file übersetzt. anschliessend linkst du die beim übersetzen deier c datei dazu, bzw bindest die obj datei in dein mfc - projekt mit ein. grund für die trennung ist der, c kann eigentlich kein asembler nur den inline asembler, also muss das ausgelagert werden, ist auch daran ersichtlich, das das in eine seperate datei soll, da

    extern int ASMUP (int,int,int);
    

    so deklarirt wurde. extern gibt an, das sich diese funktion in einer anderen datei/übersetzungseinheit befindet, und erst zur linkzeit aufgelöst werden kann.

    zur letzten fehlermeldung, du hast w*****einich ein standard mfc - projekt verwendet mit mfc - unterstützung, und die cpp datei selber geschrieben. mfc will aber in jeder c datei die afx???.h datei includiert haben. ( fals der fehler nicht weggeht ist aber ein mfc problem)

    gruss termite



  • @termite
    aha!!!! nu weiss ich was los iss.
    beides steht nämlich in einer datei. werde mir heute erstmal masm
    besorgen und sehen obs dann klappt.
    dankt für die hilfe!
    gruss uwe


Anmelden zum Antworten