MCS-51
Dyrektywy asemblerowe

Inicjalizacja pamięci kodu

Dyrektywy inicjalizujące pamięć używane są do inicjalizacji pamięci kodu stałymi wartościami o rozmiarze jednego lub dwóch bajtów. Zapisywanie pamięci wspomnianymi stałymi odbywa się od miejsca wskazywanego przez bieżącą wartość licznika położenia w obecnie aktywnym segmencie.

DB

Dyrektywa DB inicjalizuje pamięć wartościami, z których każda ma rozmiar jednego bajta. Omawiana dyrektywa ma następujący format:

etykieta:  DB  wyrażenie[, wyrażenie, ...]
  • etykieta jest symbolem, który określa adres inicjowanej pamięci.
  • wyrażenie jest wartością o rozmiarze bajta. Każde wyrażenie może być symbolem, ciągiem znaków lub wyrażeniem.

Dyrektywa DB może być umieszczana tylko wewnątrz segmentu kodu programu. Jesli zostanie użyta w innym segmencie, program asemblujący wygeneruje informację o błędzie.

Przykłady:

NAPIS:     DB  'Kanal nr', 0    ;do pamięci zostaną zapisane kody..
                                ;..ASCII liter oraz wartość zero
TABELA:    DB  0,1,8,'A','0', LOW(TABLE),';'
ZERO:      DB  0, ''''
CASE_TAB:  DB  LOW(REQUEST), LOW(TABLE), LOW(ZERO)
KODY_LED:  DB  48h              ;kod cyfry 0
           DB  06h              ;kod cyfry 1
           ...
           ...
           DB  6Fh              ;kod cyfry 9

DW

Dyrektywa DW inicjalizuje pamięć wartościami, z których każda ma rozmiar dwóch bajtów. Omawiana dyrektywa ma identyczny format, jak dyrektywa DB.

etykieta:  DW  wyrażenie[, wyrażenie, ...]
  • etykieta jest symbolem, który określa adres inicjowanej pamięci.
  • wyrażenie jest wartością o rozmiarze dwóch bajtów. Każde wyrażenie może być symbolem, ciągiem znaków lub wyrażeniem.

Dyrektywa DW może być umieszczana tylko wewnątrz segmentu kodu programu. Jesli zostanie ona użyta w innym segmencie, program asemblujący wygeneruje informację o błędzie.

Przykłady:

PER_ADDR:  DW  8002h, 8023h, 0F001h
DWA_ZNAKI: DW  'AB', 'CD', 'EF'
CRLF:      DW  0D0Ah   ;słowo zawierające kody znaków sterujących CR i LF
           DW  $       ;w komórce o rozmiarze dwóch bajtów zostanie
                       ;zapisany adres pierwszej z nich