Otevřít hlavní menu

Změny

DIV - delení bez uvažování znaménka (unsigned division)

Přidáno 2 152 bajtů, 9. 11. 2012, 17:24
bez shrnutí editace
;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]]