Assembler, segment pamięci wynoszący 1mb, a 64kb

0

Witam,
Mam prośbę o wytłumaczenie mi skąd pochodzą wyliczania dot. wielkości segmentu = 1mb.
Znalazłem tutaj informacje o tym: http://wiki.answers.com/Q/What_is_minimum_size_of_a_segment_in_Intel_8086_Why
Ale nie rozumiem tego... raz jest napisane, że segment ma 64kb a raz 1 mb, gdzie tutaj jest różnica ?

Offset reprezentuje się jako adres 16 bitowy, a więc za pomocą 16 bitów można reprezentować liczbę o wartości do 2^16 czyli 64kb, to jest jasne... ale skoro 1 segment = 64 kb, to o co chodzi z tym 1 mb ?

Proszę o rozjaśnienie mi tego, ogromne dzięki za pomoc! :)

1

ZTCP to w x86 w trybie 16-bitowym adresowanie jest typu rejestr segmentowy:rejestr wskaźnikowy, np es:di, a adres docelowy to (rejestr segmentowy) * 16 + (rejestr wskaźnikowy), czyli tutaj es * 16 + di.

0
Wibowit napisał(a):

ZTCP to w x86 w trybie 16-bitowym

ściślej: w trybie rzeczywistym (w którym można też używać 32-bitowych rejestrów, jeśli procesor je ma)

So,the total memory is divided into 16 logical segments and each segment capacity is 64 kb(kilo bytes).
To zdanie jest nieprawdą: segmentów jest znacznie więcej, gdyż nachodzą na siebie z przesunięciem 16 bajtów każdy.
W efekcie ten sam adres w pamięci może być reprezentowany na wiele sposobów.

W programach używa się dwóch rodzajów adresów (wskaźników): tzw. „bliskich”, 16-bitowych – sam offset, pozwala na dostęp do 64 kilobajtów w ramach „bieżącego” segmentu (określonego rejestrem ds albo es), oraz „dalekich”, 32-bitowych – segment:offset, co daje dostęp do całego megabajta pamięci.

to o co chodzi z tym 1 mb ?
tryb „rzeczywisty” (jeszcze się wtedy tak nie nazywał, bo był po prostu jedynym, a poza tym ta nazwa jest bzdurna) z założenia miał adresować do 1 MB pamięci (pierwsze pecety nie miały nawet tyle, więc nie wydawało się to na początku jakimś poważnym ograniczeniem)

1 użytkowników online, w tym zalogowanych: 0, gości: 1