Toon posts:

[wos,dos] gesegmenteerd geheugen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben niet zo goed in het starten van topic's en hoop dat het duidelijk is wat ik hier vraag.
Ik heb een stukje tekst waar ik problemen mee heb hierheen gecopieerd en er mijn vragen tussen gezet, volgens mij deugt de tekst niet wat zou verklaren waarom ik het niet begrijp.(het kan natuurlijk ook gewoon aan mij liggen, dat ik er te stom voor ben of zo)

Tot nu toe heb ik geprobeerd via google antwoorden hierop te vinden, helaas.
Ik zou niet weten bij wie ik het nog zou kunnen proberen dus zo kom ik hier terecht.
De tekst luidt:

Een gesegmenteerd adres gebruikt hexadecimalen van vier cijfers voor de meeste geheugenadressen. Het voegt een segmentadres toe wanneer het programma de grenzen van het segment overschrijdt.

Een programma in het eerste segment gebruikt dus een adres van 0000 tot FFFF.
Als het overgaat in het tweede segment, wordt het adressegment 1 toegevoegd, dus kan 1:0000 tot 1:FFFF het adres in het tweede segment zijn.

Een meer algemene manier om dit te zien is het maken van twee groepen van vier cijfers, waarbij de eerste groep de vier belangrijkste cijfers van het segmentadres vertegenwoordigt en de tweede groep de laatste vier belangrijke cijfers.
Een voorbeeld: 1000: 789A. Het eerste deel is minder belangrijk omdat het wordt gebruikt als opvulling.

VRAAG:Hoe kun je nou 3 nullen als lsb(least significant bit) aanvullen?Dan krijg je toch een andere waarde?

Bij een 8088 processor is het grootst bruikbare segmentadres F:FFFF, of conventioneel gezien F000:FFFF.

Vraag:Kan iemand mij vertellen hoe ik dat moet zien? hier wordt dus gesteld dat F net zo groot is als F000?

Elke F representeert vier binaire cijfers of activeerbare adresdraden, en de 8088 had in totaal 20 adresregels, met de namen A0 tot A19. DOS was echter gemaakt voor het accepteren van gesegmenteerde adressen tot FFFF:FFFF.

CONCLUSIE:Als ik dus FFFF met FFFF vermenigvuldig krijg ik FFFE0001, is ruim 4 gig aan geheugen adressen, of zie ik dat verkeerd?

De toegelaten extra adresruimte bij gesegmenteerd adresseren is niet beschikbaar bij de 20 adresregels van de 8088. Met de introductie van de 80286-processor kwamen er vier adresregels bij. Dit betekent dat de 286 letterlijk maximaal 16 Mb geheugenadresruimte kan zien,ondanks datDOS dat niet kan.

OPMERKING:Zie vorige alinea


En houdt ook in dat, door het gebruik van dt extra adresregel A20, een adres van 1FFFFF kan worden bereikt. Het volledige hexadecirnale getal dat door het gesegmenteerde adres van FFFF:FFFF wordt vertegenwoordigd is 1OFFEF
??????????


Ruim binnen het door de fysieke adresregels A0 tot A20 toegestane bereik. Met de juiste tactiek kon DOS nu adressen zien tot maximaal FFFF:FFFF.
Dit was bijna een volledig segment van 64 Kb aan extra geheugen.


Deze 64 Kb (minus 16 bytes) staat nu bekend als High Memory Area (HMA).

  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

Zou je je vraag en je verhaal iets duidelijker willen opbouwen alsjeblieft. Door de grote hoeveelheid informatie valt je eigenlijke vraag in het niet. :)

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


Verwijderd

Topicstarter
Sorry maar ik zou niet weten hoe ik moet formuleren als ik tekst weglaat, voor eventuele sugesties sta ik altijd open.

  • michiel100
  • Registratie: November 2000
  • Laatst online: 13-05 16:00
FFFF:FFFF = FFFF*100 + FFFF = 100FEFF

duidelijker voorbeeld:

1234:5678 = 1234*100 + 5678 = 128A78

(Waarbij alle getallen hexadecimaal zijn)

  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

michiel100 schreef op 20 februari 2004 @ 18:15:
FFFF:FFFF = FFFF*100 + FFFF = 100FEFF

duidelijker voorbeeld:

1234:5678 = 1234*100 + 5678 = 128A78

(Waarbij alle getallen hexadecimaal zijn)
Ik zou dan nog altijd keer 0x10 doen. ;)
1234:5678 (hexadecimale getallen) = 0x1234 * 0x10 + 0x5678 = 0x179B8
Dus F000:FFFF en FFFF:000F verwijzen naar hetzelfde fysieke adres. :)

[ Voor 28% gewijzigd door _the_crow_ op 20-02-2004 18:25 ]

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


Verwijderd

Topicstarter
Kom ik erg onozel over als ik vraag waar die *100 vandaan komt?

[ Voor 16% gewijzigd door Verwijderd op 21-02-2004 15:33 ]


  • michiel100
  • Registratie: November 2000
  • Laatst online: 13-05 16:00
_the_crow_ schreef op 20 februari 2004 @ 18:19:
[...]
Ik zou dan nog altijd keer 0x10 doen. ;)
1234:5678 (hexadecimale getallen) = 0x1234 * 0x10 + 0x5678 = 0x179B8
Dus F000:FFFF en FFFF:000F verwijzen naar hetzelfde fysieke adres. :)
0x100 bedoel je? Zo werkt de 8086 processor iig.
Verwijderd schreef op 20 februari 2004 @ 18:22:
Kom ik erg onozel over als ik vraag waar die *100 vandaan komt?
Nee hoor, die is gewoon bedacht om de 16MB addresseerbaar te krijgen.

(want 100FEFF is net iets meer dan 16MB)

  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

Verwijderd schreef op 20 februari 2004 @ 18:22:
Kom ik erg onozel over als ik vraag waar die *100 vandaan komt?
Die 100 is ook niet juist. Het moet 16 zijn (of 10 hexadecimaal).

Lees het begin van deze site maar door en ik denk dat alles dan een stukje duidelijker wordt. :)

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

michiel100 schreef op 20 februari 2004 @ 18:35:
0x100 bedoel je? Zo werkt de 8086 processor iig.

Nee hoor, die is gewoon bedacht om de 16MB addresseerbaar te krijgen.

(want 100FEFF is net iets meer dan 16MB)
De 8086 kan maar 1 MB adresseren, omdat er maar 20 bits beschikbaar zijn. :)
Vóórdat de A20 lijn erbij gefrot was, werden alle adressen boven de 1 MB weer gezien als een adres onder de 1MB. De 64kb boven de eerste MB werden doorgelust naar de eerste 64kb van het fysieke geheugen.
Daarna kwam alles goed, omdat IBM via de keyboard-controller het één en ander heeft doorgelust en je vanaf toen boven de 1MB kon adresseren. :)

[ Voor 34% gewijzigd door _the_crow_ op 20-02-2004 19:00 ]

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


Verwijderd

Topicstarter
Dat gedeelte met de processor begrijp ik nu, heb ik geloof ik ook al over gelezen, dat als je een bepaald geheugen probleem hebt, je het keyboard moet vervangen.
Waar ik nu nog mee zit, is dat FFFF:FFFF probleem van DOS.
Maar ik ga eerst ff alle informatie lezen die ik tot nu toe van jullie gehad heb.
Ik ben daar uitermate dankbaar voor, allemaal bedankt.
Pagina: 1