IDIV - celočíselné delení (se znaménkem)
Jump to navigation
Jump to search
- Instrukce
- IDIV - celočíselné delení (se znaménkem)
- Časování
- 17-28 (80286), 19-34 (80386)
- Popis
- Instrukce IDIV provádí operaci celočíselného delení se znaménkem. Jestlize je specifikován zdrojový operand o velikosti byte, je registr AX delen bytovým operandem: kvocient je uložen v AL a zbytek v AH. Zdrojový operand o velikosti slova deli DX:AX slovem. Vyšších 16 bitů delence je v registru DX, kvocient je umísten v AX a zbytek v DX. Zbytek má stéjne znaménko jako delenec a je vždy menší jako delitel. Viz též poznámka pro 80386.
- Syntaxe
- IDIV source
- Ovlivňuje příznaky
- žádné
- Výjimky v privilegovaném módu
- Je-li delitel roven 0 nebo je-li zbytek príliš velký pro umístení do požadovaného registru (AX nebo AL), je generováno přerušení INT 0. Jestlize obsahuji DS, CS či ES neplatné efektivní adresy operandu, je generována všeobecná výjimka privilegovaného módu. Jestliže SS obsahuje neplatnou adresu, je generována výjimka "chyba zásobniku".
- Výjimky v reálnem módu
- Je-li delitel 0 nebo je kvocient príliš velký a nevejde se do místa určení (AL nebo AX), je generováno přerušení INT 0. Jestliže je slovní operand na offsetu OFFFFH, je generováno přerušení INT 13.
- Poznámka pro 80386
- Velikost slova je 32 bitu. Delení ve dvojité přesnosti je prováděno s delitelem v registrovém páru EDX:EAX. Delitel je 32-bitová hodnota umístěna v registru/pameti. 32-bitový podíl (kvocient) je v EAX a 32-bitový zbytek v EDX.
- Příklad
Delení slova bytem:
MOV AX, NUMER_WRD IDIV DIVSR_BTE
Delení slova slovem:
MOV AX, NUMER_WORD CWD ;Konverze slova na dvouslovo IDIV DIVSR_WRD
Delení dvouslova slovem:
MOV DX, NUMER_MSW MOV AX, NUMER_LSW IDIV DIVSR_WRD
Delení u 80386:
MOV EDX, MSB_NUMBER MOV EAX, LSB_NUMBER IDIV DIVISOR