EMU8086 Dizide Eleman Arama

EMU8086 da Dizide herhangi bir elemanı arayıp, varsa bulan programı yazacağız. Öncelikle data segmentte dizimizi ve elemanları oluşturalım.

.model small 
.stack 64 
.data 
Dizi db 1,3,2,5,4 

Code kısmına geçip tanımlamaları yapalım. Dizimizin başlangıç adresini si’ye atıyoruz. Dizide 5 sayı olduğu için cx’e 5 veriyoruz. Daha sonra aramak istediğimiz sayıyı al’ye atıyoruz. Son olarak bx değerini sıfırlıyoruz. Bunu yapmamızdaki amaç; eğer aranan sayı bulunursa bx’e herhangi bir sayı yükleyeceğiz. Ve sayının dizide olduğunu anlamış olacağız.


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

.code
Mov ax,@data
Mov ds,ax
Lea si, dizi
Mov al,02
Mov bx,00
Mov cx,5

Code içindeki ilk iki satırı çıktının 0714:0000 adresinde gözükmesi için yazdık. Son olarak döngümüzü yazarak kodumuzu bitirelim.


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

.code
Mov ax,@data
Mov ds,ax
Lea si, dizi
Mov al,02
Mov bx,00
Mov cx,5

Ara: cmp al,[si]
jz bulundu
inc si
Loop ara
Jmp cik

bulundu: Mov bx,1111h
cik: 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 bulundu etiketine gider ve bx’e 1111h sayısını yükler. Eğer sonuç 0 değilse inc komutuyla si bir arttırılır. Loop ara  komutuyla ara etiketine çıkılır. Döngü bittikten sonra jmp komutuyla sorgusuz cik etiketine gider. Ve program sonlandırılır.

Dizimizde aradağımız değer olduğu için çıktıda bx 1111 oldu.

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