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.1: CMP Komutu (Karşılaştırma)

Nedir?

CMP komutu iki sayıyı karşılaştırır. Sonucu kaydetmez, sadece bayrakları ayarlar.

Sözdizimi

cmp A, B
; A - B işlemini yapıp bayrakları ayarla (sonuç kaydedilmez)

Bayraklar (Flags)

Bayrak Anlamı Ne Zaman 1 olur
ZF Zero Flag A == B
SF Sign Flag A - B < 0 (negatif)
CF Carry Flag A < B (işaretsiz)
OF Overflow Flag İşaret taşması

Şartlı Atlamalar (Conditional Jumps)

CMP'den sonra bu komutlar kullanılır:

cmp rax, rbx
je label          ; Jump if Equal (A == B)
jne label         ; Jump if Not Equal (A != B)
jg label          ; Jump if Greater (A > B)
jl label          ; Jump if Less (A < B)
jge label         ; Jump if Greater or Equal (A >= B)
jle label         ; Jump if Less or Equal (A <= B)

Örnekler

1. Eşitlik Kontrolü

cmp rcx, rdx
je numbers_equal      ; RCX == RDX ise atla
; RCX != RDX ise burası çalışır
jmp end
numbers_equal:
; RCX == RDX ise burası çalışır
end:

2. Büyüklük Kontrolü

cmp rax, 100
jg greater_than_100   ; RAX > 100 ise atla
; RAX <= 100 ise burası çalışır
jmp end
greater_than_100:
; RAX > 100 ise burası çalışır
end:

Dosyalar

  • example_01.asm - CMP ve karşılaştırma fonksiyonları

C# Karşılığı

// Assembly'de:
// cmp rax, 100
// jg greater_than

// C#'da:
if (rax > 100) {
    // ...
}

Pratik

  1. İki sayıyı karşılaştır
  2. Sonuç döndür (1, 0, -1)
  3. if/else yapı kur