Article View: de.comp.sys.ibm
Article #231Re: komische Speicheradressen
From: Jan Schiefer
Date: Mon, 03 Aug 1992 11:23
Date: Mon, 03 Aug 1992 11:23
52 lines
2240 bytes
2240 bytes
bit@birnehh.mali.sub.org (Mike Hoehn) schreibt:
> 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?
Woher weisst Du, dass es Muell ist, wenn Du noch nicht einmal kapiert hast,
wie es funktioniert?
> Ich will wieder auf Motorola-Prozessoren programmieren <heul>...
> Naja, ich hoffe mir kann jemand helfen.
Klar, geh doch zurueck auf den Atari.
...achso... Du meintest mit dem Pointer helfen?
-----
#include <stdio.h>
#include <dos.h>
main()
{
char far *ptr;
/* ^^^ wichtig */
ptr = MK_FP(0x40, 0xf0);
printf("Das Byte an der Adresse %Fp hat den Wert %x\n", ptr, *ptr);
return 0;
}
-----
Obiges ist fÂr Borland-C, unter Microsoft geht das auch irgendwie so aehnlich.
Das vor dem Doppelpunkt ist das Segment, das dahinter der Offset. Die
physikalische Adresse wird gebildet duch (SEGMENT << 1) + OFFSET, woraus
Du ersehen kannst, dass sich die gleiche phys. Adresse durch verschiedene
Segment/Offset-Kombinationen darstellen laesst.
Eins vielleicht noch: far-Pointer haben eine interne 32-Bit-Darstellung,
near-Pointer eine 16-bittige. Welchen Typ Du per default bekommst, haengt vom
'Memory Model' ab. Naeheres siehe C-Compiler-Manual.
Vorsicht mit Speicherobjekten > 64KB (-> huge-Pointer) und Vergleichen von
far-Pointern. Wenn Du dann noch Pointer und Integer nicht wild mischst,
kann Dir fast nichts passieren.
Du wirst es zwar nicht glauben, aber man gewoehnt sich an die Segmentierung.
Ich glaube sogar, dass sie gut fÂr den Programmierstil ist.
Gruss,
Jan
--
Jan Schiefer, DL5UE, jan@nasobem.stgt.sub.org
"Oracle et laboracle!" - Fritz Hohl
Technical Details
Message-ID:
<44624.920803@nasobem.stgt.sub.org>Path:
arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!darwin.sura.net!jvnc.net!yale.edu!ira.uka.de!smurf.sub.org!nadia!delos!nasobem!janShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!darwin.sura.net!jvnc.net!yale.edu!ira.uka.de!smurf.sub.org!nadia!delos!nasobem!jan From: jan@nasobem.stgt.sub.org (Jan Schiefer) Newsgroups: de.comp.sys.ibm Subject: Re: komische Speicheradressen Message-ID: <44624.920803@nasobem.stgt.sub.org> Date: Mon, 03 Aug 92 11:23:44 GMT Distribution: world Lines: 52