Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Bölüm 3.2: Koşullu Atlamalar (IF/ELSE)

Nedir?

Koşullu atlamalar, belirli bir koşul sağlanırsa koda atlarlar. If/Else yapısı oluştururlar.

Genel Yapı

cmp rax, rbx          ; Karşılaştır
je equal_label        ; Eşit ise atla
; Eşit DEĞİL ise:
mov rax, 0
jmp end_label
equal_label:
; Eşit İSE:
mov rax, 1
end_label:

Atlamaların Listesi

Komut Anlamı Koşul
je Jump if Equal A == B
jne Jump if Not Equal A != B
jg Jump if Greater A > B
jl Jump if Less A < B
jge Jump if Greater or Equal A >= B
jle Jump if Less or Equal A <= B
ja Jump if Above (unsigned) A > B (işaretsiz)
jb Jump if Below (unsigned) A < B (işaretsiz)
jmp Jump (koşulsuz) Her zaman

Örnekler

1. İki Sayıdan Büyüğünü Bul (MAX)

cmp rcx, rdx          ; RCX > RDX mi?
jge is_greater        ; Evet ise
mov rax, rdx          ; Hayır: RAX = RDX
jmp done
is_greater:
mov rax, rcx          ; Evet: RAX = RCX
done:

2. Mutlak Değer

cmp rcx, 0            ; RCX >= 0 mi?
jge positive
; Negatif ise:
neg rcx               ; RCX = -RCX
positive:
mov rax, rcx          ; RAX = |RCX|

3. Üç Yollu Karşılaştırma

cmp rcx, rdx
jg greater            ; RCX > RDX
jl less               ; RCX < RDX
; RCX == RDX
mov rax, 0
jmp done
greater:
mov rax, 1
jmp done
less:
mov rax, -1
done:

Dosyalar

  • example_01.asm - if/else örnekleri

C# Karşılığı

// Assembly'de if/else:
// cmp rax, rbx
// jle else_label
// ... (if kodu)
// jmp end_label
// else_label:
// ... (else kodu)
// end_label:

// C#'da:
if (rax > rbx) {
    // if kodu
} else {
    // else kodu
}

Pratik

  1. Maximum bulma
  2. Minimum bulma
  3. Mutlak değer
  4. Sayıyı sınıflandır (pozitif/negatif/sıfır)