Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Speicheradressen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jean



Anmeldungsdatum: 26.12.2004
Beiträge: 15
Wohnort: Schweiz

BeitragVerfasst am: 31.12.2004, 13:42    Titel: Speicheradressen Antworten mit Zitat

Hallo

Kann mir jemand sagen wie ich einen Wert in eine Speicheradresse schreiben kann und wie man einen Wert von einer Speicheradresse lesen kann ?

Vielen Dank Jean
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 31.12.2004, 14:38    Titel: Antworten mit Zitat

Hallo!

Q(uick)Basic arbeitet im Real-Mode. In diesem Modus kann man insgesamt 1 MB Arbeitsspeicher adressieren, ein Programm darf höchstens 640 KB groß sein! Der Speicher ist im Real-Modus in Segmente (Von &H0000 bis &HFFFF) und Offsets (von &H0000 bis &HFFFF) aufgeteilt. Hier ein Beispiel, wie man im Segment &HFF das Offset &H1234 unter QBasic auslesen kann:

Code:

DEF SEG = &HFF
PRINT PEEK(&H1234)
DEF SEG ' Damit man wieder woanders weitermachen kann, muss nicht unbedingt dastehen...


Man kann auch in die gleiche Speicherstelle schreiben:

Code:

DEF SEG = &HFF
POKE &H1234, 1 ' Schreibt an die Speicherstelle 00FF:1234 den Wert 1.
DEF SEG ' Wie oben ;)


Falls du dich fragst, warum ich immer &H vor Zahlen hinschreibe:
Diese Zahlen sind H e x a d e z i m a l.
Noch etwas wichtiges: Man kann mit PEEK und POKE 16-Bit-Zahlen (also Integer, von 1 bis &HFFFF) in den Speicher schreiben/lesen.

Und wichtig!!! Man kann damit auch viel kaputtmachen, also VORSICHT!!!

Gruß, Quark48
_________________
Grüßle, Stefan lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 07.01.2005, 16:49    Titel: Antworten mit Zitat

Ach, ja, PEEK und POKE....
Damit hat wohl jeder Anfänger so seine Probleme, und ich merke grade, dass ich selber nicht länger als etwa ein halbes jahr mit den beiden arbeite....

naja.
Eines sei dir auf jeden Fall gesagt:
PEEK und POKE lassen sich nicht nur für direkte manipulation von Variablen benutzen; den viel größeren Nutzen ziehst du daraus, wenn du schon ein paar Adressen kennst:

Seg A000h:
Video-Ram. Den zu bearbeiten ist allerdings oft ziemlich tricky, weil du nur ganze Bytes setzen kannst, so dass sich dieses Wissen erst im SCREEN 13 auszahlt. Hier nämlich ist die Farbinformation pro Pixen genau 1 Byte - ideal *g*
Das OFFSET errechnet sich übrigens aus:
x + y * 320, bzw * Screenwidth, etwa 640 für SCREEN 12.

Seg B800h:
Auch Video-Ram, allerdings für die Text-Modi.
Hiermit kannst du dir einen kleinen ersatz für PRINT zusammenbasteln.
Dabei setzt du für jedes Zeichen ein WORD:
(Spalte + Zeile * 80) * 2 => ASCII- Code
(Spalte + Zeile * 80) * 2 +1 => Farbwert. Dabei kannst du selbstverständlich die Hintergrundfarbe gleich mitbestimmen. Sie ist dann in den oberen 4 Bits gespeichert. Achtung: Wennd du das Bit 7 setzt, wird der Text Blinkend dargestellt! (Außer du schaltest auf Intensitat um, was mit einem INTERRUPT geht *g*)


Seg 0040h:
BIOS-Segment!
Hier kannst du ne ganze Menge einstellen!
Was das alles ist, liest du am besten auf www.qbasic.de nach, in den Monster FAQ.

viel Spaß!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jean



Anmeldungsdatum: 26.12.2004
Beiträge: 15
Wohnort: Schweiz

BeitragVerfasst am: 07.01.2005, 17:08    Titel: Antworten mit Zitat

Vielen Dank happy Genau das wollte ich wissen happy happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 07.01.2005, 19:12    Titel: Antworten mit Zitat

Dusky_Joe hat Folgendes geschrieben:
Ach, ja, PEEK und POKE....
Damit hat wohl jeder Anfänger so seine Probleme(...)

Also ich hatte damit nie Probleme. grinsen



ich habs auch nie wirklich benutzt durchgeknallt Habs ned gebraucht und da wo ichs mal mit Hilfe versucht hab hats nix gebrach.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.01.2005, 21:37    Titel: Antworten mit Zitat

Auf dem legendären Commodore 64 gab es seinerzeit im dortigen ROM-BASIC noch überhaupt keine High Level-Befehle speziell in Sachen Grafik und Sound - da musste man sämtliche Chips direkt mit PEEK() und POKE ansteuern.

Findige Köpfe schrieben damals BASIC-Erweiterungen, in dem sie beispielsweise die "SYNTAX ERROR"-Routine auf einen eigenen Handler umleiteten, welcher Dinge wie LINE und CIRCLE auswerten konnte.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 09.01.2005, 22:27    Titel: Antworten mit Zitat

Tja, wenn ich PEEK und POKE ned gebraucht hätte, hätt ich wohl auch nie probleme gehabt.
Das erste mal bin ich auf den befehl gestoßen, wo ich von irgendjemanden ein Grafik-demo runtergeladen hab. Aber mit der QB-Hilfe kann man wohl kaum wirklich was anfangen. Schreckliches Fachchinesisch.

Woher soll man denn wissen, was ein Segment und was ein Offset ist, und ab wo der Video-Ram beginnt...

Bin froh, dass ich mich da jetzt einigermaßen auskenne.
Inzwischen käm ich wohl gar nicht mehr ohne direkten speicherzugriff aus!
Man denke bloß mal an SVGA!
Etwas, mit dem ich erst vor ein paar Tagen angefangen habe....

Naja, jedem das seine *g*

Ciao
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz