MİKRODENETLEYİCİ-5



MCS–51 AİLESİ MİKRODENETLEYİCİLERİN KOMUTLARI




            GİRİŞ

Mikroişlemciyi yaptırmak istediğimiz işlemleri onun anlayacağı dilden kurallarına göre bildirmemiz gerekir. Her mikroişlemcinin temel işlemleri gerçekleyen komut kümesi vardır. Bu komutları kurallarına göre birleştirdiğimizde program elde ederiz. MCS–51 ailesi işlemcilerin komut kümesi denetim uygulamalarına yönelik olarak düzenlenmiştir. Bu tür uygulamalarda 8 bit kelime uzunluğu olan komutların yanı sıra bir bitlik mantık işlemlerimi yapan komutlarda sıkça kullanılmaktadır. MİB içerisine yerleştirilen boolean işlemcisi sayesinde 8051 bir bitlik mantık işlemlerini yapabilmektedir. 8 bitlik komutların çoğu iç veri belleği ve özel amaçlı yazaçların bulunduğu alanda işlem yapar. Bunun yanı sıra program belleğinden veri okuyan ve dış veri belleğinden veri okuyan ve yazan komutlarda yer almaktadır. Bu tür  komutların op‐code (opkod)’ları 8 bittir. 8 bit uzunluğunda 28=256 adet komut yazılabilir. Bunlardan 255 tanesi kullanılmış bir tanesi ise tanımlanmamıştır. Bazı komutlar veri veya adres için ikinci, üçüncü bayta sahip olabilir. MCS–51 ailesi işlemcilerin komutlarından 139 tanesi bir bayt uzunluğunda iken 92 tanesi 2 bayt uzunluğunda ve 24 tanesi 3 bayt uzunluğundadır. Ek‐A’da tüm komutlar ve opkodları verilmiştir.


           ADRESLEME KİPLERİ

Mikroişlemciye istediğimiz işlemi belirtmek için kullandığımız komuta ek olarak işlemde kullanacağı verinin adresini belirtmemiz gerekir. Verinin bulunduğu belleğe göre adresin belirtme şekli farklıdır. Adres belirme şekillerine komut adresleme kipleri adı verilir. Adresleme kiplerini mikroişlemci dilinin dilbilgisi kuralları olarak tanımlayabiliriz. MCS–51 ailesinin adresleme kiplerini 8 grupta özetleyebiliriz.

 Doğrudan adresleme
 İvedi adresleme
 Yazaç adresleme
 Bağıl adresleme
 Dolaylı adresleme
 Sıralı adresleme
 Mutlak adresleme
 Uzun adresleme


             DOĞRUDAN ADRESLEME

Doğrudan adreslemede işlem yapılacak belleğin adresi komutla beraber yazılır. Bu adresleme kipi ile iç RAM bölgesinde alt 128 ve SFR yazaçları kısımları adreslenebilir. Opkodu izleyen ikinci bayt işlem yapılacak iç RAM satırının adresini içerir. Bu adresleme kipinde tüm komutlar iki bayt uzunluğundadır. Birinci baytı işlem kodu ikinci baytı adres oluşturur. Doğrudan adreslenen bölgenin 0‐7FH aralığında alt 128, 80H‐FFH aralığında ise özel amaçlı yazaçlar yer alır. 



               
                İVEDİ ADRESLEME


Programda gerekli sabitleri girmek için ya da yazaçların içeriklerini istenilen değere ayarlamak için kullanılır. Komutların birinci baytları opkod, ikinci baytları veriyi içerir. “#” işareti ivedi adreslemenin simgesidir.





 Bu komut akümülatöre 0CH sayısını yükler. İki bayt uzunluğundadır, birinci baytı opkod ikinci baytı sabit değerdir. Bir komut dışında ivedi olarak girilebilecek değerin uzunluğu 8 bittir. Fakat bu kural DPTR yazacı için çiğnenmiştir. DPTR 16 bitlik olduğu için veri yüklemeyi kolaylaştırmak amacıyla 16 bit veri yükleyen komut 8051 komut kümesinde yer almıştır.

MOV DPTR, #8000H

