Wie Assembler in C++ einbinden?



  • Wie kann man den Assembler-Code in C++ einbinden.
    Das, was der andere in dem Beitrag gemacht hat, funzt nicht:

    #include "Weiland.h";
    
    int main()
    {
    	int iZahl = 3;
    	int *pZahl = &iZahl;
    	cout<< pZahl;
    	cout<<"\n";
    	__asm
    	{
    		model small
    		data segment
    		assume ds:data
    		Gorges db 'G-Style rulezz','$'
    		data ends
    		code segment
    		mov ax, offset seg data
    		mov ds, ax
    		mov ah, 09h
    		mov dx, offset gorges
    		int 21h
    		mov ah, 01h
    		int 21h
    		mov ax, 4C00h
    		inth
    		code ends
    	}
    	return 0;
    }
    

    ???
    thx



  • Der C++ Standard sieht das nicht vor. Mit welchem Compiler arbeitest du denn?

    Wenn __asm {...} nicht funzt dann versuch doch mal asm("...")



  • Tjo, der Compiler erwartet im asm-Bereich nunmal wirklich nur Assembler Mnemonics und keinen Assembler-spezifischen Overhead.
    Also alles, was kein Assembler-Opcode oder Sprungmarke ist muss raus.
    zB. das hier:

    model small 
            data segment 
            assume ds:data 
            Gorges db 'G-Style rulezz','$' 
            data ends 
            code segment
    

    Vorsichtshalber weise ich nochmal darauf hin, dass in Win32/Konsolenanwendungen die DOS-Interrupts zum Absturz des Programms fuehren.
    Ausserdem wird
    dieser Teil hier

    mov ax, offset seg data 
            mov ds, ax
    

    so auch nicht funktionieren.


Anmelden zum Antworten