DIV - delení bez uvažování znaménka (unsigned division)
Verze z 9. 11. 2012, 21:18, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Assembler pismeno D)
- Instrukce
- DIV - delení bez uvažování znaménka (unsigned division)
- Časování
- 14-25 (80286), 14-41 (80386)
- Popis
- Instrukce DIV provádí delení operandu. Je-li specifikován zdrojový operand o velikosti byte, je registr AX dělen tímto bytovým operandem a výsledek je uchován v AL (kvocient) a v AH (zbytek). Je-li specifikován zdrojový operand o velikosti slova, je delen DX:AX slovem. Nejvýznamnejších 16 bitu zdrojového delence je uloženo v DX, kvocient v AX a zbytek v DX.
- Syntaxe
- DIV source
- Ovlivňuje příznaky
- žádné
- Výjimky v privilegovaném módu
- Je-li delitel roven nule nebo je výsledek delení – kvocient - příliš velký a nevejde se do místa určení (AL nebo AX), je generováno přerušení INT 0. Jestliže obsahují DS, CS či ES neplatné efektívní adresy operandů, 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 příliš velký a nevejde se do místa určení (AL nebo AX), je generováno přerušení INT 0. Jestlize je slovní operand na offsetu OFFFFH, je generováno přerušení INT 13. Dělení ve dvojité přesnosti je možné se 64-bitovým dělencem v EDX:EAX, 32-bitový dělitel je v paměti nebo v registru, 32-bitový kvocient v EAX a 32-bitový zbytek je v EDX.
- Příklad
Dělení bytu jiným bytem:
MOV AL, NUMER_BTE DIV DIVSR_BTE ;Kvocient v AL, zbytek v AH
Dělení slova bytem:
MOV AX, NUMER_WRD DIV DIVSR_BTE ;Kvocient v AL, zbytek v AH
Dělení dvouslova slovem:
MOV DX, NUMER_MSW MOV AX, NUMER_LSW DIV DIVSR_WRD ;Kvocient v AX,zbytek v DX
Dělení u 80386:
MOV EDX, MSB_NUMBER MOV EAX, LSB_NUMBER DIV ECX ;Kvocient v EAX, zbytek v EDX