Koşullu atlamalar, belirli bir koşul sağlanırsa koda atlarlar. If/Else yapısı oluştururlar.
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:| 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 |
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:cmp rcx, 0 ; RCX >= 0 mi?
jge positive
; Negatif ise:
neg rcx ; RCX = -RCX
positive:
mov rax, rcx ; RAX = |RCX|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:example_01.asm- if/else örnekleri
// 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
}- Maximum bulma
- Minimum bulma
- Mutlak değer
- Sayıyı sınıflandır (pozitif/negatif/sıfır)