8085 Mikroişlemcisi Komutların Sınıflandırılması ve Opcode Oluşturulması

Batuhan Düzgün tarafından yayınlanmıştır 25. July 2010 23:57

Bu makalemde 8085 mikroişlemci komut setini tanıtacağım.Öncelikle,8085  mikroişlemci  komut   seti,  74 farklı  işlemi  gerçekleştiren  246  komuttan oluşur. Ayrıca komutlar yapılan  işlemler  göz önüne  alınarak  sınıflandırılırsa  5  adettir.

1-)Veri  transferi/aktarımı  komutları

2-)Aritmetik   işlemler ile   ilgili komutlar

3-)Mantık  işlemleri ile  ilgili  komutlar

4-)Program  akışı kontrol  komutları

5-)Mikroişlemci  kontrol komutları

8085  mikroişlemcisinde   veri  yolu  8 bit,  adres  yolu  ise 16  bittir. 8085  mikroişlemci   komut setinde   komutlar bayt  uzunluğuna  göre  3’e  ayrılır.

1-)1-bayt  uzunluklu komutlar,

2-)2-bayt  uzunluklu komutlar,

3-)3-bayt  uzunluklu komutlar

 

1-bayt UzunlukluKomutlara Örnek

MOV A,C  // görüldüğü üzere  burada  komut hafıza   sadece  1 bayt  yer kaplar.  A ve C birer kaydedici  olduğu için  ayrıca hafıza alanı  kullanmaz.

ADD  B // buradaki topla komutuda 1 bayt uzunluklu  yer  kaplar.

Not: Kaydediciler arası işlemlerin  yapıldığı  komutlar  genelde  1  bayt uzunluğundadır.

2-bayt UzunlukluKomutlara Örnek

MVI   A,50h //Bu  komutta  görüldüğü üzere  2 bayt yer  tutmaktadır. Çünkü  MVI komutunun  1 baytlık  kendi özel kodu belleğe  yerleştirilir,  bunun yanında ayrıca  50h   veriside   belleğe  yerleştirilir. Toplamda  2 bayt kullanılmış  olur . Bu  sebeple  bu komuta   2 baytlık  komut denilmektedir.

3-bayt UzunlukluKomutlara Örnek

JMP  2025h // Bu  komut  bellekte 3 baytlık  alanı  doldurur. JMP komutu   için   1 baytlık bellek  alanı  kullanılır. Ayrıca  2025h  2  bayt  alanı kullanır,çünkü  2025h   2 bayt uzunluğundadır.

KomutlarınOpcodelarının Çıkarılması İşlemi

Kod

Kaydedici

000

B

001

C

010

D

011

E

100

H

101

L

111

A

110

Bellek işlemleri

Yukarıdaki  tabloda  da  her kaydedicinin   tek  başına makine  kodu  karşılığı yani  2’li  tabandaki karşılığı   verilmiştir. Biz  B kaydedicisini  kod yazarken kullanırsak  mikroişlemcinin  bunu işlerken anlayacağı   ikili   kod dizisi   000   olacaktır. Nasıl  ki  kaydedicilerin   ikili  kodlar karşılıkları  varsa  MOV,ADD,MVI  gibi  assembly  kodlarınında   makine  dilinde ikili kod   karşılıkları   vardır.Bu  ikili  kodların  çıkartılması  tamamen    mikroişlemciyi   mantıksal olarak   tasarlayan  tarafından  hazırlanmıştır.Örneğin  aklınıza   B kaydedicisi  neden  111  değerini almamışta  000 değerini  almış diye bir soru  gelirse   bunun kesin  ve net cevabı  tasarımı   yapan kişilerin  tasarrufu olduğu  bilinmelidir.Yani siz  bir mikroişlemci  tasarlarsanız  ,tasarımızda  B   kaydedicisi 000 değerini, MOV komutu   ise 70h  (0111 0000)   değerini alabilir,bu tamamen  sizin tasarımınıza   bağlı olan bir durumdur.Üniversite  2.  Sınıfta yaptığımız   bir ödevde biz  10  komutu   olan   8  bitlik bir   mikroişlemciyi   program üzerinde   tasarlamıştık.

