68 4. Język asemblerowy mikroprocesorów 8086/8088
Dyrektywy .LALL, .SALL, .XALL
Dyrektywy .LALL, .SALL i .XALL służą do określenia postaci listingu rozwinięć makroinstrukcji (zob. rozdz. 6 i p. 4.3.6). Dyrektywa .LALL (ang. list ALL ) powoduje, że niezależnie od tego, czy kody wynikowe są generowane lub nic w rozwinięciu makroinstrukcji (tzn. czy są spełnione lub nie warunki dyrektywy IFxxx), jest drukowany pełny tekst makroinstrukcji. Dyrektywa .SALL (ang. supress ALL ) wstrzymuje drukowanie rozwinięć makroinstrukcji, w tym także kodów wynikowych. Dyrektywa .XALL określa standardową deklarację drukowania rozwinięć makroinstrukcji, które są drukowane tylko wtedy, kiedy jest generowany kod wynikowy.
Dyrektywy .LIST, .XL1ST___ j
Dyrektywa .LIST powoduje, że są drukowane wszystkie wiersze programu źródłowego oraz generowane kody wynikowe. Jest to deklaracja standardowa przyjmowana automatycznie przez asembler na początku pracy. Dyrektywa .XLIST wstrzymuje drukowanie aż do napotkania dyrektywy .LIST. ^
Przykład
; drukowany fragmeni programu
; poczÄ…wszy od lego miejsca drukowanie I
; (np. definicje makroinstrukcji)
• • •
,XLIST
• • •
• • •
.LIST
Dyrektywa %OUT
Za pomocą dyrektywy %OUT można w czasie asemblacji wyprowadzać tekst (komunika!) na ekran monitora. Dyrektywa pozwala między innymi śledzić przebieg asemblacji. Składnia dyrektywy jest następująca 1
%OUT dowolny tekst wyprowadzany na ekran Dyrektywy .SFCOND, .LFCOND, .TFCOND __j
Dyrektywy .SFCOND, .LFCOND i .TFCOND w połączeniu z przełącznikiem (parametrem) /X. ustawianym opcjonalnie przy wywoływaniu asemblera, sterują listowaniem bloków programu, wydzielonych dyrektywami IFxxx/ELSE/ENDIF przy nie spełnionych w arunkach dyrektywy IFxxx. Standardowo, gdy nic występuję w programie żadna z powyższych dyrektyw i przy wywołaniu asemblera nie użyto przełącznika /X, są drukowane wszystkie bloki programu, niezależnie czy warunki dyrektywy IFxxx są spełnione, czy leż nie. Ustawienie przełącznika /X powoduje w takim przypadku drukowanie z pominięciem bloków, dla których warunek nie jest spełniony.
Dyrektywa .TFCOND (ang. loggie false conditionals ) zmienia ustawienie standardowe na przeciwne. Jeżeli nie został użyty przełącznik IX i bloki programu źródłowego o nie spełnionych warunkach dyrektywy lFxxx były drukowane, to po dyrektywie
powered by
4.3. Dyrektywy i pseudoinstmkcje
TFCOND nic będą. Jeżeli w tej sytuacji zostanie wywołany asembler z /X, to bloki o nie spełnionych warunkach będą drukowane. Użycie dyrektywy TFCOND po dyrektywie .LFCOND lub .SFCOND powoduje, że przestają być one aktywne i zostaje przywrócony stan standardowy.
Dyrektywa .LFCOND (ang. list false conditionals ) unieważnia poprzednio użytą dyrektywę .SFCOND i powoduje, że stan przełącznika /X w czasie wywołania asemblera nie jest analizowany (jego stan jest bez znaczenia). Wszystkie bloki programu źródłowego, dla których nie są spełnione warunki dyrektywy IFxxx, są druko-
wane.
Dyrektywa .SFCOND (ang. suppress false conditionals ) unieważnia użytą poprzednio dyrektywę .LFCOND i powoduje, że stan przełącznika /X w czasie wywołania asemblera nie jest analizowany. Bloki programu źródłowego, dla których nie są spełnione warunki dyrektywy IFxxx, nie są drukowane.
Przykład
; dyrektywa |
drukowanie bloków o nie spełnionych | |
; w programie |
warunkach będzie realizowane: | |
(bez /X) |
(z/X) | |
••• |
;tak |
nic |
.TFCOND |
;nic |
tak |
• • • TFCOND • |
;tak |
nie |
.SFCOND • • • |
;nie |
nie |
• •• .TFCOND |
;nic |
tak |
TFCOND |
;tak |
nic |
• • • .SFCOND |
;nie |
nie |
• • • LFCOND |
;tak |
tak |
• • • .TFCOND |
;nie |
tak |
Wybór procesora |
^ mikroprocesorami 8086/8088/80186 oraz 80286 mogą ponadto współpracować koprocesory arytmetyczne, odpowienio 8087 oraz 80287. Koprocesory te mają własną istę rozkazów, które mogą być używane w programie źródłowym identycznie jak roz-azy procesorów głównych (zob. rozkaz ESC). Wybór odpowiedniego zbioru roz* azów jest realizowany za pomocą następujących dyrektyw
•8086 . procesory 8086/8088