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.