8085 ile ilgili makalelerimize kaldığımız yerden hızla devam ediyoruz.Bu defaki yazımda sizlere bir dizideki elemanların toplamını bulmak olacak.Şimdi algoritmayla ilgilenmiş az çok programlama bilen herkes için gayet basit işlemdir,dizi elemanlarını toplama işlemi basit bir döngüyle herşey halledilir. Şimdi her zamanki gibi yine işin algoritmasını,çözümünü arayacağız.İlk önce bilgisayarda toplama işlemi gibi bir soruyu programlarken,başlangıçta sıfıra eşitlenmiş bir değişkenle dizi elemanları döngü içinde sürekli toplanarak toplanır.Şimdi, düşündüğümüz çözümün akış diyagramına bakalım.

Şimdi kodu yazmadan önce bir kaç şeyi kafamızda belirleyelim.Öncelikle toplam değerini tutacak olan kaydedicimiz B olacak,bunun yanı sıra dizideki her elemanı MOV A,M komutuyla akümülatöre alıp, B kaydedisiyle toplayacağız.Daha sonra her toplam işleminden sonra akümülatördeki toplam değerini B kaydedicisine tekrar kopyalacağız.Şimdi kodumuz aşağıdaki gibidir.Açıklamalar ile birlikte verilmiştir.
LXI H,C060 ; dizinin başlangıç adresini H-L çiftine yüklüyoruz
MVI B,00 ; B kaydedicisine 00 değerini atıyoruz.Toplam değerini bu kaydedici tutacak
dongu: ; toplama işlemini yaptığımız dongu her JNZ işleminden sonra bu etikete dallanacak
MOV A,M ; dizi elemanlarını akümülatöre yüklemeye yarayan kod
ADD B ; B kaydedicisi ile akümülatörü topluyoruz.
MOV B,A ; yeni toplam değerini B kaydedicisine kopyalıyoruz.
INX H ; bir sonraki dizi elemanını almak için H-L çiftini arttırıyoruz.
MOV A,L ; daha sonra kontrol için L kaydedicisindeki değeri akümülatöre alıyoruz.
CPI 6A ; akümülatör ile 6A verisini kıyaslıyoruz.sıfıra eşit değilse başa donuyoruz
JNZ dongu
MOV A,B ; B kaydedicisndeki değeri akümülatöre alıyoruz.
STA C070 ; STA komutu ile C070 adresine kaydediyoruz
HLT ; programı sonlandırıyoruz.
Progamımız kısaca döngü içinde ilerleyip dizideki bütün elemanları toplayıp sonucu C070 adresine yazıyor.Sonuçlar aşağıdaki gibidir.

Yazdığımız assembly kodlarının opcodeları aşağıdaki gibidir.
√
|
C000
|
|
LXI H,C060
|
21
|
3
|
3
|
10
|
|
C001
|
|
|
60
|
|
|
|
|
C002
|
|
|
C0
|
|
|
|
√
|
C003
|
|
MVI B,00
|
06
|
2
|
2
|
7
|
|
C004
|
|
|
00
|
|
|
|
√
|
C005
|
DONGU
|
MOV A,M
|
7E
|
1
|
2
|
7
|
√
|
C006
|
|
ADD B
|
80
|
1
|
1
|
4
|
√
|
C007
|
|
MOV B,A
|
47
|
1
|
1
|
4
|
√
|
C008
|
|
INX H
|
23
|
1
|
1
|
6
|
√
|
C009
|
|
MOV A,L
|
7D
|
1
|
1
|
4
|
√
|
C00A
|
|
CPI 6A
|
FE
|
2
|
2
|
7
|
|
C00B
|
|
|
6A
|
|
|
|
√
|
C00C
|
|
JNZ DONGU
|
C2
|
3
|
3
|
10
|
|
C00D
|
|
|
05
|
|
|
|
|
C00E
|
|
|
C0
|
|
|
|
√
|
C00F
|
|
MOV A,B
|
78
|
1
|
1
|
4
|
√
|
C010
|
|
STA C070
|
32
|
3
|
4
|
13
|
|
C011
|
|
|
70
|
|
|
|
|
C012
|
|
|
C0
|
|
|
|
√
|
C013
|
|
HLT
|
76
|
1
|
2
|
7
|
8085 assembly dilinde toplama işlemine dair anlatacaklarım bunalardan
ibaret. Umarım zevkle okuyacağınız bir makale olmuştur.Bir sonraki
makalemde görüşmek dileğiyle ...
Batuhan Düzgün
Sakarya Üniversitesi
Bilgisayar Mühendisliği