🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2343

Re: Segment

#2343
From: Bogdan (bogdro)
Date: Tue, 20 Jul 2010 15:58
68 lines
4408 bytes
W dniu 20.07.2010 13:35, przemo12146 pisze:
> J.Duntemann w książce pt.:"Zrozumieć Asembler" pisze, że granica
> paragrafu znajduje się co 10h oraz, że segment może zaczynać się od
> każdej granicy paragrafu.

 Tak.

> 1. Dlaczego granica paragrafu musi zaczynać się akurat co 10h

 Przyczyna jest prosta: paragraf definiuje się jako 16 (10h) bajtów. A
skoro adresy zaczynają się od zera, to granica paragrafu jest co 16
bajtów.

> i
> dlaczego segment musi zaczynać się od każdej granicy paragrafu ?

 Adres w trybie 16-bitowym składa się z pary segment:offset,
odpowiadający tej parze adres fizyczny otrzymuje się według wzoru:
segment*16 + offset. Zauważ więc, że jak zwiększasz numer segmentu o
1, to tak naprawdę zwiększasz adres fizyczny o 16 bajtów, czyli o
paragraf. Paragraf to najmniejsza wielkość, o którą możesz się
przesunąć, zmieniając numer segmentu. Skoro paragrafy są co 16 bajtów
od adresu 0, tym samym segmenty też zaczynają się co 16 bajtów od
adresu 0.
 Poczytaj http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs02.htm - tam
masz wszystko wyjaśnione.

> Oprócz tego pisze, że procesory "8086 i 8080 widzą cały megabajt
> pamięci...i dlatego też może podawać pamięci pełny 20-bitowy adres"
> oraz "...procesory z rodziny 86..."widzą"  jeden megabajt pamięci, to
> patrzą na niego przez 16-bitowe "przesłony"","Okienko ma długość 65536
> bajtów i szerokość jednego bajta.Mikroprocesor może przesuwać tę
> przesłonę do góry i do dołu po całej pamięci. ...Mikroprocesor ogląda
> więc pamięć w dość szczególny sposób. Widzi ją tylko w wycinkach nie
> większych niż 65536 bajtów."

 Tak. Te wycinki nazywają się właśnie segmentami.

> 2. Czy skok (tylko czysto teoretycznie) z początku pamięci o adresie
> 0h aż do końca czyli FFFF0h odbywa się w sposób taki że, segment jest
> przesuwany co 10h aż do ostatniego adresu (początku ostatniego
> segmentu) czy może od razu znajduje się na początku ostatniego
> segmentu (ostatnim adresie), tak jak elektrony krążące wokół jadra
> atomowego jakiegoś pierwiastka które teoretycznie mogą znajdować się w
> każdym punkcie o promieniu r (odpowiedź wydaje mi się oczywista skoro
> skok zajmuje jakiś czas to znaczy że, segment musi się przemieścić z
> początku do końca przez pozostałe adresy nie zatrzymując się na nich,
> ale nie jestem pewien.).

 Od razu znajduje się na końcu. Procesor, widząc instrukcję postaci
	jmp 0FFFFh:0000h
 po prostu ładuje 0FFFFh do rejestru segmentu kodu (CS), 0000h do
rejestru wskaźnika instrukcji (IP) i od tej pory pobiera instrukcje
spod nowego adresu.
 Tak samo, można ręcznie załadować rejestr CS na odpowiednią wartość
"od razu", nie trzeba się przesuwać co 1 segment. Przesuwając się co
10h segmentów, nie da się od segmentu 0 trafić na segment 0FFFF.
Przesuwając się co 10h bajtów - tak.
 Skoki zajmują dużo czasu z wielu przyczyn: trzeba opróżnić na
przykład pamięć podręczną, zdekodowany potok instrukcji, wczytać nowe
dane z pamięci itd.
 Czysto teoretycznie rozmawiając, punkt nie ma promienia :)

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Technical Details
Message-ID: <i24h2n$mng$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <31bb59d9-27ca-40ee-8864-a9199b992fc9@q12g2000yqj.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Segment
Date: Tue, 20 Jul 2010 17:58:14 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 68
Message-ID: <i24h2n$mng$1@inews.gazeta.pl>
References: <31bb59d9-27ca-40ee-8864-a9199b992fc9@q12g2000yqj.googlegroups.com>
NNTP-Posting-Host: rudy.mif.pg.gda.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1279641496 23280 153.19.42.16 (20 Jul 2010 15:58:16 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Tue, 20 Jul 2010 15:58:16 +0000 (UTC)
X-User: bog.d
In-Reply-To: <31bb59d9-27ca-40ee-8864-a9199b992fc9@q12g2000yqj.googlegroups.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.4) Gecko/20100608 Thunderbird/3.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit