3 Haziran 2010 Perşembe

assembly 80-80

digital system dersinin sonlarına  doğru simple  computer dahilinde assembly 80-80  gördük,daha  önce  öğrenmiş olduğum pic  16f877a  den bayağı  bir farklı geldi.
Assembly 80-80 assembly diline  griş  şeklinde,eksikleri  fazla olan ve günümüzde  yetersiz kalan bir dil,16f877a  ile komutları ve adreslerin hafızalanması  da  farklı.
assembly  80-80de verilerle ilgili işelmler nasıl yapılır?
adressleri  bir  pointer işret  ediyor  ve  adresler üzerinde  işlem yapılamıyor,işlem yapılmak istendiğinde  onu  registerlara taşıyıp  o şekilde işlem yapmak gerekiyor,hangi adresteki bilgiyi taşıyıp onun üzerinde  işlem yapmak istiyorsak  pointerı da  oraya getirip onun yardımıyla taşıma  yapabiliyoruz.

şimdi basit  bir  toplama-çıkarma  işlemini inceleyelim:
memoryde 248hex adresinde "2" verisi,249hex  adreside "153"  verisi  yazılıyor olsun,bizden istenen işelem:
 153+2-5  ve sonucu  250 hex memory alnına yazmamızı istiyor.248 hex adresini de r3   point ediyor(r3=248)
LD     r1,r3                      ;r3 ün içindeki 2 yi r1  registerına  taşıyorum

 LDI      r2,5                      ;r2  registerının  içine  5 i  atıyorum 

 SUB    r1 ,r1,r2                  ;2-5  işlemini gerçekleştiriyorum  
                          
INC     r3,r3                       ;r3 pointerını 249 adresine  getiriyorum

LD      r4,r3                       ;r3ün içindeki  153 verisini alıp r4 reg  atıyorum

ADD    r1,r1,r4                      ;-3+153      işlemini gerçekleştiriyorum

INC      r3,r3                         ;sonucu yazmak için  pointerı 250ye getirdim

ST     r3,r1                            ;sonucu registerdan adrese atıyorum,store  komutu ile

                
DERYA GÜNDÜZ

Hiç yorum yok:

 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri