Otevřít hlavní menu

Změny

Symboly ve výrazech

Přidáno 3 803 bajtů, 12. 10. 2012, 13:22
bez shrnutí editace
Integrovaný assembler poskytuje přístup k téměř všem Pascalským symbolům ve výrazu assembleru, včetně návěští, konstant, typů, proměnných, procedur a funkcí. Integrovaný assembler také obsahuje několik [[Symboly předdefinovaných typů|symbolů předdefinovaných typů]].

{| class="wikitable"
! align="left"| Symbol !! align="left"| Hodnota !! align="left"| Třída !! align="left"| Typ
|----------------------------------------------------------------------
| návěští || Adresa návěští || || Paměťový SHORT (krátký)
|----------------------------------------------------------------------
| Konstanta || Hodnota konstanty || Přímý || 0
|----------------------------------------------------------------------
| Typ || 0 || Paměťový || Velikost typu
|----------------------------------------------------------------------
| Položka || Ofset položky || Paměťový || Velikost typu
|----------------------------------------------------------------------
| Proměnné || Adresa proměnné || Paměťový || Velikost typu
|----------------------------------------------------------------------
| Procedura || Adresa procedury || Paměťový || NEAR nebo FAR
|----------------------------------------------------------------------
| Funkce || Adresa funkce || Paměťový || NEAR nebo FAR
|----------------------------------------------------------------------
| Jednotka || 0 || Přímý || 0
|----------------------------------------------------------------------
| @Code || Adresa programového segmentu || Paměťový || 0FFF0H
|----------------------------------------------------------------------
| @Data || Adresa datového segmentu || Paměťový || 0FFF0H
|----------------------------------------------------------------------
| @Result || Ofset návratové || Paměťový || Velikost typu
|}


;Symboly, které NEMOHOU být použity ve výrazech
* Standardní procedury a funkce (např. [[WriteLn]], [[Chr]]).
* Speciální pole [[Port]] a [[PortW]].
* Řetězce, reálná čísla a množinové konstanty.
* Procedury a funkce deklarované s direktivou [[inline]].
* [[Návěští integrovaného assembleru|návěští]], která nejsou deklarována v aktuálním bloku.
* Symbol [[@Result]] vně funkci.

;Lokální proměnné
:Lokální proměnné (proměnné deklarované ve funkcích a procedurách) jsou vždy alokovány na zásobníku a zpřístupněny relativně k SS:BP.

:Hodnota symbolu lokální proměnné představuje ofset od [[SS]]:[[BP]].

:Integrovaný assembler k odkazu na lokální proměnnou automaticky přidává [[BP]].

;Parametry volané odkazem
:Assembler vždy zpracuje parametr volaný odkazem jako 32 bitový ukazatel, a velikost parametru je vždy 4 (velikost 32 bitového ukazatele).

:Pro přístup k obsahu parametru nejdříve musíte získat hodnotu tohoto ukazatele a pak se jím odkazovat.

;Oblast viditelnosti
:Oblast viditelnosti poskytují symboly typu, položky a proměnné typu záznamu nebo typu objektu.

:Navíc identifikátor jednotky otevírá oblast viditelnosti pro jednotku, podobně jako plně kvalifikovaný identifikátor v Pascalu.

;Operátor
:Některé symboly, jako např. typy záznamu a proměnné typu záznam, vyžadují při přístupu použití kvalifikátoru s operátorem [[Selektor člena struktury (xxx.yyy)|selektor člena struktury (.)]].

;Identifikátor typu
:Každá z následujících instrukcí generuje stejný strojový kód, který do registru AX přesune obsah [[ES]]:[ [[DI]]+4]:

asm
MOV AX,(Rect PTR ES:[DI]).B.X
MOV AX,Rect(ES:[DI]).B.X
MOV AX,ES:Rect[DI].B.X
MOV AX,Rect[ES:DI].B.X
MOV AX,ES:[DI].Rect.B.X
end;

[[Category:assembler]]