assembler€86ˆ 0

assembler€86ˆ 0



20 2. Mikroprocesory 8086/8088

Znacznik kierunku DF jest wykorzystywany przy wykonywaniu działań na łańcuchach (ciągach słów). Jeżeli ma wartość 1, to przetwarzanie łańcuchów odbywa się przy rosnących adresach, jeżeli jest równy 0 - przy malejących adresach (zob. p.7.3).

2.5. Organizacja pamięci operacyjnej

Jak już wspomniano procesory 8086/8088 zawierajÄ… 20 linii adresowych, co umożliwia zaadresowanie do 1 MB (220 = 1 048 576) pamiÄ™ci operacyjnej. Mimo 16-bitowej organizacji (a dla 8086 także 16-bitowej zewnÄ™trznej magistrali danych) pamięć ma organizacjÄ™ bajtowÄ…. Dla procesora 8088 z 8-bilowÄ… magistralÄ… danych taka organizacja pamiÄ™ci jest korzystna - pamięć o pojemnoÅ›ci 1 MB stanowi ciÄ…gÅ‚y obszar wybierany liniami adresowymi A0-A19. DostÄ™p do 16-bitowego sÅ‚owa jest zwiÄ…zany z koniecznoÅ›ciÄ… wykonania dwóch cykli pamiÄ™ci. W przypadku procesora 8086 pamięć jest podzielona fizycznie na dwa bloki, każdy o pojemnoÅ›ci maksymalnie 512 KB (0,5 MB). Jeden blok (ang. lower bank ) jest przyÅ‚Ä…czony do mniej znaczÄ…cego bajtu linii danych (D0-D7) i jest adresowany liniami A1-A19. Blok ten jest wybierany wówczas, gdy bit adresu A0 jest równy zero, czyli dla wszystkich adresów parzystych (ang. even ). Drugi blok (ang. upper bank ) jest przyÅ‚Ä…czony do linii danych D8-D15 i obejmuje wszystkie adresy nieparzyste (ang. odd ). Jest on wybierany sygnaÅ‚em sterujÄ…cym BHE’ (ang. bus high enable ) i podobnie jak pierwszy blok, adresowany liniami A1-A19. Na rysunku 2.5 przedstawiono schematycznie opisany sposób adresowania. Jeżeli BHE’ = 1, to jest zrealizowany dostÄ™p do bloku pamiÄ™ci z adresami nieparzystymi. Tak wiÄ™c procesor może mieć dostÄ™p do

-    mniej i bardziej znaczÄ…cego bajtu 16-bitowego sÅ‚owa z parzystym adresem pierwszego bajtu (A0 = 0, BHE’ = 0),

-    mniej znaczÄ…cego bajtu 16-bitowego sÅ‚owa z nieparzystym adresem lub pojedynczego bajtu z adresem nieparzystym (A0 = 1, BHE' = 0),

-    bardziej znaczÄ…cego bajtu 16-bitowego sÅ‚owa z nieparzystym adresem lub pojedynczego bajtu z adresem nieparzystym (A0 = 0, BNE’ = 1).

Adresy

2.5. Organizacja pamięci operacyjnej


Z powyższego wynika, żc dostÄ™p do 16-bitowego sÅ‚owa w je< możliwy tylko wtedy, kiedy mniej znaczÄ…cy bajt jest pod parzystym adresem, a bardziej znaczÄ…cy pod adresem nastÄ™pnym (nieparzystym). Jeżeli sÅ‚owo rozpoczyna siÄ™ od adresu nieparzystego, to procesor 8086 mimo swojej 16-bitowej magistrali danych potrzebuje dwóch cykli dostÄ™pu do pamiÄ™ci. Jeżeli zatem przetwarzanie słów dwubajtowych w programie ma odbywać siÄ™ z maksymalnÄ… szybkoÅ›ciÄ…, to należy pamiÄ™tać o tym, aby pierwszy bajt sÅ‚owa byÅ‚ umieszczony pod parzystym adresem.

Rozkazy procesorów 8086/8088 umożliwiajÄ… przetwarzanie danych o dÅ‚ugoÅ›ci 8 bitów (bajt), 16 bitów (sÅ‚owo) oraz 32 bitów (podwójne sÅ‚owo). Na rysunku 2.6 przedstawiono sposób zapamiÄ™tania danych w pamiÄ™ci operacyjnej. Podobnie jak w in-


SÅ‚owo


Bardziej znaczÄ…cy bajt Mniej znaczÄ…cy bajt


â–¡


SÅ‚owo


Mniej znaczÄ…cy bajt


Bardziej znaczÄ…cy bajt


Większe adresy


Podwójne słowo

Najbardziej znaczÄ…cy bajt

Najmniej znaczÄ…cy bajt


Podwójne słowo


Rys. 2.6. Dane w pamięci operacyjnej


Najmniej znaczÄ…cy bajt


Najbardziej znaczÄ…cy bajt


Większe adresy


nych mikroprocesorach firmy Intel obowiÄ…zuje reguÅ‚a, żc najmniej znaczÄ…cy bajt danej znajduje siÄ™ pod adresem wskazanym jako adres caÅ‚ej danej, natomiast kolejne, bardziej znaczÄ…ce bajty pod nastÄ™pnymi starszymi adresami.

Segmenty pamięci operacyjnej

Pamięć operacyjna mikroprocesorów 8086/8088 jest podzielona na pewną liczbę logicznych segmentów definiowanych przez użytkownika. Segment jest to ciągły obszar (blok logiczny) pamięci operacyjnej o wielkości nic większej niż. 64 KB. Każdy segment



Wyszukiwarka

Podobne podstrony:
assembler?86? 0 5. Rozkazy mikroprocesorów 8086/80885.1. Informacje ogólne Mikroprocesory 8086 i 8
assembler?86? 8 % 5. Rozkazy> mikroprocesorów 8086/8088 Przykład LA HF NOT AH SAHF; znaczniki s
assembler?86? 1 22 2. Mikroprocesory 8086/8088 jest niezależny od innych segmentów i jest programo
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? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 8 136 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje przesunięcie cykliczne w
assembler?86? 9 138 5. Rozkazy mikroprocesorów 8086/8088 mentu do przetwarzania. W zależności od k
assembler?86? 0 1 1 140 5. Rozkazy mikroprocesorów 8086/8088 MOVS CEL, ZRODLO MOV SI, OFFSET ZRODL
assembler?86? 3 166 5. Rozkazy mikroprocesorów 8086/8088 STI (ang. set intemipt enable flag) ustaw
assembler?86? 0 160 5. Rozkazy mikroprocesorów 8086/8088 [TllOOOlO disp Liczba taktów -17 dla skok
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

więcej podobnych podstron