97974

97974



2. Dyrektywy związane z segmentami

Segment jest blokiem pamięci kodu lub danych, który tworzy asembler z kodu lub danych znajdujących się w pliku źródłowym. Użycie segmentów w module źródłowym jest zależne od złożoności aplikacji. Małe aplikacje wymagają mniejszej pamięci i są zwykle mniej złożone niż duże, wiclomodułowc aplikacje. Mikrokontroler MCS-51 ma kilka różnych, specyficznych dla siebie, przestrzeni pamięci, jak:

•    pamięć kodu programu

•    wewnętrzna pamięć danych adresowana bitowo, bezpośrednio lub pośrednio.

•    zewnętrzna pamięć danych.

Segmenty są więc używane do umiejscowienia kodu programu, stałych i zmiennych w tych przestrzeniach.

2.1    Licznik położenia

Podczas swojej pracy program asemblujący (asembler) przyporządkowuje każdemu segmentowi tzw. licznik położenia, który jest wskaźnikiem adresu w przestrzał i aktywnego segmaita Adres tai jest adresan względnym dla scgmaitu rclokowalncgo lub adresem bezwzględnym (rzeczywistym) dla segmentu absolutnego. Kiedy dany segmait jest po raz pierwszy aktywowany, licznik położenia jest ustawiany na 0. Jego wartość jest zmieniana po przeanalizowaniu danej instrukcji o wartość związaną z jej implementacją w danym segmencie. Dyrektywy inicjalizacji i rezerwacji pamięci (np. DS. DB lub DBIT) zmieniają wartość licznika położaiia po przydzielaiiu pamięci przez tą dyrektywę. Dyrektywa ORG ustala nową wartość dla licznika położaiia. Jeśli nastąpi zmiana aktywnego segmait na inny. a polan powrót do niego, to licznik położenia przyjmuje taką wartość, jaką miał ostatnio przy korzystaniu z danego scgmaitu. Zawrze, kiedy asanbler napotka etykietę, przypisuje jej bieżącą wartość licznika położaiia i typ bieżącego scgmaitu dla tej etykiety.

Znak dolara ($) sygnalizuje wartość licznika położenia w aktywnym segmaicie. Kiedy używa się symbolu $. należy pamiętać, że jego wartość zmiaiia się z każdą instrukcją, lecz tylko po tym. jak instmkcja ta zostanie całkowicie zanalizowana pizcz asanbler. Jeśli użyje się znaku S w miejscu operandu instrukcji lub dyrektywy', to reprezentuje on wtedy adres pierwszego bajta tej instrukcji.

2.2    Segmenty bezwzględne (absolutne)

Segmaity absolutne rezydują w określonym typie pamięci pod stałym adresan ustalanym przez programistę na poziomie pisania kodu programu. Są tworzone przy użyciu dyrektyw: CSEG. BSEG. dseg. ISEG i xseg Wymienione dyrektywy umożliwiają umieszczanie kodu i danych lub rczciwację pizcstrzaii pamięci pod określonym adresan. Segmaity absolutne są używane wtedy, gdy istnieje konieczność posiadania dostępu do stałego miejsca w pamięci lub umieszczana kodu lub stałych od określonego adresu.

Po resecie mikrokontroler rozpoczyna wykonywanie programu od adresu 0. Jeśli właściwy program nic zaczyna się od tego adresu, to pod nim musi być umieszczona co najmniej jedna instrukcja, która przekiauje wykonywanie programu pod właściwy adres. Aby wymusić umieszczaiie kodu programu od innego adresu należy wykorzystać segmaity' absolutne. Poniższy przykład przedstawia fragment programu, gdzie wymuszono w początkowej fazie jego wykonywania, skok do podprogramu inicjalizującego, który jest umieszczony w dalszej części pamięci kodu.

CSEG AT 0

RESET VECT: LJMP STARTUP


Kod programu, który został umieszczony od adresu 0000H za pomocą dyrektywy CSEG AT 0 wykonuje operację skoku pod etykietę STARTUP.

BSEG, CSEG, DSEG, ISEG, XSEG

Dyrektywy BSEG. CSEG. DSEG. ISEG. XSEG określają adres bezwzględny w odpowiednim segmencie progr amu, od którego będą umieszczane instrukcje występujące po tej dyrektywie. Adr es segmentu jest więc ustalany przez programistę już w chwili pisania progr amu. Omawiane dyrektywy mają następujący fonnat:

BSEG

AT

adres

/definiuje bezwzględny adres

w

segmencie

BIT

CSEG

AT

Adres

/definiuje bezwzględny adres

w

segmencie

CODĘ

DSEG

AT

Adres

/definiuje bezwzględny adres

w

segmencie

DATA

ISEG

AT

Adres

/definiuje bezwzględny adres

w

segmencie

XDATA

XSEG

AT

Adres

/definiuje bezwzględny adres

w

segmencie

IDATA



Wyszukiwarka

Podobne podstrony:
Eluent - czynnik wymywający, jest to płyn (gaz lub ciecz), który pełni funkcję czynnika przenosząceg
Pojęcia podstawowe: Czujnik - jest to układ fizyczny lub biologiczny, który swoją reakcję na bodziec
3. Definicje a. Klasa - jest zdefiniowanym przez użytkownika typem danych, który ma swój stan (jego
7 (458) 26 część 1 Co to jest polityka?Paradygmat Paradygmat jest w najogólniejszym sensie wzorem lu
Slajd16 (109) Rejestry segmentowe Megabajt przestrzeni pamięciowej jest adresowany przez procesor, z
Slajd11 Rejestry segmentowe Megabajt przestrzeni pamięciowej jest adresowany przez procesor, za pomo
Image556 Wskaźnik CQYP95 zawiera 9 wskaźników o wspólnych katodach wszystkich segmentów. Jest on prz
marketing egzamin 2 (1) lO.Kryteriami poprawności wykonania segmentacji jest spełnienie przez segme
3. Ujawnianie informacji o przychodach segmentów Ujawnianie informacji dotyczących segmentów jest
7.03.11r. Istota, procedury i kryteria segmentacji Segmentacja- jest to proces łączenia nabywców o t
REALMODE Tabela 5.1. Domyślne rejestry segmentowe Odwołanie do pamięci Domniemany rejestr
Uniwersytet Ekonomiczny! Jeśli punktem wyjścia segmentacji jest konsument, to segmenty rynku wyodręb
Ustawianie obrazów (2)Segmentacja - wprowadzenie Podstawowym celem segmentacji jest podział obrazu n
Image556 Wskaźnik CQYP95 zawiera 9 wskaźników o wspólnych katodach wszystkich segmentów. Jest on prz

więcej podobnych podstron