assembler�86� 3

assembler�86� 3



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

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

; (zob. dyrektywa %OUT - p. 4.3.7)

; można kontrolować przebieg ascmblacji ; na ekranie monitora


Przykłady

IFE (TYPE TABLICA) -1 DEC DI

ELSE

ADD DI,TYPE TABLICA ENDIF IF1

%OUT 1 przebieg ELSE

%OUT 2 przebieg ENDIF

; jeśli atrybut TYPE dla TABLICY ; jest równy 1, to rozkaz ten ; będzie tłumaczony,

; w przeciwnym przypadku ; ten rozkaz będzie tłumaczony

43.6. Makroinstrukcje

Makroinstrukcje pozwalają na wykonywanie pewnych operacji na tekście programu źródłowego w czasie jego tłumaczenia przez asembler. W szczególności umożliwiają zdefiniowanie nowej instrukcji, której stosowanie w programie źródłowym będzie powodowało generowanie ciągu rozkazów maszynowych, dyrektyw, komentarzy itp. (wiersza programu). Język MASM dopuszcza następujące rodzaje makroinstrukcji

-    nie wymagające definiowania: REPT/ENDM, IRP/ENDM, IRPC/ENDM;

-    wymagające zdefiniowania: MACRO/ENDM.

Z makroinstrukcjami są związane ponadto

-    dyrektywy pomocnicze: PURGE, EXITM, LOCAL;

-    specjalne operatory: &;;!%.

Szczegółowe wyjaśnienie słów kluczowych oraz operatorów znajdzie Czytelnik w rozdz. 6, poświęconym makrojęzykowi MASM.

43.7. Postać listingu

W trakcie tłumaczenia programu źródłowego jest tworzona jego dokumentacja zwana listingiem (raportem asemblacji). Listing oprócz treści programu źródłowego zawiera wiele informacji dodatkowych, m.in. kody maszynowe instrukcji, rozwinięcia makroinstrukcji, przydzielone adresy, informacje o błędach (p. 8.1). Poniższe dyrektywy umożliwiają uzyskanie odpowiedniej, wymaganej postaci listingu.

Dyrektywa PAGE

Dyrektywa PAGE pozwala zadeklarować format strony listingu. Standardowo format strony listingu jest następujący

-    66 wierszy na stronie, 80 znaków w wierszu,

-    po ostatnim wierszu na stronie jest generowany znak nowej strony FF (ang. form fptJk

4.3. Dyrektywy i pseudoinstrukcje

. pierwszy wiersz każdej strony zawiera: nazwę, numer wersji asemb dzinę,

kolejny wiersz zawiera numer rozdziału i strony listingu (ostatni automatycznie jest zwiększany o jeden przy nowej stronie). Składnia dyrektywy jest następująca

PAGE [wyrażenie_l] [, wyrażenie_2]

przy czym:

wrażenieokreśla liczbę wierszy na stronie i przyjmuje wartość z przedziału [10,255],

wyrażenie określa liczbę znaków w wierszu i przyjmuje wartość z przedziału

[60,132].    .    . , -    .

Użycie dyrektywy PAGE bez żadnych argumentów powoduje zakończenie

strony, wygenerowanie znaku nowej strony i rozpoczęcie numeracji stron od 1. Dyrektywa o składni PAGE + powoduje zwiększenie o 1 numeru rozdziału.

Dyrektywa TITLE____________

Dyrektywa TITLE pozwala określić tytuł, jaki będzie drukowany w pierwszym wierszu na każdej stronie listingu. Składnia dyrektywy jest następująca

TITLE tekst

Dyrektywa może wystąpić w programie tylko jeden raz. Jeżeli nie ma w programie dyrektywy NAME, to pierwszych sześć znaków tekstu określa nazwę modułu.

Dyrektywa SUBTTL    __

Dyrektywa SUBTTL określa podtytuł drukowany na każdej stronie listingu w wierszu pod tytułem (zob. TITLE). W programie można wielokrotnie użyć dyrektywy SUBTTL. Składnia dyrektywy jest następująca

SUBTTL tekst

przy czym tekst jest ograniczany do 60 znaków.

Dyrektywą COMMENT    _

Dyrektywa COMMENT pozwala wprowadzić blok komentarza bez używania znaku średnika. Pierwszy znak (niepusty) występujący po dyrektywie określa ogranicznik tekstu. Występujący po nim tekst nie jest analizowany przez asembler, aż do Spotkania ponownie zadeklarowanego ogranicznika.

Przykład

COMMENT * Teraz może być umieszczony

dowolny tekst, traktowany jako komentarz *

•••

MOV AX,BX    ; dalszy komentarz po średniku    +


Wyszukiwarka

Podobne podstrony:
assembler?86? 3 46 4. Język asemblerowy mikroprocesorów 8086/8088 PARA - początek segmentu będzie
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
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? 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? 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 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
assembler?86? 3 26 2. Mikroprocesory 8086/8088 Przykład (rys. 2.12) ZMIENNA2 ZMIENNA 1 ADD AX, ZMI
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 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor

więcej podobnych podstron