Ö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.

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

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ı