assembler86 6

assembler86 6



52 4. Język asemblerowy mikroprocesorów 8086/8088

MOV AX, DANE 2    ; oraz

MOV ES, AX    ; ES

• ••

; przedrostki są zbędne MOV BX, ZMIENNA 4 MOV CL, ZMIENNA 1 MOV DH, ZMIENNA 2

• • •

PROGRAM    ENDS    +

Użycie opcji    NOTHING wyłącza automatyczne generowanie przedrostków

przez asembler i wtedy w każdym przypadku (nawet gdy przyporządkowanie rejestru segmentowego dla danego działania jest standardowe) przedrostki muszą wystąpić.

Przykład

ASSUME    DS:NOTHING

• ••

• ••

MOV AH,    DS:BAJT[BX + 7]

MOV AL,    DS:[SI-9]    +

Jeżeli do adresowania pamięci wykorzystuje się rejestry BX, BP, SI, DI, którym są przyporządkowane standardowe rejestry segmentowe (por. p. 2.5), to użycie dyrektywy ASSUME zwalnia z konieczności dopisywania przedrostków w programie.

Przykład

PROGRAM SEGMENT

ASSUME CS:PROGRAM, DS:SEG ZMIENNAl,

&    ES:SEG ZMIENNA 2

MOV AX, SEG ZMIENNA l MOV DS, AX

MOV AX, SEG ZMIENNA 2 MOV ES, AX • • •

MOV BX, ZMIENNA_2[BX][SI] ; przedrostek ???

MOV CX, ZMIENNA_1[BP] ; przedrostek ???

Dyrektywa LABEL

Dyrektywa LABEL pozwala zdefiniować typ nazwy symbolicznej określającej zmienną lub etykietę. Składnia dyrektywy jest następująca

nazwa    LABEL typ

przy czym typ może być BYTE, WORD, DWORD dla zmiennych lub NEAR, FAR dla etykiet.

powered by

4.3. Dyrektywy i pseudoinstmkcje


Mi siol

Dyrektywa LABEL przypisuje adresowi pamięci (wskazywanemu przez aktualny stan wskaz'nika pozycji asemblera) nazwę oraz określony typ.

Przykłady

deklaracja:

jest równoważna: deklaracja:

jest równoważna:


ZMIENNA

ZMIENNA

OBLICZENIA

OBLICZENIA:

LABEL WORD

DW 5555H DW 5555H LABEL NEAR MOV BX, CX MOV BX, CX


Użycie dyrektywy LABEL do definiowania etykiet musi być poprzedzone określeniem zawartości rejestru CS za pomocą dyrektywy ASSUME. Jeżeli jakaś etykieta jest wykorzystywana jako symboliczny adres skoku zarówno bliskiego wewnątrz segmentu, jak i dalekiego między segmentami, to może być ona dwojako zdefiniowana

SKOK DALEKO    LABEL FAR

SKOK BLISKO:    MOV BL, BH

Jest możliwe także redefiniowanie typu zmiennych.

Przykład

ZMIENNA    SŁOWO    LABEL WORD

ZMIENNA    BAJT    DB100 DUP (?)    +

Powyższy zapis pozwala zdefiniowaną tablicę przetwarzać zarówno jako tablicę bajtów, jak i słów.

Przykład

MOV DX, ZMIENNA_SLOWO[BX)

MOV DL, ZMIENNA_BAJT[BX + 5|

Następujące dyrektywy mają identyczne znaczenie (zob. p. 4.3.2 i 4.4)

nazwa    LABEL typ

nazwa    EQU THIS typ

H Ir    . J4..1    

Dyrektywy PROC / ENDP

Dyrektywy PROC i ENDP służą do definiowania podprogramów (procedur). ywołame podprogramu odbywa się za pomocą rozkazu maszynowego CALL, pow-r()t zaś do miejsca wywołania za pośrednictwem rozkazu RET (zob. p. 5.5.1). Aby jed-a asembler mógł wygenerować właściwe kody tych rozkazów, potrzebuje dodat-


Wyszukiwarka

Podobne podstrony:
assembler?86? 6 72 4. Język asemblerowy mikroprocesorów 8086/8088 72 4. Język asemblerowy mikropro
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
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? 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? 4 68 4. Język asemblerowy mikroprocesorów 8086/8088 Dyrektywy .LALL, .SALL, .XALL Dy
assembler?86? 5 70 4. Język asemblerowy mikroprocesorów 8086/8088 .186
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 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
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? 0 60 4. Język asemblerowy nuKroprocesorów 8086/8088 ; OOh    16-23 DA
assembler?86? 4 28 2. Mikroprocesory 8086/8088 MOV    AL,ZMIENNA BAJT[DI
assembler?86? 9 58 4. Język asemblerowy mikroprocesorów 808618088 Dyrektywy: DB, DW, DD, DQ, DT Li

więcej podobnych podstron