Bu komut 8000h sayısını DPTR’ye yükler. 3 bayt uzunluğundadır. Birinci bayt opkoddan ikinci ve üçüncü baytlar ise girilecek değerden oluşur.

MOV P1, #55H

Bu komutta birden fazla adresleme kipi kullanılmıştır. Hedef adres doğrudan, kaynak adres ise ivedidir. Makine diline dönüştürürsek 75h, 90h, 55h


              YAZAÇ ADRESLEME


Yazaç bankalarında yer alan R0,......,R7 yazaçları bazı komutlar tarafından kullanılır. Bu tür komutlar bir bayt uzunluğundadır ve 3 biti yazaç adresini tanımlar. Bu adresleme kipinde adres baytı olmadığından program içerisinde yazıldıklarında daha az yer işgal ederler. Opkod için ayrılan bit sayısı azaldığı için işlem sayısı azalır. Bu komutlar yazaç bankalarındaki tüm yazaçlarda kullanılır. Bildiğiniz gibi banka numarası PSW içerisindeki RS0 ve RS1 bayrakları ile belirlenir.  




Bu komut etkin olan bankanın 7 nolu yazacının içeriğini akümülatöre yükler. Bir bayt uzunluğunda bir komuttur. Opcodu ise EFH’dir. Bazı komutlar sadece bir yazaçta geçerlidir. Bu tür komutlara yazaca özel komutlar adı verilir. İşlemin yapılacağı yer opkod içerisinde yer aldığından adres bilgisi içermezler. Genellikle bu buyruklar akümülatörü ilgilendiren buyruklar olmakla beraber diğer yazaca özel buyruklar da vardır.

CLR A ;Akümülatörün içeriğini sıfırlar.

Bu komut sadece akümülatörde geçerlidir, bu nedenle bazı kaynaklarda akümülatöre özel adresleme modu kullanır şeklinde belirtilir.

         
              BAĞIL ADRESLEME

Bağıl adresleme dallanma komutları ile kullanılır. Bağıl adres değeri veya başka deyişle kayıklık (off‐set) değeri 8 bit işaretli sayıdır. –128 ile +127 arasında yer alır, dallanma komutunun işlenmesi tamamlandığında program sayacı bir sonraki komutun adresini içermektedir. İşlem yapılacak adres ki bu adrese hedef adres adı verilir, verilen kayıklık değerinin program sayacı ile toplanmasından elde edilir. Eğer negatif kayıklık verildi ise bu işlem bir çıkarma olacaktır ve programın akışı geri yönde olacaktır.





Kayıklık değerini hesaplamak zor olduğu için birçok Assembler programı etiket kullanıldığında kayıklık değerlini bizim için hesaplar. Bu adresleme kipinin artısı adresin komutun bulunduğu yere bağlı olmamasıdır. Eksisi ise etki alanının +127 satır ile ‐128 satırla sınırlı olmasıdır. Aşağıdaki formüller kullanarak hedef adres belli ise kayıklık değeri, kayıklık değeri belli ise hedef adres hesaplanabilir.

Bulunduğu adres + Kayıklık = Hedef adres
Veya;
Kayıklık = Hedef adres ‐ Bulunduğu adres


           DOLAYLI ADRESLEME

Bu adresleme kipinde komut veri gösterici olarak bir yazacı kullanır. İşlem yapılacak adres bilgisi veri gösterici olarak seçilen yazaca daha önceden yüklenir. Veri gösterici olarak R0, R1, DPTR yazaçları kullanılır.





8051 dış veri belleğine sadece dolaylı adresleme kipi ile ulaşabilir. Dış RAM’in boyutuna göre veri gösterici olarak seçilen yazaç değişir. Belleğin boyutu büyük ise (256 bayttan daha büyük) veri gösterici olarak DPTR yazacı, 256 bayttan küçük ise R0 yazacı seçilir. İç bellekte üst 128 baytta da sadece dolaylı adresleme kipi ile ulaşılabilir, veri gösterici olarak R0 ve R1 Yazaçları kullanılır. Alt 128 baytlık kısma doğrudan ve dolaylı adreslemenin her ikisi ile ulaşılabilir. Bu kısımda da R0 ve R1 yazaçlarının her ikisi veri gösterici olarak kullanılabilir. Dolaylı adreslemenin belirteci “@” simgesidir. Bu simge veri gösterici yazacın önüne eklenir.


               MUTLAK ADRESLEME

