64'ler sayı 41, sayfa 68

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 68

Merhabalar. Geçen ay öğrenmeye başladığımız conditional (Codition Code registreinin durumuna göre değişebilen), branch (dallanma) komutlarının bu ayki bölümü karşınızda geçen ay Bcc ve Scc komutu dışındakitüm dallanma komutlarını öğrenmiştik. Bu komutlarında Assembler dilindeki en önemli yeri tuttuğunu söylemiştik. Ayrıca geçen ayki köşemizde çıkan Bcc komutlarının türlerini ve bu tür dallanma komutlarının mantık eşitliklerinin verildiği tabloyuda bu ayki köşemizde bulabileceksiniz. Şimdi komutları açıklamaya devam ediyoruz. Bec KOMUTU : Bcc (Branch According to Condition Code) bu komut Cmp komutuyla oluşturulan bir karşılaştırılma ortamında Condition Code'a göre belirtilen bir yere dallanmayı sağlar. Bütün assembler programlarındaki mantık ortamları bu komut üzerine dayandırılmıştır Bu komutlarda BOOLEAN eşitlikleri denen mantık eşitlikleri üzerine dayanır. Bu eşitlikleri (TABLO 1) de görebilirsiniz.Bcc komutu relative bir komuttur ve -32767 ile -32768 byte ileri yada geri gidebilir. Fakat 4-127 ile -127 byte arasında ki dallarmalarda

Bcc komutu bir word olarak işleme sokulur. Normalde Bcc komutu iki word olduğundan birinci seçeneği kullandığınızda programınızı hızlandırmış olursunuz Örnek: CMP.L d0.d1 ; karşılaştırılma işlemi BEQ LABEL ; dallanma işlemi Bu örnekte d0 ve d1 registerlerinin 32 bitide birbiriyle karşılaştırılır İkinci komut ise, d0 ve d1 registerlerinin eşit olma durumunda LABEL adındaki program labelina dallanmayı gerçekleştirir. Eşit olmama durumunda ise BEQ LABEL komutundan bir sonraki komuta atlanarak program akışı devam ettirilir. Scc KOMUTU Scc (Set According to Condition Code) komutu ise Bcc komutu ile aynı yapıda olup tek farkı, eğer yapılan karşılaştırılma ve Scc komutu ile verilen durum doğru çıkmışsa Scc komutunda bulunan effective adres 1 yapılır. Aksi halde effective adress 0 yapılarak akışa devam edilir. Örnek CMP.L d0,d1 ; karşılaştırılma işlemi SEQ d0 ; Scc komutu Bu örnekte, görüldüğü gibi d0 ve d1 registerleri birbirleriyle karşılaştırılıyor ve eşit olma durumlarında d0 registerinin ilk 1 yapılır eğer d0 ve d1 eşit değilse d0'ın ilk byte'ı 0 yapılarak programa devam edilir. RELATİVE : relative deyimi bir komutun -32768 ile 32767 arasında sınırlı olduğunu daha ileri yada daha geri bir program label'ına ulaşamayacağını belirtmek amacıyla kullanılan bir assembler terimidir. BRA, BSR, Bcc gibi komutlar relativedir. Eğer bir programda belirtilen sınırların dışında bir label'a atlama yapmak istiyorsanız JMP, JSR (Bkz. 40. sayı) gibi komutları kullanmalısınız. Bu komutlar relative değildir. NOT : Bu ve bundan önceki sayıda verilen komutları (TABLO 1) ile birlikte incelerseniz daha kolay anlayabilirsiniz. Şimdide sırada makinemizin tüm hafızasında bulunan bitleri nasıl kontrol edebileceğimizi ve bu işlemlerle ilgili operasyonları öğreneceğiz. Yazı dizimizin bu bölümünde, BCHG, BCLR, BSET ve BTST komutlarını öğreneceğiz. BCHG KOMUTU : BCHG (Test Bit and Change) komutu, verilen effective adresin belirtilen bitini kontrol eder ve eğer kontrol edilen bit 0 çıkarsa, zero flag'a 1 değeri yazılır. Daha sonra belirtilen bit

Klavyeyle gezinmek için ← ve → tuşları.