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.