Mutlak adresleme kipi sadece AJMP ve ACALL komutları tarafından kullanılır. Bu adresleme kipinde hedef adresin 11 biti komut içerisinde belirtilir. 5 biti ise program sayacını o anki içeriğinden alınarak hedef adres elde edilir. Bu beş bitin belirlediği 2 Kbaytlık bir bölgeye bağlanılabilir. Komutlar iki bayt uzunluğundadır, birinci baytın ilk beş biti opkodu, son üç biti A10‐A8 nolu adres bitleri oluşturur. İkinci baytı ise adresin düşük değerli baytı (A0‐A7) oluşturur.



Bağıl adreslemeden daha geniş bir alana dallanabilmesi artısıdır, fakat bu alan adrese bağımlıdır. Eksisi ise 2 Kbaytlık bir bölgeye hem de adrese bağlı şekilde dallanabilmesidir. Bu adresleme kipinde 5 bit sayfa adedini belirlediğine göre 25=32 adet sayfa seçilebilir. 8051’in 64 Kbayt program belleği olduğuna göre her sayfanın boyutu 64/32’den 2 Kbayt elde edilir. Hedef adresle kaynak adresin ilk beş biti aynı olduğundan 2 Kbaytlık sınırın dışına dallanamaz. Sayfa sınırı sabittir, program sayacının içeriğine göre değişmez. Şekil‐3.1’de sayfaların bölünmesi gösterilmiştir.


               UUZUN ADRESLEME

Uzun adresleme LJMP ve LCALL komutlarında kullanılır. Komut 3 bayt uzunluğunda olur, birinci baytı opkod ikinci ve üçüncü baytları adres oluşturur. Artısı tüm 64 Kbaytlık adres aralığına dallanabilir. Eksisi ise dallanma noktasına bağlı olmasıdır. Program başka bir yere taşındığında dallanma noktası değişmediğinden eski yerine dallanma yapacaktır. Taşımalarda mutlaka adres değiştirilmelidir. 






              SIRALI ADRESLEME

Sıralı adresleme ile sadece program belleğinden okuma yapılabilir. Bu adres kipinin kullanılma amacı program belleğinde yazılı başvuru tablolarından bilgi okumaktır. 16 bitlik temel adresi içeren yazaç (DPTR veya program sayıcı olabilir) tablonun ilk adresini gösterir, akümülatör ise tablonun işlem yapılacak satırının numarasını içerir. Akümülatörün içeriği temel adrese eklenerek işlem yapılacak adres elde edilir. Sıralı adreslemenin diğer tipi de “durum jump” komutlarında kullanılandır.





               8051 KOMUT KÜNYESİ

8051 komutları yaptıkları işlemlere göre 5 ana grupta incelenebilir. Bu kısımda ortak özellikleri dikkate alınarak komutlar incelenecektir. EK‐A’da tüm komutlar alfabetik sıra ile ayrıntılı olarak incelenmiştir. Ek‐b’de ise komutlar alfabetik sıraya göre kısaca açıklanmıştır.

 Veri aktaran komutlar.
 Aritmetik işlem yapan komutlar.
 Mantık işlem yapan komutlar.
 İkilik işlem yapan komutlar.
 Dallanma ve bağlanma komutları.
    

       VERİ AKTARMA KOMUTLARI

Veri aktarma komutları kaynakta yer alan veriyi hedefe kopyalarlar. Veri 8051’de bellek iç RAM, Dış RAM ve program belleği olmak üzere üç farklı kısma bölünmüştür. Bu üç belleğin veri, adres ve denetim yollarını kullanım şekilleri farklı olduğundan aynı işi yapan üç değişik veri aktarma komutu vardır. MOV komutu iç RAM’de, MOVX dış RAM’de ve MOVC program belleğinde veri aktarmak amacı ile kullanılır.




     İÇ VERİ BELLEĞİNDE VERİ AKTARAN KOMUTLAR

