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:
Yorum Gönder