BOUND - Konroluj index pole vzhledem k jeho hranicím

Z Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Instrukce
BOUND - Konroluj index pole vzhledem k jeho hranicím
Časování
13 (80286), 10 (80386)
Popis
Operace BOUND je používaná k zajištění toho, že index pole je v mezích definovaných dvouslovním blokem v paměti. První operand (registr) musí být větší nebo roven prvnímu slovu v paměti, a menší než nebo roven druhému slovu v paměti. Nejsou-li tyto podmínky splneny, generuje se INT 5.


Syntaxe
BOUND destination, source


Ovlivňuje příznaky
žádne


Nedefinované příznaky
žádne


Výjimky v reálnem módu
Jestliže test na hranice pole neuspeje (t.j. index prvku pole leží mimo meze pole), je generováno přerušení INT 5. Je-li daný operand na offsetu 0FFFDH či vyšším, je generováno přerušení INT 13. Je-li druhý operand registr, je generováno přerušení INT 6.


Výjimky v privilegovaném módu
Jestliže test na hranice pole neuspeje, je generováno přerušení INT 5. Pro neplatnou efektívni adresu operandu v registrech CS, DS a ES je generována všeobecná výjimka privilegovaného módu. Při neplatné adrese v SS je generována výjimka "chyba zásobniku".


Poznámka pro 80386
Šírka slova je 32 bitů.


Příklad
 BOUND AX,MEM_WRD
 BOUND EBX,NEW_WORD ; (jen pro 80386)