8085 Assembly Programlama Dili Temel Örnekler

Batuhan Düzgün tarafından yayınlanmıştır 27. July 2010 00:16
 
Merhaba  arkadaşlar  daha öncekimakalelerimizde  8085  mikroişlemcisinin   mimari  yapısı  hakkında  bilgiler edindik.  Artık  8085 assembly’i  tanıma  zamanı geldi.Bu makalelerde  mimariden  ziyade   8085  ile  program  yazmayı   ve  komutları   tanıyacağız.Tabi   komutlarımızı   yazabilmek  için   bir simülatöre   ihtiyacımız olacaktır.İşte bu noktada  imdadımıza   codeplex  yetişiyor.Aşağıda  verilen linkte  Java  diliyle yazılmış   bir ücretsiz  ve açık kaynak  kodlu  simülatör  bulunmaktadır.
Bu   simülatörle  ilgili  her  türlü  dökümanı ve  .jar uzantılı  çalıştırılabilir   halini,dökümantasyonunu    ve  açık kaynak kodlarını   indirebilirsiniz.Şimdi .jar  uzantılı  dosyaya   tıkladığınızda  aşağıdaki ekran görüntüsünü  görebilirsiniz. 
 
http://8085simulator.codeplex.com/releases/view/33943
 
 
 

Şimdi  ilk 8085 assembly  uygulamamızı  indirdiğimiz simülatörde  yazalım   ve  açıklamalarıyla  beraber   sizlere sunalım.

Yazacağımız  program  aslında   yüksek   seviyeli   programlama  dillerinde  çok basit  bir işlem.Bir   değişkenin   değerini   bir başka   değişkene  kopyalamayı  yapacağız.

C   Kodu :

int   a=5;

int  b=5;

int  c=a+b;  işlemini gerçekleştireceğiz.Aslında bakıldığında   basit bir işlem gibi  gözüküyor değimli J

İlk  olarak  şunu söylemekte fayda   assembly dillerinin  çoğunda   MOV komutu  bir veriyi  bir yerden   başka bir yere   kopyalamayı   sağlar.

 Şimdi   kodumuzu   yazmaya  başlayalım.


Yukarıdaki  resmi  incelersek kod  kısmında  Assembler kısmında  kodlarımızı  yazdık.Şimdi bu komutları  açıklayalım.

LDA  komutu  işaret  edilen  bellek  gözündeki   veriyi  Akümülatöre kopyalar. LDA   C050 , komutunda  C050adresindeki  veriyi akümülatöre  alacağız, bu işlem  sonucunda akümülatörde  11 değeri   bulunur.Dikkat  edersek  C050  adresindeki bellek   gözünde  11 yazıyor.Yapılan işlemleri   daharahat  takip  için  step by step   butonuna   tıklayınız.Adım adım   programda neler olup   bitiyor   görebilirsiniz.

MOV  C,A komutu  ise   akümülatördeki   11 verisini  C  adlı  kaydediciye   kopyalama   işlevini  gerçekleştiriyor.Bu  satırdan  sonra   artık C kaydedicisinde   11 verisi  bulunmaktadır.

Eğer  ki   biz  MOV C,A yapmamış   olsaydık   ve  bir sonraki  komutta   LDA  işlemi yapsaydık   eski değerimizin  üzerine  yeni veriyi yazmış olacaktı.Yani  akümülatörde  22  verisi olacaktı   ve  11  verisi  yok olacaktı. Biz  MOV  C,A yaparak  bir  bakıma ilk  değeri  bir kıyıda   yedeklemiş  bulunuyoruz.Çünkü    ilk sayıyı  bir yerde tutmalıyız  ki   ikinci sayıyı    akümülatöre   yüklediğimizde    ilk değerin  üzerine   yazmasın.

Daha sonra   LDA komutuyla   yine   akümülatöre C051  bellek  gözündeki  veri  yüklenir  yani artık  akümülatörde   22 verisi  vardır.

Bu satırdan sonra  A=22  ve C=11  şeklinde bir  durum vardır.

ADD C  komutuyla  birlikte    Akümülatör  ile   Ckaydedicisindeki  veri  toplayıp yine  akümülatöre  atmaktadır.Yani sonuç olarak  11+22=33  yapıp   akümülatöre sonucu  atmaktadır.Akümülatörde  33  verisi bulunmaktadır.Bu kısımda  yaptığımız  işlem  a+b gibidir.

 

Artık akümülatördeki   veriyi  ilgili  bellek gözüne   kaydedebiliriz.Buişlemde  C kodu  karşılığı

 int c=a+b ;  STA  komutu ile  akümülatördeki  veriyi C052 adresine  kopyalayacağız  yani aslında  a+b  işleminin sonucu   akümülatördeydi,biz  C/C++ veya  herhangi bir dille  “=” ifadesiyle  sağdaki  değeri soldaki  değişkene   yani bellek  gözüne   atamayı  arka  planda  STA komutuyla   yapıyoruz.

Ve  son olarak   programın  bitiğini  anlamak  için HLT  komutunu  yazıyoruz.Bu komut programınsonlandığını   anlatır.

Kodların  tamşekli  aşağıdaki  gibidir.

LDA  C050

MOV  C,A

LDA  C051

ADD C

STA  C052

HLT

Evet  bu makalemizdeiki  sayıyı  toplayıp bir  bellek  gözüne yazmayı  gördük.Başlangıç  için olabildiğince   basit  bir işlemi  anlatmaya  çalıştım umarım  yararlı  ve zevkle okuyacağınız bir   makale  olmuştur.Bir sonraki  makalemde  görüşmek dileğiyle…

Batuhan Düzgün

Sakarya Üniversitesi

BilgisayarMühendisliği 

Currently rated 4.0 by 7 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

<<  November 2018  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Yazıları geniş takvimde göster