Döngü içinde döngü. Dış döngü bir kez dönüne kadar iç döngü tamamen çalışır.
mov r8, 0 ; Dış döngü sayacı (i)
outer_loop:
cmp r8, 3 ; i < 3 mu?
jge outer_done
mov r9, 0 ; İç döngü sayacı (j)
inner_loop:
cmp r9, 3 ; j < 3 mu?
jge inner_done
; --- İŞLEMLER (i, j kullanarak) ---
inc r9 ; j++
jmp inner_loop
inner_done:
inc r8 ; i++
jmp outer_loop
outer_done:i=0, j=0 ✓
i=0, j=1 ✓
i=0, j=2 ✓
i=1, j=0 ✓
i=1, j=1 ✓
i=1, j=2 ✓
i=2, j=0 ✓
i=2, j=1 ✓
i=2, j=2 ✓
; 1*1 = 1, 1*2 = 2, ..., 9*9 = 81 toplamı
xor rax, rax ; Toplam = 0
mov r8, 1 ; i = 1
outer:
cmp r8, 9 ; i <= 9 mu?
jg outer_done
mov r9, 1 ; j = 1
inner:
cmp r9, 9 ; j <= 9 mu?
jg inner_done
mov r10, r8 ; r10 = i
imul r10, r9 ; r10 = i * j
add rax, r10 ; toplam += i*j
inc r9 ; j++
jmp inner
inner_done:
inc r8 ; i++
jmp outer
outer_done:
; RAX = 1+2+...+81 = 285285; 3x3 matris:
; 1 2 3
; 4 5 6
; 7 8 9
; Toplam = 45
xor rax, rax ; Toplam
mov r8, 0 ; i = 0
row_loop:
cmp r8, 3 ; i < 3 mu?
jge row_done
mov r9, 0 ; j = 0
col_loop:
cmp r9, 3 ; j < 3 mu?
jge col_done
; matris[i][j] oku
mov r10, r8
imul r10, 3 ; r10 = i * 3
add r10, r9 ; r10 = i*3 + j
; matris başlangıç adresi rdx ise:
; mov r11, [rdx + r10]
; add rax, r11
inc r9 ; j++
jmp col_loop
col_done:
inc r8 ; i++
jmp row_loop
row_done:
; RAX = matris toplamıexample_01.asm- İçiçe döngü örnekleri
// Assembly'de nested loop:
// mov r8, 0
// outer:
// cmp r8, 3
// jge outer_done
// mov r9, 0
// inner:
// cmp r9, 3
// jge inner_done
// ... (r8 ve r9 kullanma)
// inc r9
// jmp inner
// inner_done:
// inc r8
// jmp outer
// outer_done:
// C#'da:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
// ...
}
}- Çarpım tablosu (1-10)
- Matriks topla
- İki boyutlu dizi üzerinde işlem
- Kombinasyon hesapla (nCk)