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ásenieERROR #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 |