8085 Assembly ile Dizideki En Büyük Elemanı Bulmak

Batuhan Düzgün tarafından yayınlanmıştır 20. August 2010 00:54

Merhaba arkadaşlar bu yazımda sizlere 8085 mikroişlemci assembly diliyle,belli bir bellek aralığındaki yani bir dizideki en büyük elemanı bulmayı anlatacağım.İlk önce bu sorumuzun algoritmasını çıkaralım.Öncelikle bilgisayara kıyaslama yapması için bir değeri geçici bir yerde tutacağız.Yani dizimizin ilk elemanını en büyük elemanmış gibi düşünüp,geçici bir değişkene alacağız.Ardından bir sonraki elemanı alıp geçici değişkende bulunan değer ile kıyaslayacağız.Eğer ki ,büyükse geçici değişkende tuttuğumuz değişkenin içindeki değeri değiştireceğiz.Bu işlemi bir döngü içinde tekrarlayacağız.Tabi döngüyü döndürürken,dizi sınırını kontrol edeceğiz.
 
Dizimizin elemanlarını C060 adresinden itibaren yazmaya başlayacağız.
 
Similatörü çalıştırmak ... 
 
Similatörün kod kısmına kodlarımızı yazıyoruz.Bu ilk öncelikli işlemimiz.Ardından "Assemble" butonuna basıyoruz.Ve aşağıdaki yeşil pencerede kodlarımızın tamamının doğru olup olmadığına göz atıyoruz.Eğer her kod satırının kenarında tik(check) işareti varsa.O satır doğru anlamına gelmektedir. Ardından verilerimizi belleğe gireceğiz.Bunun için pembe renkli olan bellek haritamıza geliyoruz.İlgili hücreye çift tıklıyoruz ve değeri giriyoruz.Biz dizimizi C060 adresinden itibaren sırayla giriyoruz.
Ardından "Step by Step"  komutuyla adım adım programı işletiyoruz.
 
Evet,8085 simülatörümüzü açıyoruz.Aşağıdaki kodlarımızı yazıyoruz.
 
LXI H,C060 ;kaynak dizinin başlangıç adresi
MOV A,M ;H-L çiftinin gösterdiği bellek adresindeki veriyi akümülatöre alıyoruz.
MOV B,A;akümülatördeki veriyi B kaydedicisine yedekliyoruz.

dongu:
INX H ;INX yaparak H-L çiftini bir arttırıyoruz.
MOV A,M ;bir sonraki değeri akümülatöre alıyoruz.
CMP B ;Akümülatör ile B kaydedicisini kaydediyoruz.
JNC degistir ;eğer elde bayrağı set edilmemişse demekki akümülatördeki değer
; B kaydedicisininkinden büyüktür.CMP komutu A-B yapar.
JMP kontrol;eğer elde bayrağı sıfır değilse kontrol etiketine dallan.

degistir:

MOV A,M;akümülatör içine H-L çiftinin gösterdiği değeri alıyoruz.
MOV B,A ;B kaydedicisine Akümülatördeki değeri kopyalıyoruz.

kontrol:

MOV A,L;kontrol için L kaydedicisindeki değeri akümülatöre alıyoruz
CPI 6A ;6A değeri ile Akümülatör içindeki değeri kıyaslıyoruz.
JNZ dongu ; eğer sonuçta sıfır bayrağı set edilmemişse donguye devam ediyoruz.
;aksi durumda donguden çıkacak ve MOV A,B komutu ile B kaydedicisindeki değeri
;akümülatöre alıyoruz.Ardından STA komutuyla C090 bellek adresine yazıyoruz. 
MOV A,B
STA C090
HLT ;HLT komutuyla programı sonlandırıyoruz. 
 
Programımızı simülatörde "Step by Step" butonuyla adım adım işletiyoruz.Ve sonuç aşağıdaki gibi olmalı. 
 
 
 
Evet,bir yazımın daha sonuna gelmiş bulunuyorum.Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği 

Currently rated 4.0 by 5 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

8085 Assembly Dili

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster