Article View: de.comp.sys.ibm
Article #237Re: komische Speicheradressen
From: Josef Moellers
Date: Tue, 04 Aug 1992 06:38
Date: Tue, 04 Aug 1992 06:38
52 lines
2731 bytes
2731 bytes
In <BsB3EF.42p@birnehh.mali.sub.org> bit@birnehh.mali.sub.org (Mike Hoehn) writes:
>Ich habe folgendes Problem:
>Ich muss in einem C-Programm unter DOS den Speicherinhalt an der
>Adresse 0040:00F0 auslesen.
>Dummerweise habe ich keine Ahnung von diesem Intel-basierten
>Muell.
>Wie soll das funktionieren? Was hat der Doppelpunkt da zu suchen?
Intel unterteil den Speicher in ueberlappende Segmente. Jedes Segment
ist (im Prinzip, wir reden hier 'mal nicht vom protected 286 mode) 64KB
gross und beginnt auf einer Adresse, die ein Vielfaches von 16 ist.
Die "physikalische" Speicheradresse setzt sich nun aus einer Segmentadresse
und einem Offset zusammen, und zwar nach folgender Regel:
Segmentadresse * 16 + Offset
Wird die Adresse als numerische Adresse angegeben, steht die
Segmentadresse vor, der Offset hinter dem Doppelpunkt.
Beim Programmieren steht die "Basisadresse" eines Segments, na?, ...
klar, in einem Segmentregister. Derer gibt es vier: Code- (CS), Daten-
(DS), Stack- (SS) und Extra- (ES) Segmentregister. Diese sind 16 bit
"breit" (hoch/tief/lang). Der Offset steht in einem oder zwei Registern
(bie zwei: Offset = Summe der beiden), optional durch einen konstantes
"Displacement" (ich wollte nicht noch 'mal "Offset" schreiben)
erweitert.
Somit entspricht Deinem 0040:00F0 eine "physikalische" Adresse von
004F0
Diese laesst sich uebrigens auch als "004F:0000", oder "004E:0010", ...
schreiben B-{)
Auf den Adressen 0040:0000 bis 0040:00FF liegt der BIOS-Datenbereich.
0040:00F0 bis 0040:00FF ist ein "Kommunikationsbereich fuer
Anwendungsprogramme (nutzbar fuer Parameteruebergabe)", was immer das
bedeuten mag!
>Ich will wieder auf Motorola-Prozessoren programmieren <heul>...
>Naja, ich hoffe mir kann jemand helfen.
> Mike
Ich offe, ich hab's getan.
Josef
PS Ich hab' meinen PC auch nur zum Pac-Man spielen. Sonst programmiere
ich auf richtigen Prozessoren, Motorola, National Semiconductor, MIPS!
--
| Josef Moellers | c/o Siemens Nixdorf Informationssysteme AG |
| USA: mollers.pad@sni-usa.com | Abt. STO-XS 113 | Riemekestrasse |
| !USA: mollers.pad@sni.de | Phone: (+49) 5251 835124 | D-4790 Paderborn |
Technical Details
Message-ID:
<josef.712910305@uranium>Path:
arc1-ca.pugleaf.net!sparky!uunet!europa.asd.contel.com!darwin.sura.net!jvnc.net!yale.edu!ira.uka.de!math.fu-berlin.de!zrz.tu-berlin.de!news.netmbx.de!Germany.EU.net!nixpbe!uranium!josefReferences:
<BsB3EF.42p@birnehh.mali.sub.org>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.sys.ibm Path: arc1-ca.pugleaf.net!sparky!uunet!europa.asd.contel.com!darwin.sura.net!jvnc.net!yale.edu!ira.uka.de!math.fu-berlin.de!zrz.tu-berlin.de!news.netmbx.de!Germany.EU.net!nixpbe!uranium!josef From: Josef Moellers <mollers.pad@sni.de> Subject: Re: komische Speicheradressen Sender: josef@nixpbe.sni.de (Moellers) Message-ID: <josef.712910305@uranium> Date: Tue, 4 Aug 1992 06:38:25 GMT References: <BsB3EF.42p@birnehh.mali.sub.org> Organization: Siemens Nixdorf Info.Sys. AG, Paderborn, Germany Lines: 52