IDIV komutu bir sayıyı başka bir sayıya böler. "I" harfi işaretli (signed) bölme anlamına gelir.
idiv bölen
; RAX = RDX:RAX / bölen (bölüm)
; RDX = RDX:RAX % bölen (kalan)IDIV'den önce CDQ komutu çalıştırılmalı! CDQ, RAX'i 128-bit'e genişletir.
mov rax, 100 ; Bölünen sayı
cdq ; RDX:RAX = 100'ü 128-bit'e genişlet
mov rcx, 5 ; Bölen sayı
idiv rcx ; RAX = 100 / 5 = 20, RDX = kalanmov rax, 20 ; 20 / 4 = 5
cdq
mov rcx, 4
idiv rcx ; RAX = 5, RDX = 0mov rax, 17 ; 17 / 5 = 3 kalan 2
cdq
mov rcx, 5
idiv rcx ; RAX = 3, RDX = 2- CF, OF, ZF, SF: Şunlar tanımlanmamıştır (belirsiz)
- Division by Zero Exception: Bölen 0 ise hata!
example_01.asm- IDIV komutu ve CDQ
// Assembly'de:
// mov rax, 17
// cdq
// mov rcx, 5
// idiv rcx ; rax = 3, rdx = 2
// C#'da:
long rax = 17 / 5; // rax = 3
long rdx = 17 % 5; // rdx = 2- Kalansız bölme yap
- Kalanlı bölme yap
- CDQ'nun ne yaptığını anla