Opcode Oluşturulmasıİşlemi

Opcode oluşturulması  işlemini  anlatırken MOV   komutunu  ele  alarak  inceleyeceğim.

MOV   C,A  komutunun   makine , yani ikili  tabandaki   karşılığını  bulacağız.

MOV   kodu  01 ‘ e  eşittir.Bu şu demek   oluyor  tek başına  MOV  komutunun makinanın  anlayacağı    ikili kod  karşılığı   01 oluyor  demektir. 

MOV      Hedef kaydedici    ,     Kaynak   kaydedici

MOV  komutunda    virgülün  sağında    kalan değer   solunda  gösterilen   yere kopyalanır.Çalışma  mantığı budur.

Hedef  kaydedici= C     

C  kaydedicisinin   makine   kodu karşılığı  ise  tabloyada  bakarsak,  001 ‘ dir.

Kaynak kaydedici=A

A’nın  yani  akümülatörün  ikili   kod  karşılığı  111  ‘ dir.

Şimdi  son işlem  olarak  bunları   birleştirirsek.

MOV          C       ,        A

01             001           111

İkili  bit  dizimiz şu  hale   gelir:   01001111  olur. Bunun 16’lık  tabandaki  karşılığı   4Fh  olur.

Görüldüğü  üzere   arkadaşlar  bilgisayarlar  her şeyi  kendi anlayacakları   ikili   bit  dizilerine  çevirerek  ve  bu  ikili bit dizileri  şeklinde    milyonlarca   diziyi  satır   satır  işleyerek   çalışırlar. Bizim  C#, Java veya C++  gibi yüksek   seviyede yazdığımız    komutlar   önce   assembly  diline  ordan   ise  ilgili  makine  kodu  karşılığına  çevrilerek,  işlenirler.Tabi  bu  C#   ve  Java ‘da biraz   farklı    bu dillerde   aradile  çevrilip   sonra   assembly diline çevrilme  işlemi  söz  konusudur. Ayrıca   yine  şunu da göz   önünde  bulundurmalıyız;  her mikroişlemcinin    mimarisi  ve komut   seti  birbirinden   farklı   olabilir, işte bu  nedenle  ortak   genel geçer bir assembly   dili yoktur.Mikroişlemcinin    tipinemimarisine  ve tasarımına  göre   assembly   komutlarıda,  assembly’lerin   grameride  ve opcodelarıda   birbirinden  farklılık  gösterebilir.Günümüz   kişisel  bilgisayarlarında   genel   olarak  x86  mikroişlemci  mimarisi  kullanılmaktadır.x86   8085  göre   daha   gelişmiş  bir  yapı  ve assembly içermektedir.Ayrıca   dipnot   olarak belirtmekte  fayda  var  8085  mikroişlemcisinde    çarpma  ve bölme  komutu   bulunmamaktadır.Çarpma  işlemi  toplama  ile ,  bölme  ise  çıkarmayla  yapılır.Unutmayalım  ki  her mikroişlemci  çeşidine  göre  farklı  bir assembly  ve mimari vardır.

Bu makalemizinde sonuna  gelmiş  bulunuyoruz.Özellikle  8085  mikroişlemci mimarisi  ile ilgili makalelerim biraz  sözel  ağırlıklı ve temel   bilgiler  ile geçiyor. Mimariyi  incelemeyi   bitirdiğimiz   zaman  8085  simülatörü aracılığıyla  8085   assembly   kodları yazacağız. Umarım  bilgi  edinebileceğiniz   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 3.9 by 16 people

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

Etiketler:

8085 Mikroişlemci Mimarisi

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