MCS-51

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.