ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ

Slides:



Advertisements
Benzer bir sunumlar
X86 Assembly Programlama Dilinde
Advertisements

STRİNG FONKSİYONLARI.
Prof. Dr. Eşref ADALI Yrd. Doç. Dr. Şule Gündüz Öğüdücü Sürüm-A
Göstericiler (Pointers)
DERS 7 PIC 16F84 PROGRAMLAMA.
Bölüm 2 C Dilinin Temelleri
TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ
Bölüm 2: Program Denetimi
VERİ TİPLERİ VE DEĞİŞKENLER
Programlamanın Yapı Taşları
DERS 6 PIC 16F84 PROGRAMLAMA.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
BUYRUK İşlem kodu İşlemci yazacı veri
Format Deyimleri Örnekleri;
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
DERS 6 PIC 16F84 PROGRAMLAMA.
8051 MİKROKONTROLÖR AİLESİ
Register ve Türleri Nihal GÜNGÖR.
Temel Bilgisayar Yapısı ve Devreleri
PROGRAMLAMA VE ASSEMBLY DİLİ
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Mikroişlemciler ve Mikrobilgisayarlar
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
DEĞİŞKENLER VE VERİ TİPLERİ
DERS 5 PIC 16F84 PROGRAMLAMA.
Soru 4.6 Bir sayısal bilgisayar sisteminde seçicilerle oluşturulmuş 32 bitlik 16 yazaçlı veri yolu sistemi var. Her seçici için kaç seçim girişi kullanılır?
VERİ TİPLERİ VE DEĞİŞKENLER
Ram’ı temsil eder. Bu veri tiplerine StackPointer yoluyla ula ş ıldı ğ ı için verinin ba ş langıç adresi, biti ş adresi ve kapladı ğ ı alan bilinmelidir.
DİZİLER Arrays.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
PROGRAMLAMA 2. Hafta TEMEL KAVRAMLAR.
ARM TABANLI İŞLEMCİLER
BİLGİSAYAR MİMARİLERİ 4.Hafta: Bellek Hiyerarşisi-2
BİLGİSAYAR MİMARİLERİ 2.Hafta: Bilgisayar Bileşenleri
DERS 4 MİKROİŞLEMCİ PROGRAMLAMA. Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 Ders 4, Slayt 2İÇERİK Yüksek seviyeli programlama dilleri Düşük sevyeli.
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Amaçlar Assembly dilinin genel özelliklerini tanımak
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
İnformasiya texnologiyaları kafedrası Mövzu № 9. Assembler. ( Assembler anlayışı. Assemblerin təyinatı. Assemblerdə operatorların formatı. Direktivlər.
Mekatronik Mühendisliği
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
DERS 5 PIC 16F84 PROGRAMLAMA.
Mikrobilgisayar Tasarım Yapıları
C Programlama Dili Bilgisayar Mühendisliği.
8086 Programlama – Kısım IV Stack’ler, Makro’lar
8086 Programlama – Kısım III Prosedürler
Mikroişlemciler Adresleme Modları.
Bilgisayar Donanım ve Sistem Yazılımı
Bilgisayar Donanım ve Sistem Yazılımı
Mikroişlemciler Giriş.
Bölüm 2 C Dilinin Temelleri
Mikroişlemcili Sistem Tasarımı
FONKSİYONLAR.
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bilgisayar Mühendisliğine Giriş
Mikrobilgisayar Tasarım Yapıları
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
Akis diyagramı Örnekleri
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
Bölüm 2 C Dilinin Temelleri
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Problem Çözme Süreci-3.
Sunum transkripti:

ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ ARM ASSEMBLY PROGRAMLAMA Doç. Dr. Ahmet Turan ÖZCERİT

GİRİŞ ARM, assembly programlamada kullanılan komut setleri, ARM, Thumb ve Thumb-2 şeklinde sınıflandırılabilmektedir. Thumb, 16-bitlik komutlardan oluşmakta, ARM ve Thumb-2 32-bitlik komutlardan oluşmaktadır. 2

ARM Assembly Komut Seti ARM komut seti 6 başlık altında ele alınabilir. Veri Transfer Komutları (veri işleme), Aritmetik ve Mantıksal Komutlar, Dallanma Komutları (akış kontrol), Yükleme ve Depolama Komutlar (bellek erişim), Yardımcı İşlemci Komutları (sistem kontrol), İstisnai Durum Komutları (privileged) 3

ARM Assembly Program Yapısı AREA PROGRAM_Adi, CODE, READONLY ENTRY Komutlar ------------ Etiket B Etiket END AREA: programın yerleştirileceği bellek bölgesi tanımlanır. CODE: Kod belleğe kaydedilecek. DATA: Veri belleğe kaydedilecek. READONLY: Yalnızca okunabilir. ENTRY: programın başlangıç noktasıdır. (Basla gibi). Çalışacak ilk komutun yerini gösterir. END: programın bittiğini belirtir. 4

ARM Assembly Komut Mnemonik ve Açıklamaları 5

ARM Assembly Komut Seti Şartlı Dallanma 6

ARM Assembly Yönergeler / Talimatlar Yönergeler/talimatlar program komutları gibi doğrudan makine diline dönüştürülmez. Yönergeler ile bellekte belirli alanlar programa tahsis edilir, sembol tanımlanır, diğer programlara referans verilir. Yönerge isimleri kullanılan assembler’a göre farklılık gösterebilir. Örnek yönergeler/talimatlar DEFINE CONSTANT, Aritmetik ve Mantıksal Komutlar, EQUATE (EQU), AREA, END, LIST, FORMAT, TTL, PAGE, INCLUDE, 7

ARM Assembly Yönergeler / Talimatlar DEFINE CONSTANT Programcıya program belleği içerisinde sabit data girişine izin verir. DCB, Define Constant Byte, 8 bit veri tutar. DCW, Define Constant Word, 32 bit sayı/veri ya da adres tutar. DCD, DCW’nin yerine kullanılabilir (Define Constant Data). İsim DB ifadeler Açıklama Max_sayi DCB 255 ;tek bir değişken tanımlanması Tablo DCW 0, 5, 4, 3, -10 ;dizi olarak tanımlama Yaz “ARM Ogreniyorum” ;string olarak tanımlama 8

ARM Assembly Yönergeler / Talimatlar EQUATE EQU (Equal = eşittir) bir sayısal değerin ya da adresin istenilen sembol adına atanması işlemini gerçekleştirir. Bu tanımlama program içerisinde bir ifadenin ya da değerin çok fazla tekrar edildiğinde programın anlaşılırlığını arttırmak için kullanılır. İsim Talimat Değer Açıklama Pi EQU 3.14 ;sabit değer tanımlama Bilgi 55h ;55h adresindeki veriyi bilgi değişkenine ata 9

ARM Assembly Yönergeler / Talimatlar AREA AREA programcıya bellek konumlarını belirlemeye izin verir. İzin verilen bellek konumları, bellek konfigürasyonuna göre değişiklik gösterebilir. AREA talimatı ile programcı Program Counter’ı yönlendirmiş olur. AREA’nın kullanılabileceği alan örnekleri: Reset (başlangıç )adres, Kesme servisi adresi, Traf (yazılımsal kesme)adresi, RAM bölgelsi Stack, Ana program, Alt programlar, Giriş/Çıkış, İsim Talimat Açıklama AREA RESET ;PC Reset adresi ile yüklenir $1100 ;PC 1100 adresi ile yüklenir INT3 ; 3 nolu kesme adresi ile yüklenir 10

ARM Assembly Veri Transfer Komutları AREA Program, CODE, READONLY ENTRY MOV R1,#0x5 MOVCS R0 , R1 ; C flag 1 ise veri transferini gerçekleştirir MOVS R0 , #0 ; R0’a 0 yükle ve Zero flagi set et MOV R0 , R1, LSL #2 ; R1’i 2 bit sola kaydır/ötele ve R0’a yükle MOV R0 , R1, ASR #2 ; R1’i 2 bit sağa kaydır/ötele ve R0’a yükle MOV R0 , R1, ROR #2 ; R1’i 2 bit sağa elde bayrağı ile döndür END 11

ARM Assembly Veri Transfer Komutları AREA Program, CODE, READONLY ENTRY Basla MOV R1, #0x10 ; R1 kaydedicisine 10 H değerini yükle LDR R0, [R1] ; R1 kaydedicisindeki değerin gösterdiği bellek adresindeki 32 bit bilgiyi R0’a yükle LDR R0, [R1, #5] ; R1’deki değere 5 ekle, toplam değeri adres kabul et o adresteki bilgiyi R0’a yükle LDR R0, [R1, #5] ! ; R1’deki değere 5 ekle, sonucu R1’de göster, R1’i adres kabul et o adresteki bilgiyi ; R0’a yükle B Basla ; Koşulsuz Basla etiketine dallan END 12

ARM Assembly Örnekler Örnek: Bir sayının tersini alan program Örnek: İki sayıyı toplayan program AREA Tersle, CODE, READONLY ENTRY Basla MOV R1, #10 MVN R1, R1 ;R1’deki değeri tersle END AREA Topla, CODE, READONLY ENTRY Basla LDR R1, Sayi1 LDR R2, Sayi2 ADD R1, R1, R2 Sayi1 DCD 10 Sayi2 DCD &5 END 13

ARM Assembly Örnekler Örnek: Dolaylı adresleme yöntemini kullanarak İki sayıyı toplayan program AREA DolayliTopla, CODE, READONLY ENTRY Basla LDR R0, =Sayi1 ; Sayi1’in adresini R0’e yükle LDR R1, [R0] ; R0’daki bilgiyi adres kabul et o adresteki değeri R1’e yükle LDR R2, =Sayi2 ; Sayi2’in adresini R2’e yükle ADD R1, R1, [R2] STR R1, [R0] ; R1’deki değeri R0’ın gösterdiği adrese yükle Sayi1 DCD &10 Sayi2 DCD &5 END 14

ARM Assembly Örnekler Örnek: İki sayıdan küçük olanını bulan program. AREA Kucuk CODE, READONLY ENTRY Basla LDR R0, Sayi1 LDR R2, Sayi2 CMP R1, R2 ; R1 - R2 BLO KucukSayi ; R1, R2’den küçükse dallan (BHO büyük için) MOV R1, R2 KucukSayi STR R1, Sonuc SWI &11 ; kesme kurulumu Sayi1 DCD &10 Sayi2 DCD &5 Sonuc DCD 0 END 15

ARM Assembly Örnekler Örnek: 1’den 10’a kadar ardışık sayıları toplayan program AREA ArdisikTopla CODE, READONLY ENTRY Topla ADD R0, R0, #1 ADD R1, R1, R0 CMP R0, #10 ; R0 - 10 BNE Topla ; R0 0 değilse Topla etiketine dallan END 16

ARM Assembly Örnekler Örnek: Bellekteki sayılardan kaç tanesinin negatif olduğunu bulan program AREA Negatif CODE, READONLY ENTRY Basla LDR R0, =Tablo LDR R1, =TabloSon Tekrar CMP R0, R1 ; R1 - R2 BEQ Son LDR R2, [R0] ; R0’ın gösterdiği adresdeki bilgiyi yükle ADD R0, R0, #4 ; Bir sonraki adres (32 bit adresleme) AND R2, R2, #0x80000000 ; Negatif sayı tespiti için CMP R2, #0x80000000 ; R2 negatif mi BNE Tekrar ADD R3, R3, #1 ; Negatif sayıları say B Tekrar SWI &11 ; yazılımsal kesme kurulumu Tablo DCD &12345678 DCD &87654321 TabloSon DCD 0 Son END 17

ARM Assembly Örnekler Örnek: Bir sözcük içerisinde harf arama programı AREA String CODE, READONLY ENTRY DUR EQU 0x0D Basla LDR R0, =Tablo EOR R1, R1, R1 ; R1 ile R1’i özel veya işlemine tabi tut Tekrar LDRB R2, [R0], #1 ; R0’ın gösterdiği adresdeki bilgiyi yükle R0’ı 1 arttır CMP R2, #DUR ; Son karaktere gelindi mi BEQ Son ADD R1, R1, #1 ; String kaç karakterden oluşuyor CMP R2, # ’A’ ; ’A’ karakterinden var mı BNE Tekrar ADD R3, R3, #1 ; ‘A’ karakterinden kaç tane var B Tekrar Son SWI &11 ; yazılımsal kesme kurulumu Table DCB ‘’SAKARYA’’ , DUR END 18