assembler86 1

assembler86 1



62 4. Język asemblerowy> mikroprocesorów 808618088

oraz    AA A    DB 1,2,3,1,23    1

DB 4    !

DB 5,5    J

DB 1,23,1,2.3,    1

DB 4

DB 5,5    1

a także A AA    DB 1,23,1,2,3,4,5,5,1,2,3,1,2,3,4,5,5    J

atrybuty to omi-


Słowo kluczowe DUP można leż wykorzystać przy (re)definiowaniu łańcuchów. Łańcuchy TEKST i INNYTEKST z wcześniejszego przykładu mają wynikające z zastosowanej dyrektywy: tvp = l, Iength= 1 oraz size = l. Można nąć następująco

TEKST DB 5 DUP (?)

ORC,    OFFSET TEKST

DB    'Lidia’

Dyrektywa RECORD

Dyrektywa RECORD służy do przygotowania przydziału pamięci operacyjne na poziomie bitów. Sama definicja rekordu nie powoduje rezerwacji pamięci, dopiero użycie nazwy rekordu spowoduje, że miejsce w pamięci zostanie zarezerwowane i zainicjowane zgodnie z wcześniej zadeklarowaną formą. Jeżeli przy aktualnym wywołaniu rekordu nic jest podana wartość, to przy inicjowaniu jest przyjmowana wartoś standardowa. W zależności od sumarycznej liczby bitów (tzn. zadeklarowanych poi i ich długości) zostaje zarezerwowany bajt lub słowo w pamięci. Tak więc maksymalna! liczba bilów w rekordzie wynosi 16, minimalna zaś I. Składnia dyrektywy jest następująca    1

nazwa rekordu    RECORD nazwa_pola_l:wielkość [=wyrażenie]

&    [, nazwa pola_2:wielkość [ = wyrażenie],...]    4

przy czym:

-    nazwajyola musi kończyć się dwukropkiem,    1

- wielkość oznacza długość pola w bitach,    J

-    wyrażenie, jeżeli występuje, określa wartość pola w momencie jego inicjacji (jeżeli wartość ta jest zbyt duża, to jest meldowany błąd).

Przykład

SEMAFORY


RECORD K:2, GW:4 = 0FH, WYN1K:3 = 010B

Pole rekordu zostaje zorganizowane zgodnie z kolejnością deklarowanych bitów, od najbardziej do najmniej znaczącego bitu. Gdy całkowita długość rekordu jest mniejsza niż 8 lub 16, to rekord zostaje przesunięty w prawo, aż ostatni bit ostatniego pola znajdzie się na pozycji najmniej znaczącego bitu bajtu lub słowa. Zdefiniowany rekord może być użyty do rezerwowania i inicjowania pamięci w podobny sposób jak dyrektywy DB i DW.

4.3. Dyrektywy i pseudoinstrukcje


Składnia wywołania rekordu jest następująca: nazwa nazwa rekordu [wyrażenie)

pr/y czym wyrażenie, jeżeli występuje, musi być w nawiasie trójkątnym. Inicjuje ono pole określoną wartością.

Przykład

A SEMAFORY < 3„ 11 IB >    ; pole ”GW nic jest inicjowane

Zmienne określone za pomocą dyrektywy RECORD mogą być w programie używane tak samo jak inne zmienne (np. deklarowane dyrektywami DB lub DW). Z dyrektywą RECORD są związane trzy operatory - SHIFT, WIDTH, MASK oraz operator SIZE stosowany ogólnie w wyrażeniach adresowych. Ich znaczenie jest opisane w p. 4.4.

Dyrektywy STRUĆ / ENDS _    ______

Dyrektywy STRUC/ENDS pozwalają na zdefiniowanie struktury danych na poziomie bajtów (podobnie jak dyrektywa RECORD na poziomie bitów). Wywołanie nazwy_struktnn>\ co może wystąpić w programie wielokrotnie, powoduje zarezerwowanie i ewentualnie zainicjowanie odpowiedniej liczby bajtów w pamięci operacyjnej. Składnia definicji struktury jest następująca

nazwastruktury    STRUĆ

; między słowem kluczowym STRUĆ a ENDS ; może wystąpić dowolna kombinacja dyrektyw ; DB,DW,DW,DQ,DT definiujących pola ; struktury

nazwa struktury    ENDS

Dyrektywy DB, DW, DD, DO i DT, przy wywołaniu nazwy struktury, są przepisywane tylko wówczas, gdy występują w formie pojedynczych deklaracji, np.: LICZBA DW ?, ABC DB 55H, lub w postaci łańcucha znaków, np.: TEKST DB TEKST’. Deklaracje z listą argumentów, np.: POLE A DB 1,2,3,? oraz wykorzystujące słowo kluczowe DUP nie są wtedy przepisywane. Składnia wywołania dyrektywy jest

nazwa nazwastruktury < wyrażenie [, wyrażenie, ...J >

Przy czym odpowiednie pole struktury przyjmuje wartość wyrażenia.

Przykład

dane

pOLE DANYCH LICZBA WSKAŹNIK STAŁA TABELA TEKST


SEGMENT

STRUĆ    ; definicja struktury

DW ?    ; danych

DB 0

DD 0A6810012H DB 20 DUP (?)

DB ’ pewien tekst’


Wyszukiwarka

Podobne podstrony:
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu
assembler?86? 9 58 4. Język asemblerowy mikroprocesorów 808618088 Dyrektywy: DB, DW, DD, DQ, DT Li
assembler?86? 6 52 4. Język asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
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? 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? 1 182 6. Makrojęzyk asemblera MASM Powyższe wywołania wygenerują następujące rozwini

więcej podobnych podstron