Tablo–3.1‘de iç RAM’de kullanılan veri aktarma buyrukları kullanıldıkları adres modları ve işlenme saykılları verilmiştir. Kaynak ve hedef iç RAM’deki herhangi bir bellek satırı olabilir. Birçok mikroişlemcide olan hedef veya kaynaktan bir tanesinin akümülatör olması şartı 8051’de yoktur.






8051’de yığın iç RAM‘de yer alır ve dolaylı adreslenen yüksek değerli RAM bölgesine doğru genişletilebilir. PUSH komutu önce yığın gösterge yazacının içeriğini bir arttırır ve sonra belleğin içeriğini yığına kopyalar. POP komutu ise önce yığının en üstündeki veriyi alır ve doğrudan adresle belirtilen belleğe yazar, sonra yığın gösterge yazacını bir azaltır. Yüksek değerli 128 baytlık RAM bölgesi 8051’de yoktur, Eğer yığın gösterge yazacı bu bölgede bir adresi gösteriyorken yığına veri atılırsa bu veri kaybolur, veri çekilirse rasgele veridir. DPTR yazacının içeriği bir defada 16 bit ivedi adresleme ile istenilen değere kurulabilir. XCH A, <bayt> komutu akümülatör ile bellek satırının içeriğini karşılıklı yer değiştirecektir. XCHD A, @ Ri komutu da yer değiştirme yapar fakat yalnızca düşük değerli nibılların (dörtlü) yerlerini değiştirir. 

Aktarma işleminin yapılacağı işlenenlerden birisi (hedef veya kaynak) akümülatör (A) ya da yazaç (Rn) ise komut iki bayt sürer. İkinci bayt diğer işlenenin doğrudan adresidir.





Doğrudan adreslenen bir bellek gözüne doğrudan veri değeri aktarabilmek için gerekli komut üç bayt sürmektedir. Bellekten belleğe aktarma yapan komutlar da üç bayt uzunluktadır. Çünkü hem hedef, hem de kaynak doğrudan adreslenmektedir.





Paralel G/Ç kapıları (P0,P1,P2,P3) tümdevre üzerindeki Özel işlev yazaçları haritasında yer almaktadırlar ve dolayısıyla adreslenebilirler. Bir çok komut gibi veri aktarma komutları da paralel G/Ç kapıları üzerinde doğrudan İşlem yapabilmektedir.






DIŞ VERİ BELLEĞİNDE VERİ AKTARAN KOMUTLAR

Çizelge‐3.2 de dış veri belleğinde kullanılan komutların listesi verilmiştir. Tüm komutlar dolaylı adresleme kipindeçalışır. Dış veri belleğinden sadece okuma ve yazma işlemleri yapılabilir. Dolaylı adreslemede adres belirteci olarak R0 ve R1 yazaçları ile DPTR yazacı kullanılır. 256 baytlık RAM belleğin yeterli olduğu uygulamalarda sadece P0 portunun adres yolu olarak kullanılmasını olanak sağlamak amacıyla 8 bit adres kullanan MOVX komutuna 8051 komut kümesinde yer verilmiştir.





MOVX A, @Ri veya MOVX @Ri, A komutları kullanıldığında P2 portu serbest giriş/çıkış hattı olarak kullanılabilir. 256 baytlık dış RAM’ in yeterli olmadığı uygulamalarda 16 bitlik veri göstericisi DPTR yazacı kullanılır. MOVX A, @DPTR veya MOVX @DPTR, A komutları kullanıldığında P2 portu adresin yüksek değerlikli baytını taşıdığı için başka amaçla kullanılamaz.



PROGRAM BELLEĞİNDE VERİ OKUYAN KOMUTLAR

Program belleğine alt programlar tarafından kullanılan sabit değerler tablosu veya kod dönüşüm tabloları kalıcı bir şekilde yazılabilir. Belirli bir sıraya göre yazılmış bu sabit değerlerin oluşturduğu tabloya başvuru tablosu adı verilir. Bu tablolar birkaç alt program tarafından sınırsız olarak kullanılabilir. Program belleğine yazma yapılamadığından sadece okuma komutu vardır. Çizelge–3.3 de program belleğinden okuma yapan komutların listesi verilmiştir. Tablonun başlangıç adresini belirtmek için DPTR veya PC kullanılır. Tablo satır numarası ise sadece akümülatör içerisine yazılabilir. Tablodan yüklenecek verinin adresi DPTR veya PC ile Akümülatörün içeriği toplanarak elde edilir. Tablo değeri Akümülatöre yüklenir ve tablo satır numarası kaybolur. Bu durum genellikle sorun çıkarmaz, çünkü veri yüklendikten sonra bir daha satır numarasına gereksinim duyulmaz. Program belleğinden bilgi okumada dış RAM’ de olduğu gibi hedef sadece Akümülatör olabilir.





 
            DPTR İLE BAŞVURU TABLOSU YAPMAK

