Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ"— Sunum transkripti:

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

2 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

3 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

4 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

5 ARM Assembly Komut Mnemonik ve Açıklamaları
5

6 ARM Assembly Komut Seti Şartlı Dallanma
6

7 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

8 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

9 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

10 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

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

12 ARM Assembly Veri Transfer Komutları
AREA Program, CODE, READONLY ENTRY Basla MOV R1, #0x ; 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

13 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, R ;R1’deki değeri tersle END AREA Topla, CODE, READONLY ENTRY Basla LDR R1, Sayi1 LDR R2, Sayi2 ADD R1, R1, R2 Sayi DCD Sayi DCD &5 END 13

14 ARM Assembly Örnekler Örnek: Dolaylı adresleme yöntemini kullanarak İki sayıyı toplayan program AREA DolayliTopla, CODE, READONLY ENTRY Basla LDR R0, =Sayi ; 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, =Sayi ; 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 Sayi DCD &10 Sayi DCD &5 END 14

15 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 & ; kesme kurulumu Sayi DCD &10 Sayi DCD &5 Sonuc DCD END 15

16 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

17 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, # ; Bir sonraki adres (32 bit adresleme) AND R2, R2, #0x ; Negatif sayı tespiti için CMP R2, #0x ; R2 negatif mi BNE Tekrar ADD R3, R3, # ; Negatif sayıları say B Tekrar SWI & ; yazılımsal kesme kurulumu Tablo DCD & DCD & TabloSon DCD Son END 17

18 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, R ; 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, # ; String kaç karakterden oluşuyor CMP R2, # ’A’ ; ’A’ karakterinden var mı BNE Tekrar ADD R3, R3, # ; ‘A’ karakterinden kaç tane var B Tekrar Son SWI & ; yazılımsal kesme kurulumu Table DCB ‘’SAKARYA’’ , DUR END 18


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

Benzer bir sunumlar


Google Reklamları