assembler86 2

assembler86 2



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

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

POLE A

DB 1,2,3,?

POLE DANYCH

ENDS

•••

•••

; teraz będzie wywołanie struktury

WYNIKI

POLE DANYCH < 7,0FFH,„,inny tekst’, >

; polu STAŁA nie będzie przypisana wartość ; pola TABELA i POLE A są nieprzepisywalne • ••

DANE

.A A A A A A A

• ••

ENDS

Jeżeli inicjowany łańcuch znaków jest krótszy niż deklarowany, to zostanie uzupełniony z prawej strony spacjami. Z kolei gdy będzie zbyt długi, zostanie z prawej strony obcięty.


Przykład

MOV DH, WYNIKI.WSKAZNIK MOV    WYNIKI.LICZBA, AX

MOV [BXjWYNIKI.TABELA, 0

Dyrektywa .RAD!X    |

System dziesiętny jest standardowym systemem liczenia w asemblerze MASM dla stałych numerycznych i wyrażeń. Za pomocą dyrektywy .RADIX można zadeklarować dowolny system liczenia o podstawie z zakresu [2,16]. Liczby przedstawione w przyjętym systemie liczenia nie muszą kończyć się odpowiednią literą - B, O, Q, D lub H (zob. p. 4.2.2).    1

Dyrektywa .RADIX nie ma jednak wpływu na sposób przedstawiania argumentów dyrektyw DD, DQ i DT, dla których standardowo obowiązuje dziesiętny system liczenia (chyba, że liczba kończy się jedną z wymienionych wyżej liter).

Przykład

MOV CX, OABCDH

.RADIX16    .i (U j    '

MOV CX, OABCD    ; rozkaz równoważny poprzedniemu

• ••

• • •

; a teraz przypadek złośliwy

MOV AL, IB    ; litera "B" deklaruje dwójkową postać

; liczby i do rejestru AL będzie załadowana liczba 1 ; (dziesiętnie), zamiast szesnastkowo 1BH;

; mimo dyrektywy .RADIX 16 trzeba w tym przypadku napisać:


MOV AL, 1BH

4.3. Dyrektywy i pseudoinstmkcje 4    Sterowanie asemblacją warunkową

powered by

Mi fioł


Dyrektywy sterujące asemblacją warunkową pozwalają na pomijanie w czasie tłumaczenia programu źródłowego wydzielonych bloków tego programu. Składnia dyrektyw nawiązuje do instrukcji warunkowej IF/ELSE języków wysokiego poziomu i ma następującą postać

IFxxxx argument

...; 1 blok programu źródłowego [ELSE

... ]; opcjonalnie 2 blok programu źródłowego ENDIF

Jeżeli warunek określony argumentem jest prawdziwy, to 1 blok programu źródłowego jest tłumaczony. W przeciwnym przypadku jest pomijany, a jest tłumaczony 2 blok programu (jeśli zastosowano słowo kluczowe ELSE). Każda dyrektywa IF musi być zakończona słowem ENDIF. Dyrektywy asemblacji warunkowej mogą być zagnieżdżane do 255 razy. Każdy z argumentów musi być znany w pierwszym przejściu asemblera, w przeciwnym przypadku mogą wystąpić błędy i niepoprawna asemblacja. W każdej dyrektywie asemblacji warunkowej może wystąpić jedynie raz słowo ELSE. Gdy warunek nic jest spełniony, umożliwia to generowanie innych kodów wynikowych. ELSE dotyczy' zawsze ostatniej dyrektywy IF. Każda dyrektywa IF musi być zakończona słowem ENDIF. Są możliwe następujące rodzaje dyrektywy IF

Składnia dyrektywy


Warunek spełniony, gdy:

(asemblacja realizowana, gdy:)    _

IF wyrażenie IFE wyrażenie IF1 IF2

IFDEF nazwa IFNDEF nazwa

IFB<argument >

IFNB < argument >

IFIDN<^J>,<^_2>

1FDIF <arg_ 1 >, < arg_2 >


wartość wyrażenia jest rów na zero wartość wyrażenia jest różna od zera pierwszy przebieg asemblera drugi przebieg asemblera nazwa została zdefiniowana nazwa nie została zdefiniowana i nic jest zadeklarowana jako zewnętrzna argument będący łańcuchem jest pusty argument j.w. nie jest pusty oba argumenty (łańcuchy) są identyczne oba argumenty (łańcuchy) są różne

Pr^y czym:

1wrażenie musi przedstawiać wartość numeryczną,

* muszą wystąpić nawiasy <...>,

nazwa zdefiniowana w programie dopiero po użyciu dyrektywy IFDEF/IFNDEF czasie pierwszego przebiegu asemblera jest uważana za niezdefiniowaną, a w' czasie Urugiego za zdefiniowaną,

/tyrcktywy 1FB/IFNB, IFIDN/IFDIF są wykorzystywane głównie w makroinstruk-cJach (zob. p. 4.3.6).


Wyszukiwarka

Podobne podstrony:
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
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? 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? 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? 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? 2 24 2. Mikroprocesory 8086/8088 Rodzaj operacji realizowanej przez BIL Rejestr s
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów

więcej podobnych podstron