MOVC A, @A+DPTR komutu bir bayt uzunluğundadır. Bu komut işletildiğinde 16‐ bitlik DPTR yazacına 8 bitlik akümülatörün içeriği toplanır ve elde edilen 16 bitlik sayı program belleğinden okunacak verinin adresidir. Bu adresteki veri akümülatöre okunur. İşlem sonunda akümülatörün içeriği değişirken DPTR’nin içeriği korunur. Bu komut program belleğine kaydedilmiş dizi veya tablo değerlerinin okunması amacıyla kullanılır. Bunun için tablo veya dizinin başlangıç adresi DPTR yazacına okunacak verinin başlangıçtan uzaklığı (sıra numarası) akümülatöre yazılır.


       PC İLE BAŞVURU TABLOSU YAPMAK

MOVC A, @A+PC komutu bir bayt uzunluktadır. Bu komut işletildiğinde 16‐bitlik PC ile 8 bitlik akümülatörün içeriği toplanır ve elde edilen 16 bitlik sayı program belleğinden okunacak verinin adresidir. Bu adresteki veri akümülatöre okunur. İşlem sonunda akümülatörün içeriği değişirken PC’nin içeriği korunur. MOVC komutu PC veya DPTR ile özdeş işlemleri gerçekleştiriyor gibi görünse de PC ile yapıldığında işler bir parça karmaşık hal almaktadır. Bunun nedeni PC’ye istenilen bir tablo tabanı değerini yerleştirmenin olanaksız olmasıdır. Bu nedenle ileri düzey bir programcı değilseniz tabloya DPTR yazacını kullanarak ulaşmayı deneyin.






       ARİTMETİK İŞLEM KOMUTLARI

Aritmetik işlem buyrukları ve kullanıldıkları adres modları çizelge–3.4’te verilmiştir. Toplama komutu 8051’de eldeli ve eldesiz olmak üzere iki türdür. Eldesiz toplamada akümülatör ve belirtilen bayt toplanır sonuç akümülatöre yazılır. İşlem sonucunda oluşan elde bayrağı kurar, elde kurulu ise sonuç 9 bit demektir. Eldeli toplamada akümülatör belirtilen baytı ve eldenin içeriğini toplar sonucu akümülatöre yazar. Sonuç 8 bitten büyükse elde bayrağı kurulur aksi halde temizlenir. ADD A,<bayt> komutu aşağıdakiler gibi yazılabilir.




İKO sayıların toplanmasında kullanılan farklı bir komut yoktur, aynı toplama komutları kullanılır. Toplama komutu 3. bitlerin toplanmasında elde oluşur ise AC bayrağını kurar. Eğer İKO toplama yapılmak isteniyor ise toplanacak 8 bit değişkenlerin İKO formunda yazılı olması gerekir. Toplama yapıldıktan sonra DA A komutu işletilerek akümülatörün içeriği İKO’ya dönüştürülür. DA A komutu AC bayrağı kurulu veya düşük değerli 4 bit 9’dan büyük ise bu kısma 6 toplar. İşlemin sonunda elde oluşur ise yüksek değerli kısma yansıtılır. Elde bayrağı kurulu veya yüksek değerli kısım 9’dan büyük ise 6 toplanır, elde oluşur ise elde bayrağı kurulur, oluşmaz ise temizleme yapılmaz. DA A komutu diğer komutlar sonrası dönüşümü doğru olarak yapmaz.







