Konštanty definované prekladačom

Tieto konštanty sa používajú presne tak isto, ako konštanty, ktoré si sami nadefinujete. Ich hodnota sa môže v rámci zdrojového textu meniť.

$ - konštanta obsahuje pozíciu v aktuálnom segmente (v tvare SEGMENT:OFFSET). Používa sa pre určenie veľkosti bloku dát, alebo programu, prípadne pre skok o známy počet bajtov.

Príklad:
; Read CMOS
MOV AL,00H ;Nastavenie CMOS
OUT 70H,AL ;adresy 00h (sekundy)
JMP $+2 ;nepatrné zdržanie
IN AL,71H ;načítaj údaj z CMOS

Inštrukcia JMP $+2 spôsobí skok na adresu IP+2, kde IP je (INSTRUCTION POINTER) čiže register obsahujúci ofset adresy práve vykonávanej inštrukcie. POZOR! Pri takýchto skokoch musíte poznať dĺžku inštrukcie. Tú môžete zistiť tak, že napríklad súbor prog1.ASM preložíte takto: TASM prog1.ASM /la. la je prepínač, ktorý umožní vytvorenie podrobného súboru s príponou *.LST. V ňom nájdete všetky potrebné informácie.


@CODE - konštanta obsahuje segmentovú adresu kódu programu.

Píklad:
.CODE
MOV AX,@CODE
MOV CS,AX


@CURSEG - konštanta obsahuje segmentovú adresu aktuálneho segmentu, t.j. segmentu v ktorom je použitá.

Príklad:
.CODE
MOV AX,@CURSEG
MOV CS,AX


@DATA - konštanta obsahuje segmentovú adresu dát.

Príklad:
.DATA
TXT DB "ASSEMBLER"
.CODE
MOV AX,@DATA
MOV DS,AX


@STACK - konštanta obsahuje segmentovú adresu zásobníka, ktorý je určený direktívou .STACK.


@STARTUP - konštanta určuje vstupnú adresu programu. Je nadefinovaná iba vtedy, keď je v zdrojovom texte použitá pseudoinštrukcia .STARTUP.

Príklad:
.CODE
...
.STARTUP
...
END @STARTUP