Přidáno 2 152 bajtů,
9. 11. 2012, 17:24 ;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é
;Nedefinované příznaky
: [[SF]], [[AF]], [[OF]], [[PF]], [[CF]]
;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
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]