Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.1.Składniaprogramu
2.1.5.Dyrektywyasembleradefiniującedane
45
Wprogramienapisanymwjęzykuasemblera,opróczinstrukcji,znajdująsiędyrektywy
asemblera,będąceinformacjamidlaprogramutłumaczącego(asemblera).Liniapro-
gramuzawierającadyrektywęasembleramanastępującąpostać:
[<nazwa>]<nazwadyrektywy>[<operandy>][;<komentarz>]
Składniadyrektywyjestbardzozbliżonadoskładniliniiprogramuzróżnicą,że
ponazwieniewystępujedwukropek.Nazwadyrektywyjestsłowemkluczowymasem-
blera.Operandyikomentarzzapisujesiętaksamojakwliniiinstrukcji.
Wceluopisaniazmiennych,naktórychprogramwykonujeoperacje,wjęzyku
asemblerastosujesiędyrektywydefiniującedane.Wzależnościodliczbybajtówprze-
znaczonychnaposzczególnedaneprzewidzianodyrektywy:DB(ang.DefineByte)defi-
nicjazmiennejodługościjednegobajtu,DW(ang.DefineWord)słowa,DD(ang.Define
DoubleWord)podwójnegosłowa,DO(ang.DefineQuadWord)poczwórnegosłowa.
Użycieposzczególnychdyrektywjestanalogiczne.
DyrektywaDB
Składniadyrektywyjestnastępująca:
[<nazwazmiennej>]DB<operand>{,<operand>}
Ponapotkaniutejdyrektywyasemblerwyznaczaposzczególneoperandyiwpisuje
dokolejnychkomórekpamięci.Pierwszyzwyszczególnionychbajtówjestdostępnypod
symbolicznymadresemokreślonymnazwązmiennej.Następnebajtydostępnepod
kolejnymiadresami.Adreszmiennejjestokreślonyprzezasemblerjakoprzesunięcie
(offset)względempoczątkusegmentu.Programistawjęzykuasembleraniemusiznać
konkretnychadresówposzczególnychzmiennych,gdyżonewyznaczoneprzezasem-
blerpodczastłumaczeniaprogramu.Adrespierwszegobajtuzmiennejmożebyćwpro-
gramiewyznaczonyzapomocąinstrukcjiLEA(ang.LoadEffectiveAddress):
LEABX,nazwazmiennej;
lubzzastosowaniemdyrektywyOFFSET:
MOVBX,OFFSETnazwazmiennej
dorejestruBXwpiszadres(offset)zmiennej
OperandywdyrektywieDBmogąbyćzadanenatrzysposoby:
?
(znakonieokreślonejwartości);
wyrażenieowartościzprzedziałuod–128do255;
znakalfanumerycznynp.‘A
(dokomórkipamięciasemblerwpisujekodASCII
znaku).
Otoprzykładowedefinicjedanych:
A
DB254,1Bh,-100d
CDB.A’,
.B’,
.C’
B
DB?,10,?
DDB?