Direktíva DB

db

Funkcia vkladá bytovú hodnotu do pamäte programu
Syntax db výraz [,výraz]....
Popis Slúži na ukladanie bytových hodnôt do pamäte programu. Často sa používa na vytvorenie tabuliek s rôznymi konštantami. Pred direktívou môže byť návestie ktoré bude symbolizovať adresu prvej hodnoty v zozname parametrov za direktívou DB. Može sa použiť iba v segmente CSEG. V iných segmentoch oznámi prekladač chybové hlásenie:

ERROR #30: Illegal directive with current active segment

Za direktívou DB musí byť aspoň jeden parameter. Môže ich tam byť aj viac, potom musia byť oddelené znakom ','. Môžu to byť číselné konštanty, aritmetické výrazy, alebo textove reťazce. Hodnota musí byť v rozsahu 0 až 255 Pri prekročení povoleného rozsahu prekladač oznámi chybové hlásenie

ERROR #32: Byte definition exceeds 255

Ak nezadáme žiadny výraz riadok sa ignoruje. Dokonca sa neobjaví ani v listingu. Považujem to za drobnú chybičku prekladača. Mal by generovať chybové hlásenie.
Číselné konštanty, výrazy, textové reťazce možno ľubovolne kombinovať. Výraz sa vyhodnotí a výsledná hodnota je uložena na aktuálnu pozíciu v pamäti programu. Pozícia sa posúva o jedna ďalej a vyhodnocuje sa ďalší výraz. Ak ide o textový reťazec tak každému jednému znaku je priradený jeho ASCII kód a je vložený na pozíciu, ktorá sa potom posunie o jedna.
Príklad
DniMesiacov:	db	31, 28, 31, 30	;tieto cisla udavaju pocet dni v mesiacoch jan, feb, mar, apr
		db	31, 30, 31, 31	;maj, jun, jul, august
		db	30, 31, 30, 31 	;september, oktober, november, december
Rok		db	365			;chyba! hodnota je nad 255		
PolRok		db	365/2			;toto je vyraz, jeho hodnota je 182
StvrtRok	db	365/4			;toto je vyhodnotene ako 91
Pondelok	db	'Pondelok',0		;Text pondelok ukonceny znakom 0
Kombinacia	db	7, 'Tyzden', 0, 7 * 4, 'Mesiac'	;kombinacia roznych parametrov
Hlavná stránka
Copyrights Peter Plesník 25.9.2005 20:26:44 All rights reserved