POKE und PEEK für VC++



  • Ich weiß nicht ob ich hier richtig bin aber ...

    kennt jemand von euch die BASIC Befehle POKE und PEEK für VC++?



  • Gibt es nicht.

    Es sei denn du meinst den VC++ in einer Version, die nur 16Bit-DOS-Programme compiliert.



  • Ich hab da was zu peek im Internet gefunden. Ich weiß aber nicht, ob die Funktion das macht, was du suchst, oder ob der Name nur zufällig gleich ist.

    /* *** BEGIN FUNCTIONHEADER ********************************************** */
    /*                                                                         */
    /*  FUNCTION NAME:      peek                                               */
    /*  LAST UPDATE:        16.06.2001                                         */
    /*  AUTHOR:             Christian Stadler                                  */
    /*                                                                         */
    /*  PURPOSE:            Read word at address segm:offs.                    */
    /*                                                                         */
    /*  INPUT:              segm   - segment where to read from                */
    /*                      offs   - offset into the segment to read word from */
    /*  OUTPUT:             NONE                                               */
    /*  RETURN:             val    - contents of the specified port            */
    /*                                                                         */
    /* *** END FUNCTIONHEADER ************************************************ */
    
    int peek(unsigned short segm, unsigned short offs)
    {
      unsigned short val;
    
      asm { push es };		/* save regs at stack */
      asm { push ax };
      asm { push bx };
    
      asm { mov  ax, segm    };	/* put segment addr to AX reg */
      asm { mov  es, ax      };	/* set ES reg to access BIOS data space */
      asm { mov  bx, offs    };	/* put offset into BX reg */
      asm { mov  ax, es:[bx] };	/* get 2 bytes from segment:offset */
      asm { mov  val, ax     };	/* get read value */
    
      asm { pop  bx };		/* restor regs from stack */
      asm { pop  ax };
      asm { pop  es };
    
      return (val);
    }
    


  • Ja danke,

    scheint der Compiler aber nicht zu schlucken. In der Zeile

    asm { mov  ax, es:[bx] };    /* get 2 bytes from segment:offset */
    

    kommt der fehler:
    error C2432: Unzulaessiger Verweis auf 16-Bit-Daten in 'Zweiter Operand'



  • Hi.

    Wie cd9000 schon schrieb, gibt es in VC++ kein vernuenftiges Equivalent zu Peek/Poke, das sich compilieren laesst/ueberhaupt irgendwie funktionieren wuerde. Diese Funktionen sind nunmal fuer RealMode/16Bit code (=>DOS) gedacht und nicht fuer Windows-Anwendungen.


Anmelden zum Antworten