EMU8086 Dizideki Bir Sayının Adedini Bulmak

EMU8086 da dizideki herhangi bir sayının kaç adet olduğunu bulan programı yazacağız. Bunun için data segmentte bir dizi tanımlıyoruz.  Ben dizideki 2 sayısından kaç tane olduğunu bulan bir program yazacağım.


.model small
.stack 64
.data
dizi db 2,1,3,2,4,7,2

Şimdide code kısmına geçelim. Gerekli tanımlamaları yapalım.


.model small
.stack 64
.data
dizi db 2,1,3,2,4,7,2
.code
mov ax,@data
mov ds,ax
mov cx,7
lea si,dizi
mov bl,0

İlk iki kod satırını programı çalıştırdıktan sonra sonucu memory kısmında 0714:0000 adresinde görmek için yazdık. Daha sonra 7 sayımız olduğu için döngü değişkeni olan cx’e 7 verdik. Dizinin başlangıç adresini Si’ye atadık. Kaç adet olduğunu saydırmak için bl’yi kullanacağız. Bunun için bl’yi sıfırladık. Şimdi döngümüzü yazalım.


.model small
.stack 64
.data
dizi db 2,1,3,2,4,7,2
.code
mov ax,@data
mov ds,ax
mov cx,7
lea si,dizi
mov bl,0
dongu: cmp [si],2
jz git
jmp gec

git:inc bl
gec:inc si
loop dongu

mov ah,4ch
int 21h
end

Cmp komutu sağdaki operanddan soldaki operandı çıkarır. Alttaki jz komutu sonuç 0 sa işlem yap anlamına gelir. Eğer sonuç 0‘sa  git etiketine gider ve inc bl komutuyla bl 1 arttırılır. Değilse jmp komutuyla şartsız gec etiketine gider. Si’yi 1 arttırır ve loop dongu komutuyla dongu etiketine gider. 7 kez döngü döndükten sonra program sonlanır.

Dizide toplamda 3 tane iki olduğu için Bl’nin son hali aşağıdaki gibi olur.

Furkan Aktaş

Bilgisayar Mühendisiyim. Microsoft MCSA Web Applications Sertifikasına Sahibim. Aktif iş hayatımda Full Stack .Net Developer olarak çalışmaktayım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir