assembler€86ˆ 1

assembler€86ˆ 1



22


2. Mikroprocesory 8086/8088

jest niezależny od innych segmentów i jest programowo zdefiniowany przez adres po-czÄ…tku segmentu. Adres ten jest okreÅ›lony zawartoÅ›ciÄ… rejestrów segmentowych CS, DS, SS i ES. Ponieważ sÄ… to rejestry 16-bitowe, a fizyczna pamięć omawianych procesorów wymaga 20 bitów adresu, poszczególne segmenty nie mogÄ… rozpoczynać siÄ™ od dowolnego adresu. 20-bilowy adres poczÄ…tku segmentu uzyskuje siÄ™ przesuwajÄ…c w lewo o 4 bity zawartość okreÅ›lonego rejestru segmentowego. Tak wiÄ™c adres poczÄ…tku segmentu musi być podzielny bez reszty przez 16, co oznacza, że najmniej znaczÄ…ce 4 bity adresu sÄ… stale równe zero, a odstÄ™p miÄ™dzy dwoma adresami poczÄ…tków segmentów może być jedynie wielokrotnoÅ›ciÄ… liczby 16. Nic ma żadnych innych ograniczeÅ„ na zdefiniowanie w pamiÄ™ci operacyjnej poszczególnych segmentów logicznych. W szczególnoÅ›ci mogÄ… one być umiejscowione jeden po drugim w sposób ciÄ…gÅ‚y lub z przerwÄ…, czy też nakÅ‚adać siÄ™ na siebie caÅ‚kowicie lub częściowo. Program użytkowy może zdefiniować w dowolny sposób wiele segmentów logicznych (rys. 2.7), jednak w danym momencie dostÄ™p jest możliwy jedynie do czterech segmentów wskazywanych przez rejestry segmentowe. W wielu prostych programach użytkowych definiuje siÄ™ tylko raz, na poczÄ…tku, zawartość rejestrów CS, DS, SS, ES, uzyskujÄ…c 64 KB pamiÄ™ci dla programu, 64 KB dla stosu oraz 128 KB dla danych. Segmentowa struktura pamiÄ™ci mikroprocesorów 8086/8088 narzuca, ale równoczeÅ›nie znacznie uÅ‚atwia

Adresy fizyczne

Rys. 2.7. Przykładowa organizacja segmentów w programie


modularną konstrukcję programów. Pozwala na dosyć swobodne przemieszczanie w pamięci uruchomionych programów; ułatwia rozwiązanie wielu złożonych problemów programowania (np. w systemach wielodostępnych).

Obliczanie adresu fizycznego

Z każdą lokacją pamięci jest związany adres fizyczny oraz adres logiczny. Adres fizyczny stanowi 20-bitowa liczba pozwalająca na jednoznaczny wybór jednego bajtu

2.5. Organizacja pamięci operacyjnej

t jednomegabajtowej przestrzeni adresowej (00000H - OFFFFFH). Adr używany do każdej wymiany danych między procesorem a pamięcią operacyjną.

W programach zasadniczo wykorzystuje siÄ™ adresy logiczne (rys. 2.8). DziÄ™ki temu programy mogÄ… być tworzone bez koniecznoÅ›ci ostatecznego definiowania adresu, od którego bÄ™dÄ… Å‚adowane do pamiÄ™ci. Każdy adres logiczny skÅ‚ada siÄ™ z ajresu poczÄ…tku segmentu zdefiniowanego zawartoÅ›ciÄ… wÅ‚aÅ›ciwego rejestru segmentowego oraz adresu wzglÄ™dem poczÄ…tku segmentu - przesuniÄ™cia, zwanego dalej krótko offsetem (ang. offset). Offset jest 16-bitowÄ… liczbÄ… bez znaku; wielkość segmentu nie może przekraczać 64 KB.

Adres

fizyczny


00001H )H


iiiii


Rys. 2.8. Adres logiczny i fizyczny


Pamięć

Adres logiczny

Offset = 5H

014AH

014A6H

014A5H

014A4H

014A3H

014A2H

014A1H

014A0H

0149FH

Adres fizyczny

4F543H

4F540H

4F530H


Rys. 2.9. Różny sposób zaadresowania tego samego baj tu

Wiele adresów logicznych może wskazywać ten sam bajt w pamiÄ™ci (rys. 2.9). UkÅ‚ad sterowania magistral BIU obsÅ‚ugujÄ…c komunikacjÄ™ miÄ™dzy procesorem a pamiÄ™ciÄ…, oblicza adres fizyczny w sposób pokazany schematycznie na rys. 2.10. W zależnoÅ›ci od rodzaju wykonywanej operacji, źródÅ‚em adresu logicznego mogÄ… być


Wyszukiwarka

Podobne podstrony:
assembler?86? 0 20 2. Mikroprocesory 8086/8088 Znacznik kierunku DF jest wykorzystywany przy wykon
assembler?86? 2 24 2. Mikroprocesory 8086/8088 Rodzaj operacji realizowanej przez BIL Rejestr s
assembler?86? 3 26 2. Mikroprocesory 8086/8088 Przykład (rys. 2.12) ZMIENNA2 ZMIENNA 1 ADD AX, ZMI
assembler?86? 4 28 2. Mikroprocesory 8086/8088 MOV    AL,ZMIENNA BAJT[DI
assembler?86? 8 % 5. Rozkazy> mikroprocesorów 8086/8088 Przykład LA HF NOT AH SAHF; znaczniki s
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 1 122 5. Rozkazy mikroprocesorów 8086/8088 OR DX, STALA_EQU OR CL, 8   &nb
assembler?86? 1 142 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, STD ; DF«-1 SCASB JE STOP CM
assembler?86? 1 162 5. Rozkazy mikroprocesorów 8086/8088 INT - skok do podprogramu obsługi przerwa
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 3 46 4. Język asemblerowy mikroprocesorów 8086/8088 PARA - początek segmentu będzie
assembler?86? 4 48 4. Język asemblerowy mikroprocesorów 8086/8088 tępne segmenty będą łączone jak
assembler?86? 5 50 4. Język asemblerowy mikroprocesorów 8086/8088 ; w kolejnym przykładzie zmienne
assembler?86? 6 52 4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
assembler?86? 8 56 4. Język asemblerowy mikroprocesorów 8086/8088 433. Połączenia międzymodułowe O
assembler?86? 2 64 4. Język asemblerowy mikroprocesorów 8086/8088 64 4. Język asemblerowy mikropro
assembler?86? 3 66 4. Język asemblerowy mikroprocesorów 8086/8088 66 4. Język asemblerowy mikropro
assembler?86? 4 68 4. Język asemblerowy mikroprocesorów 8086/8088 Dyrektywy .LALL, .SALL, .XALL Dy

więcej podobnych podstron