Dyrektywy asemblerowe
Asemblery dla mikrokontrolerów MCS-51 posiadają dyrektywy, które pozwalają na definiowanie symboli, wartości, rezerwację i inicjalizację pamięci oraz sterowanie umiejscowieniem kodu programu. Dyrektywy nie powinny być mylone z instrukcjami. Nie wytwarzają one wykonywalnego kodu i, za wyjątkiem dyrektyw DB
i DW
, nie wpływają bezpośrednio na zawartość kodu programu.
W nieniejszym opracowaniu zaprezentowano najcześciej wykorzystywane dyrektywy zaimplementowane w komercyjnym asemblerze firmy Keil oraz darmowym asemblerze ASEM-51. To, czy dana dyrektywa została zaimplementowana w danym asemblerze zostało zaznaczone przy jej szczegółowym omawianiu. Poniższa tabela pokazuje najczęściej wykorzystywane dyrektywy asemblerowe umożliwiając jednocześnie poprzez linki przejście do strony omawiającej użycie każdej z nich.
Tablica 4.1. Zestawienie omawianych dyrektyw
Dyrektywa | Format | Opis |
---|---|---|
Segmenty relokowalne | ||
SEGMENT |
segment SEGMENT klasa |
Definicja segmentu relokowalnego. |
RSEG |
RSEG segment |
Wybor segmentu relokowalnego. |
Segmenty bezwzględne | ||
CSEG |
CSEG [AT adres_absolutny] |
Definicja segmentu absolutnego w pamięci kodu. |
BSEG |
BSEG [AT adres_absolutny] |
Definicja segmentu absolutnego w pamięci danych adresowanej bitowo. |
DSEG |
DSEG [AT adres_absolutny] |
Definicja segmentu absolutnego w wewnętrznej pamięci danych adresowanej bezpośrednio. |
ISEG |
ISEG [AT adres_absolutny] |
Definicja segmentu absolutnego w wewnętrznej pamieci danych adresowanej pośrednio. |
XSEG |
XSEG [AT adres_absolutny] |
Definicja segmentu absolutnego w zewnętrznej pamięci danych. |
Kontrolowanie adresów w segmentach | ||
ORG |
ORG wyrażenie |
Określa umiejscowienie bieżącego segmentu. |
USING |
USING wyrażenie |
Określa predefiniowany adres rejestru symbolicznego i rezerwuje przestrzeń dla określonego banku rejestrów. |
Konsolidacja (linkowanie) programu | ||
NAME |
NAME |
Określa nazwę bieżącego modułu. |
PUBLIC |
PUBLIC symbol[, symbol, ...] |
Określa symbole, które mogą być użyte poza bierzącym modułem. |
EXTRN |
EXTRN klasa (symbol[, symbol, ...]) |
Definiuje odwołania w bieżącym module, które zostały zdefiniowane w innym module. |
Definicje symboli | ||
EQU |
symbol EQU wyrażenie |
Trwałe przypisanie wartości symbolowi. |
SET |
symbol SET wyrażenie |
Czasowe przypisanie wartości symbolowi. |
CODE |
symbol CODE adres_code |
Przypisanie symbolowi symbol określonego adresu adres_code z pamięci kodu. |
BIT |
symbol BIT adres_bit |
Przypisanie symbolowi symbol adresu adres_bit z przestrzeni pamięci danych adresowanej bitowo. |
DATA |
symbol DATA adres_data |
Przypisanie symbolowi symbol adresu adres_dana z wewnętrznej pamięci danych adresowanej bezpośrednio. |
IDATA |
symbol IDATA adres_idata |
Przypisanie symbolowi symbol adresu adres_idata z wewnętrznej pamięci danych adresowanej pośrednio. |
XDATA |
symbol XDATA adres_xdata |
Przypisanie symbolowi symbol adresu adres_xdata z zewnętrznej pamięci danych. |
Inicjacja pamięci | ||
DB |
[etykieta:] DB wyrażenie [,wyrażenie ...] |
Tworzy listę wartości, każda o rozmiarze bajta. |
DW |
[etykieta:] DW wyrażenie [,wyrażenie ...] |
Tworzy listę wartości, każda o rozmiarze słowa (dwóch bajtów). |
Rezerwacja pamięci | ||
DBIT |
[etykieta:] DBIT wyrażenie |
Rezerwuje w pamięci określoną wyrażeniem liczbę bitów. |
DS |
[etykieta:] DS wyrażenie |
Rezerwuje w pamięci określoną wyrażeniem liczbę bajtów. |
Inne | ||
END |
END |
Wskazuje koniec programu. |