assembler86 9

assembler86 9



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,...]

przy czym:    1J    M

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

DW    OFFSET ZMIENNA +1    1

-    znakiem ? ("pytajnik" - dla niezidentyfikowanej wartości),    J

ZNACZNIK    DB?    I

LICZBY    DW 14,19, ?, 0, ?    1

-    wyrażeniem o składni: liczba DUP (wyrażenie).

ALA    DB 100 DUP (0, ?)    i

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


Wyszukiwarka

Podobne podstrony:
assembler?86? 1 62 4. Język asemblerowy> mikroprocesorów 808618088 oraz    AA
assembler?86? 9 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
assembler?86? 4 68 4. Język asemblerowy mikroprocesorów 8086/8088 Dyrektywy .LALL, .SALL, .XALL Dy
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
assembler?86? 3 46 4. Język asemblerowy mikroprocesorów 8086/8088 PARA - początek segmentu będzie
assembler?86? 4 48 4. Język asemblerowy mikroprocesorów 8086/8088 tępne segmenty będą łączone jak
assembler?86? 5 50 4. Język asemblerowy mikroprocesorów 8086/8088 ; w kolejnym przykładzie zmienne
assembler?86? 6 52 4. Język asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
assembler?86? 8 56 4. Język asemblerowy mikroprocesorów 8086/8088 433. Połączenia międzymodułowe O
assembler?86? 2 64 4. Język asemblerowy mikroprocesorów 8086/8088 64 4. Język asemblerowy mikropro
assembler?86? 3 66 4. Język asemblerowy mikroprocesorów 8086/8088 66 4. Język asemblerowy mikropro
assembler?86? 5 70 4. Język asemblerowy mikroprocesorów 8086/8088 .186
assembler?86? 6 72 4. Język asemblerowy mikroprocesorów 8086/8088 72 4. Język asemblerowy mikropro
assembler?86? 7 74 4. Język asemblerowy mikroprocesorów 8086/8088 Przykład ZMIENNA A DW 5*5 ; =
assembler?86? 8 76    4. Język asemblerowy mikroprocesorów 8086/8088 LE (ang. lower
assembler?86? 9 38    3. Kolejne generacje mikroprocesorów firmy INTEL możliwości m

więcej podobnych podstron