[Newb:] VC++ Inline Assembler findet 12 Fehler in code aus nem Buch



  • Ich hab grade angefangen Assembler zu lernen und mit dem C++ Inline Assembler Code aus meinem Buch (Assembler von Joachim Rohde und Marcus Roming) abgetippt und ausgeführt.
    Hier ist der Code:

    void assembler()
    {
    	__asm 
    	{
    		.MODEL Small
    		.STACK 100h;
    		.DATA;
    		Meldung DB "Hallo Welt$";
    		.CODE;
    	Start: mov ax, @data;
    		mov ds, ax;
    		mov dx, OFFSEt Meldung;
    		mov ah, 09h;
    		int 21h;
    		mov ah 4CH;
    		int 21h;
    		END Start
    	}
    }
    
    int main()
    {
    	assembler();
    	return 0;
    }
    

    Die Fehler:

    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(5) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'MODEL' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(6) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'STACK' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(7) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'DATA' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(8) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'DB' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(9) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'CODE' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(10) : error C2018: Zeichen '0x40' unbekannt
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(11) : error C2443: Operanden unterschiedlicher Groesse
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(13) : error C2443: Operanden unterschiedlicher Groesse
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(15) : error C2414: Ungueltige Anzahl an Operanden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(15) : error C2400: Inline-Assembler: Syntaxfehler in 'Zweiter Operand'; 'constant' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(16) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'constant' gefunden
    D:\Datein Daniel\C++ programmieren\Cardgame\asm\main.cpp(17) : error C2400: Inline-Assembler: Syntaxfehler in 'Opcode'; 'Start' gefunden

    Was ist falsch, bzw. was muss ich tun ums zum laufen zu bringen?

    thx im voraus



  • lol. so geht das auf gar keinen fall. den code musst du seperat mit z.B. NASM oder TASM assemblieren. Du kannst nicht einfach das ganze Assembler-Programm als Inline-Assembler schreiben.

    Die ganzen Anweisungen wie

    .MODEL Small
    .STACK 100h;
    .DATA;
    Meldung DB "Hallo Welt$';
    .CODE;
    END Start

    Kannst du alle nicht benutzen.

    Außerdem ist das DOS-Code. Das geht erst recht nicht mit Visual C++.

    ➡ alles falsch gemacht 😉



  • Da hat mein Vorredner schon irgendwie recht, allerdings ist der Code fuer MASM/TASM.
    Das sollte doch eigentlich aber auch in dem Buch erwaehnt worden sein... 😕



  • Ja, ich wusste nur nicht, dass es da einen Unterschied gibt.



  • Mensch, musst du mir so einen Schrecken einjagen? Und ich dachte schon, ich hätte einen gravierenden Fehler gemacht, den ich übersehen hätte 😉


Anmelden zum Antworten