Problem mit Assembler bei tcc



  • Hallo,

    Ich habe folgende Funktion geschrieben:

    void setlpt(int no)
    {
     switch(no)
     {
      case '0':no=0x01; break;
      case '1':no=0x02; break;
      case '2':no=0x04; break;
      case '3':no=0x08; break;
      case '4':no=0x10; break;
      case '5':no=0x20; break;
      case '6':no=0x40; break;
      case '7':no=0x80; break;
     }
    
     asm(
      mov ax,no
      mov dx,0x378 /* 0x378 für LPT1 */
      out dx,ax    /* Senden */
     );
     return;
    }
    

    ...um ein Signal an die Parallele Schnittstelle (LPT1) zu senden. Wenn ich das nun aber compiliere (Turbo C++) bekomme ich folgende Meldungen:

    tcc schrieb:

    Turbo C++ Version 1.01 Copyright (c) 1990 Borland International
    output.c:
    Warning output.c 16: Restarting compile using assembly in function setlpt
    Error output.c 17: Undefined symbol 'mov' in function setlpt
    Error output.c 17: Statement missing ; in function setlpt
    *** 2 errors in Compile ***

    Was mach' ich falsch??? Ich kompiliere mit: tcc -c output.c

    Danke im Voraus.



  • nimm für asm die geschweifte klammer und nicht die runde. nach asm {} kommt auch kein semikolon.

    void setlpt(int no) 
    { 
     switch(no) 
     { 
      case '0':no=0x01; break; 
      case '1':no=0x02; break; 
      case '2':no=0x04; break; 
      case '3':no=0x08; break; 
      case '4':no=0x10; break; 
      case '5':no=0x20; break; 
      case '6':no=0x40; break; 
      case '7':no=0x80; break; 
     } 
    
     asm { 
      mov ax,no 
      mov dx,0x378 /* 0x378 für LPT1 */ 
      out dx,ax    /* Senden */ 
     } 
     return; 
    }
    

Anmelden zum Antworten