İç RAM‘de her bellek satırının içeriği INC ve DEC komutları ile akümülatör kullanılmadan arttırılabilir veya azaltılabilir. Bu komutlar bayrakları etkilemez. INC DPTR komutu ise 16 bit DPTR yazacının içeriğini bir artırır. 8051’de çarpma ve bölme komutları ikişer bayt girdileri yine ikişer bayt sonuçlara dönüştürmektedirler. Her iki komutta sadece A ve B akümülatörleri üzerinde tanımlanmıştır. 8051 komut kümesinde tüm diğer komutlar 1‐2 makine saykılı sürerken çarpma ve bölme komutları 4 makine saykılı (48 osilatör periyodu) sürmektedir. A*B işleminin sonucunun düşük değerli Baytı A’da, yüksek değerli baytı B’de yer alır. Sonuç her zaman iki bayta yerleştirilir (A ve B). Çarpımın bir bayttan büyük olduğu (B 0) taşma bayrağı kurularak belirtilir (0V=1). Değilse (B=0) taşma bayrağı temizlenir (OV=0). Çarpma işlemi sonucu da C her zaman sıfırlanır, AC etkilemez, P ise alışılmış ödevini yapar.



8051’ de bölme komutu tek bir biçimde gerçekleştirilebilmektedir. Bölünecek sayı A’ya bölen sayı B’ye yazılmalıdır. A/B işleminin sonucunda bölüm A’ya, kalan ise B’ye yerleştirilir. Sayıların işaretsiz sayılar olduğu varsayılmaktadır. Bölüm, sıfıra bölme dışında, bir bayt büyüklüktedir. Sıfıra bölme durumu 0V=1 ile belirtilmektedir. Bölme işlemi sonucunda C her zaman sıfırlanır, AC etkilenmez, P ise alışılmış ödevini yapar.




          MANTIK İŞLEM BUYRUKLARI


Mantık işlem buyrukları ve kullanıldıkları adres modları çizelge–3.5’te verilmiştir. 8051 4 temel boolean işlemini gerçekler, birinci değişkenin aynı numaralı biti ile ikinci değişkenin aynı numaralı biti boolen işlemine tabi tutulur ve birinci değişkenin aynı numaralı bitine yazılır. İşlemin yapılabilmesi için değişkenlerden birinin akümülatörde olma zorunluluğu yoktur. Şekil–3.2’de AND işleminin yapılışı gösterilmiştir. ANL A, <bayt> komutu aşağıdakiler gibi yazılabilir.




              ANL A, 7FH (doğrudan adresleme )
              ANL A, @R0 (dolaylı adresleme )
              ANL A, R7 (yazaç adresleme)
              ANL A, #127 ( ivedi adresleme )

Akümülatörde yapılan tüm mantık işlem buyrukları 1 𝜇S sürerken diğer buyruklar 2 S sürer. Boolean işlemleri akümülatör kullanılmadan da veri belleğinin herhangi bir satırında gerçekleştirilebilir. Örneğin XRL P1 #veri buyruğu kısa yoldan portun giriş iken çıkışa dönüştürülmesini yada çıkış iken girişe dönüştürülmesine olanak sağlar. Elde üzerinden döndürme komutları dışındaki komutlar bayrakları etkilemez













              BOOLEAN İŞLEM YAPAN KOMUTLAR

8051 bit işlem yapan boolean işlemcisi içerir. Bit adresleme alt 128 baytlık bölgede 128 adet ve SFR bölgesinde 128 adet olmak üzere toplam 256 adet bellek hücresinde doğrudan adresleme modunda kullanılır. Bit işlem yapan komutlarda akümülatörün görevi elde bayrağına verilmiştir. Bit ilem yapan komutlar bitin içeriğini değiştiren, mantık işlem yapan ve test edip karar veren komutlar olmak üzere üç ana guruba ayrılır. Çizelge–3.6 da bit adreslemede kullanılan buyrukların listesi verilmiştir.

Bitin içeriğini değiştiren komutlar Mov, Setb, Cpl ve Clr komutlarıdır. Bu komutlardan Mov (Muv diye okunur) kaynak bitin içeriğini hedef bite kopyalar, setb komutu adresi belirtilen bitin içeriğini kurar (mantık 1 yapar). Clr komutu adresi belirtilen biti temizler (mantık 0 yapar), Cpl ise adresi belirtilen bitin 1’e tümleyenini (değilini) alır.

