assembly 80-80 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
assembly 80-80 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Haziran 2010 Cuma

assembly 80-80 Branch ve jump kullanımı

branch'in kelime anlamı dallanmak demektir,branchde  bir durumun kontrolü yapılır,ona  dallanma olur.
assemby 80-80de 2 tane  branch komutu vardır:

BRN:branch on negative (negatife dallan) demektir,sayının negatif  olup olmadığını kontrol eder,sayı negatif ise sonraki satırı atlayıp onun altındaki satırdan devam eder,negatif değilse de normal sırada devam eder.

BRZ:branch on zero (sıfıra dallan) demektir,sayının 0 olup olmadığını kontrol eder,0 ise alttaki satırı atlar,devam eder;0  değilse de normal sırayı takip eder.

jump'ın  kelime  anlamı atla,zıpla demektir,jump komutu  geldiği zaman  kod akışı  jump edilen adresten devam eder.

örnek bir  kodu inceleyelim:
bir sayının mutlak değerini bulan assembly kodu yazınız,sayı  20 hex adresindedir,mutlak değeri de  20 hex değerine yazınız,r2 ile  point ediliyor.

1         LDI       r5,7            ;jump yapabileceği adresin değerini  r5 registerında tutuyorum

2         LD        r1,r2            ;mutlak değeri alınacak sayıyı r2den r1  registeriına  atıyorum  
        
3        BRN       r1                ;sayının  negatif olup olmadığına  bakıyorum

4          JMP  r5                 ;negatif değilse  birşey yapmaya gerek yok,7. satırdaki komutu işle,yani çıkış

5         NOT  r1,r1           ;negatifse  tersini  al,pozitif yap

6         ST    r2,r1             ;tersini aldığın sayıyı  yerine  yükle

7         Halt                      ;bitir



DERYA GÜNDÜZ

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
 
Facebook

Bizi takip edin!

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