58 4. Język asemblerowy mikroprocesorów 808618088
Dyrektywy: DB, DW, DD, DQ, DT
Lista rozkazów mikroprocesorów 8086/8088 umożliwia przetwarzanie danych o wielkości bajtu, słowa i podwójnego słowa. Współpracujący z nimi koprocesor aryt-mentyczny 8087 dodatkowo przetwarza dane o wielkości 4 słów i 10 bajtów. Asembler MASM umożliwia definiowanie danych lej wielkości, rezerwację pamięci dla nich i ich inicjowanie za pomocą dyrektywy: DB, DW, DD, DO oraz DT (ogólnie Dx). Składnia dyrektywy jest następująca
[nazwa] Dx wyrażenie [, wyrażenie,...]
x = B-definiowanie bajtów j
x =W - definiowanie słów
x = D - definiowanie podwójnych słów j
x = Q - definiowanie czterech słów x =T - definiowanie dziesięciu bajtów natomiast wyrażenie może być w ogólnym przypadku
- numeryczne, łańcuchowe lub adresowe, j
LICZNIK DW2459D
ALA DB ’Ala\76,9,0BH
- znakiem ? ("pytajnik" - dla niezidentyfikowanej wartości), J
- wyrażeniem o składni: liczba DUP (wyrażenie).
MA KOTA DW 5 DUP (1, DUP (10), ?)
Przy definiowaniu zmiennych wykorzystuje się zazwyczaj znak pytajnika (?). Każdej zmiennej zostają przypisane trzy atrybuty: (zob. p. 4.2.4) segment, offset, typ.
Przykład DANE SEGMENT |
atrybuty: offset typ |
segment | |
ZMIENNA 1 DB ? |
0 |
1 |
DANE |
DB? |
1 |
1 |
DANE |
ZMIENNA 2 DW ? |
2 |
2 |
DANE |
TABLICA DT ? DT? DANE ENDS |
4 |
10 ; 14 |
DANE 10 DANE |
W przykładzie jednocześnie przedstawiono sposób rezerwacji pamięci. Jeżeli zmienne mają mieć określoną wartość początkową lub też zarezerwowana pamięć ma być za-
4.3. Dyrektywy i pseudoinstrukcje
powered by
Mi stoi
inicjowany to zamiast pytajnika wstawia się wyrażenia (o wartości określonej w czasie asemblacji) lub stosuje się składnię dyrektywy ze słowem kluczowym DUP. Wyrażenie może być numeryczne, adresowe bądź zawierać łańcuch znaków.
Do wyrażeń adresowych można stosować jedynie dyrektywy DW i DD. Dyrektywa DW powoduje wygenerowanie 16-bilowego offsetu, natomiast DD - pełnego adresu logicznego: w pierwszym słowie generuje offset, w drugim - adres początku segmentu (paragraf). Definiowane bajty, słowa itd. można układać w listy. Następujące definicje są równoważne
TABLICA_DANYCH
ADRES
adresskoku
TABLICA DANYCH
ADRES
ADRES SKOKU
DB 5, OFH, ?, ’d’
DW TABLICA DANYCH, ADRES DD SKOK 4- 5 DB 5 DB OFH DB ?
DB TT
DW TABLICA DANYCH DW ADRES DD SKOK + 5
Definiowanie łańcucha znaków (tekstu) może odbywać się jedynie za pomocą dyrektywy DB. Do kolejnych bajtów w pamięci są ładowane kody ASCII kolejnych znaków. Łańcuch musi być ograniczony apostrofami lub znakami cudzysłowu.
Przykład
TEKST 1 DB Mikrokomputer a minikomputer’
TEKST 2 DB "slyczenV0,13,luty" ♦
Dla dyrektyw DW, DD, DQ, DT definiowany łańcuch może mieć co najwyżej dwa znaki. Dla DD, DO i DT pozostałe bajty są wypełniane zerami.
Przykład
DANE SEGMENT | |||
; definicja |
zawartość pamięci |
offset | |
DW |
AB5 |
42H |
0 |
41H |
1 | ||
DD |
AB' |
42H |
2 |
41H |
3 | ||
00H |
4 | ||
00 H |
5 | ||
DQ |
’AB’ |
42H |
6 |
41H |
7 | ||
OOH |
8-13 | ||
DT |
łAB’ |
42H |
14 |
41H |
15 |