MOV C, bit ;Adresi belirtilen bitin içeriğini C’ye aktar.
MOV Bit, C ;C’nin içeriğini adresi belirtilen bite aktar.

Bit işlem yapan mantık komutları VE ile VEYA işlemleri olmak üzere iki çeşittir fakat iki adet VE işlemi vardır. Bunlardan birincisi elde bayrağının içeriği ile adresi belirtilen bitin içeriğini VE işlemi yapar ve sonucu elde bayrağına yazar. Bit işlem yapan mantık komutlarında birinci işlenen ve işlem sonucu elde bayrağında yer almak zorundadır. İkinci VE işlrmi yapan komut ise elde bayrağı ile adresi belirtilen bitin içeriğinin değilini VE işlemi yapar ve sonucunu elde bayrağına yazar.




ANL C, bit ; C=C  bit
ANL C, /bit ; C=C  /bit

VEYA işlemi yapan ORL komutunu kullanımı da ANL komutu ile aynıdır. Birinci
ORL komutu elde bayrağının içeriği ile adresi belirtilen bitin içeriğini VEYA işlemi
yapar ve sonucu elde bayrağına yazar. İkinci ORL komutu ise elde bayrağı ile adresi
belirtilen bitin içeriğinin değilini VEYA işlemi yapar ve sonucunu elde bayrağına
yazar.

ORL C, bit ; C=C V bit
ORL C, /bit ; C=C V /bit

Bitin içeriğini test edip karar veren komutlar beş adettir. Komutların hepsi adresi belirtilen birtin içeriğini komutun belirttiği değerele karşılaştırır, eğer sonuç doğru ise belirtilen adrese dallanma gerçekleşir. Eğer yanlış ise dallanma gerçekleşmez, 8051 bir sonraki komutu yürütmeye devam eder. Komut yazımında dallanılacak adres doğrudan adres olarak değil bağıl adres olarak verilmelidir. Birçok assmbler programı bu bağıl adresi kendisi hesaplar bizim etiket ile dallanılacak adresi belirtmemiz yeterlidir. Eğer belirtilen etiketin komuta olan uzaklığı +127 adres veya ‐128 adresden fazla ise program işletilirken hata oluşur.

JC son;Eğer elde bayrağı “1” ise dallan.

JC komutu elde bayrağının 1 olup olmadığını test eder. Eğer sonuç doğru ise son etiketinin bulunduğu adrese dallanır. Yanlış ise bir sonraki komuttan devam edilir.
JNC son ;eğer elde bayrağı temiz ise dallan.
JNC son komutu, elde bayrağının “0” olup olmadığını test eder. Eğer yanıt doğru ise son olarak belirtilen satıra dallanır. Yanlış ise bir sonraki komuttan devam edilir.

JB bit, son ;Adresi belirtilen bitin içeriği “1” ise dallan.

JNB bit, geri ;Adresi belirtilen bitin içeriği “0” ise dallan.


JB komutu adresi belirtilen bitin “1” olup olmadığını test eder. Eğer yanıt doğru ise “son” olarak belirtilen satıra dallanır. Yanlış ise bir sonraki komuttan devam edilir. JNB komutu adresi belirtilen bitin “0” olup olmadığını test eder. Eğer yanıt doğru ise “geri” olarak belirtilen satıra dallanır. Yanlış ise bir sonraki komuttan devam edilir. JBC bit, ileri ; Adresi belirtilen bitin içeriği “1” ise önce bitin içeriğini temizler sonra “ileri” olarak belirtilen adrese dallan. JBC bit, ileri komutu iki komutun birleşik halidir. Önce adresi belirtilen bitin içeriğini test eder. Eğer yanıt doğru ise bitin içeriğini temizler ve “ileri” olarak adlandırılan satıra dallanır. Yanlış ise bitin içeriği değiştirilmeden bir sonraki satırdan devam eder. AYRICALIKLI VEYA işlemi yapan komut yoktur diğer komutlardan türetilmelidir.














Yorumlar

Bu blogdaki popüler yayınlar

MİKRODENETLEYİCİ-3

MİKRODENETLEYİCİ-4