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 +