Assembly – Aritmetik Islemler ADD,SUB

Öncelikle, eğer okumadıysanız bir önceki konu olan Assembly – Registers ADR,LDR,DCD Kullanımı ‘nı okumanızı tavsiye ederim.
Tüm konulara ise Assembly Kodlama linkinden ulaşabilirsiniz.

ADD,SUB Nedir ve Formatları Nelerdir?

  • ADD –> ADD, adı üstünde olan bir instruction’dır. ADD 2 adet sayının toplanıp bir register’a atılmasını gerçekleştirir.
  • SUB –> Subtraction‘dan gelir. Birinci sayıdan 2.sayıyı çıkartıp register’a atar. Add ve Sub’ın formatları aşağıdaki gibi olup, aynıdır.

ADD r1, r2, r3
r1 = r2 + r3
SUB r1, r2, r3
r1 = r2 – r3

Eğer biz bir consant sayı çıkarmak veya toplamak istiyorsak ” # ” simgesini kullanırız.

ADD r1, r2, #4
r1 = r2 + 4


Not: Assembly dilinde Büyük Küçük ayrımı yoktur istediğiniz gibi yazabilirsiniz.ADD’nın büyük olması anlaşılması içindir.

Şimdi ADD ve SUB‘ı bir örnekle açıklayalım. Bu örnekte ilk olarak 3 ve 2 adreslerini r0 ve r2‘e daha sonra ise adresin gösterdiği değeri [] ile r1 ve r3‘e atıyoruz. Daha sonra r1 den r3‘ü çıkartıyor ve sonucu 4 ile topluyoruz.

 aa		DCD		3 ;aa = 3
 bb		DCD		2 ;bb = 2
		
		ADR		r0,aa ;r0 = aa'nın adresi
		LDR		r1,[r0] ;r1 = 3 yani adresin gösterdiği değer
		
		ADR		r2,bb ;r2 = bb'nin adresi
		LDR		r3,[r2] ;r3 = 2 yani adresin gösterdiği değer
		
		SUB		r4,r1,r3 ;r4 = r1 - r3 sonucu 1
		ADD		r5,r4,#5 ;r5 = r4 + 5 yani r5 = 1+5

Birde bu kodu Execute ettikten sonraki register durumlarına bakalım.Görüldüğü üzere R0 ve R2 adres değerlerini gösteriyor.

VisUAL Register Bölümü

SUBS ve ADDS Nedir?

Bu konu ileride daha detaylı anlatılacak olup, şimdi konunun bütünlüğü açısından giriş yapacağız.
S eki SetFlag‘dan gelir. Assembly’de bütün mantıksal işlemler yani if-else gibi işlemler Assembly’nin Flag bölümü sayesinde gerçekleşir. Flags’ın diğer kullanılan ismi Status Bits‘dir

Negative Flag ve Zero Flag

Assembly’de genelde Negative Flag ( sayı negatif’mi? ) ve Zero Flag ( sayı 0’mı ) kullanılır ve koşullara göre 1 yanar.

  • SUBS –> Eğer çıkarma işleminin sonucu 0 ise Z-Flag 1 yanıcaktır. Eğer negatif ise N-Flag 1 yanacaktır.
  • ADDS –> Toplama işleminin sonucu 0 ise (örn: 3+(-3)) Z-Flag 1 yanacaktır. Eğer negatif ise N-Flag 1 yanacaktır.

Peki Bu Ne İşe Yarar?


Assembly dilinde eğer Zero Flag 1 ise üstekki koşul sağlanmış demektir. Mesela biz bir alt satırda eşit ise topla gibi bir komut kullanmış olsaydık Zero Flag 1 olduğundan dolayı sayılar toplanacaktı. Eğer tam olarak anlamadıysanız sorun değil çünkü bunun örneği Assembly – Mantıksal İşlemler – ADDEQ, SUBGT konusunda verilecektir ama önce daha basit ve farklı olan atama yollarını  bir sonraki konuda öğrenmeliyiz.

Konunun sonuna gelmiş bulunuyoruz eğer herhangi bir sorunuz varsa Hakkımda bölümünden veya aşağıya cevap yazarak bana ulaşabilirsiniz.


Bir Sonraki Konu : –>
Assembly – Mantıksal İşlemler – ADDEQ, SUBGT

Bir Önceki Konu:  <–
Assembly – Registers ADR,LDR,DCD Kullanımı

Yer işareti koy Kalıcı Bağlantı.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir