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
ENDFehlermeldungen 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