Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.



Benzer belgeler
8086 Mikroişlemcisi Komut Seti

MTM 305 MĠKROĠġLEMCĠLER

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler.

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Hacettepe Robot Topluluğu

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ. PC-SPIMGirişi(MIPS R2000 Simulatörü)

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

Assembly Programlama

1.1. Yazılım Geliştirme Süreci

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

BM-311 Bilgisayar Mimarisi

İNTERNET PROGRAMCILIĞI - II

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Java Temel Özellikleri

Mikrobilgisayar Donanımı

Temel Bilgisayar Uygulamaları Web Tasarımı, Programlama Dilleri ve C# a Giriş

İşletim Sistemlerine Giriş

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

Dosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir.

C# nedir,.net Framework nedir?

2. SAYI SİSTEMLERİ. M.İLKUÇAR - imuammer@yahoo.com

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Sanal Bellek (Virtual Memory)

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

DOSYA NEDİR? Verilerin HDD de saklanması. Verilerin HDD de saklanması DOSYA SİSTEMİ NEDİR?

Dr. Fatih AY Tel: fatihay@fatihay.net

Komutların Yürütülmesi

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

ALGORİTMA VE PROGRAMLAMA I

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

C Dersi Bölüm 1. Bilgisayar Donanımı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

4. Bölüm Programlamaya Giriş

ÇALIŞMA SORULARI CEVAPLAR. 1)Aşağıdakilerden hangisinde bilgisayarın kaç ana bölüme ayrıldığı ve adları doğru bir şekilde verilmiştir?

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

8. İŞARETCİLER (POINTERS)

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF DERS NOTLARI

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

Şekil. 64 Kelimelik Yığıtın Blok Şeması

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

BİLGİSAYAR KULLANMA KURSU

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

SIMAN KULLANIM KILAVUZU

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

Pardus 2013 te Metin Editörleri

Linux Assembly Programlamaya Giriş

Linux ve Windows Üzerinde C ve C++ Kullanımı

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

Çalışma Açısından Bilgisayarlar

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

B.Ç. / E.B. MİKROİŞLEMCİLER

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

Windows 7 - IIS 7.5 üzerine PHP ve MySQL kurulumu

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller

Bilgi ve İletişim Teknolojileri

Mikrobilgisayar Sistemleri ve Assembler

İşletim Sistemlerine Giriş

İÇERİK 2 Java Kodlaması için Gerekli Programlar JRE, JDK kurulması ve Başlangıç Ayarları Java Kodlamayı Kolaylaştıran IDE ler Java Kod Yapısı İlk Java

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

PHP ile İnternet Programlama

Bilgisayarın Yapıtaşları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

JAL IN İNTERNET TEN İNDİRİLMESİ VE KURULMASI

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Açık Kaynak Kodlu Yazılım

Merkezi İşlem. Birimi

Temel Bilgisayar Programlama

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

AX3000 MEKANİK TESİSAT VE EKB V2014

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

Bilgisayar Sistemlerine Genel Bakış

Bilgisayarların Gelişimi

Yrd. Doç. Dr. Caner ÖZCAN

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

MTM 305 MĠKROĠġLEMCĠLER

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Yazılım Mühendisliğine Giriş 2018 GÜZ

8086 Mikroişlemcisi Komut Seti

BÖLÜM in Bellek Organizasyonu

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Bilgisayara Giriş. Bilgisayarlar ilk geliştirilmeye başlandıklarından bugüne kadar geçen süre içerisinde oldukça değişmişlerdir.

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Transkript:

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir. Bunun için X86 PC Assembly dili, Power PC Assembly dili veya 8051 Assembly dili biliyorum denilebilir. Hatta bu bile tam anmalı ile yeterli değildir. Mesela X86 PC Assembly dili donanım platformunu tanımlar ve bu donanımı çalıştıracak işletim sistemi Windows, Linux, Solaris olabilir.

Her bir işletim sisteminin hafızayı ele alış şekli başka olduğundan programcılar işletim sisteminin hafıza organizasyonunu göz önüne almak zoryndadırlar. Ayrıca kodlarınızı derlerken kullandığınız program olan Assembler da işe ayrı bir sınırlama koyar. Örneğin donanım X86 bir PC, işletim sistemi Windows olsun, bu durumda assembler olarak Netwide kullanırsanız farklı Turbo assembler kullanırsanız farklı talimatlarla program kodu yazmak zorunda kalırsınız ve bu kodlar adı geçen assembler programları tarafından makine koduna çevrilirler.

Sonuç olarak assembly dilinin programcılık açısından en büyük dezavantajı budur. Fakat assembly yi hızlı ve özelliklede sağlam bir dil yapan unsurlarda bu dezavantajın sonucudur. Bunca donanım ve işletim sistemi içinde acaba hangisi en çok kullanılıyor? Intel in işlemcileri ve Microsoft un işletim sistemleri tabi ki. "Bu programa dili zor mudur?" sorusuna, programlama dilini bırak adı bile zor diyebilirsiniz.

Assembler bir çeşit programdır ve assembly kodlarını makine kodlarına çevirir. X86 uyumlu PC ler için en popüler assembler lar TASM, MASM ve NASM dır. X86 ailesi için daha başka assemblerlarda mevcut fakat en çok kullanılanlar MASM ve TASM.asm uzantılı bir dosyanın içindeki assembly ifadelerini ve direktiflerini okur ve bunları makine kodlarına dönüştürür.

NASM ise TASM ile MASM ın bu yaptığına ek olarak Linux ve Unix ortamlarında da çalışır. TASM ve MASM kardeş assemblerlardır. Yazım kuralları hemen hemen aynıdır. Peki hangi assemblerı seçmeli? Aslında bu yapacağınız projeye bağlı tabiki, örneğin Visual Studio IDE si ile C++ uygulamaları geliştiriyorsanız MASM kullanmanız daha akıllıca olur, en azından MSDN de desteği mevcut. Biz hem TASM hemde MASM ı kullanacağız

Assembly Dilinde Program Kodlama: Sadece Assembly dili için geliştirilmiş editör yoktur. Windows un tüm versiyonlarında da mevcut olan edit.com kullanılabilir. Yada notepad, wordpad gibi bir editörde kullanılabilir ama program dosyası ANSI olarak kaydedilmelidir. Biz npp kullanacağız ama GVIM editörünü de kullanabiliriz. GVIM hemen hemen tüm popüler assembler söz dizimini (syntax) desteklediği gibi tüm popüler programlama dillerinin de söz dizimini destekleyen bir editördür.

Bu editörü http://www.vim.org/download.php#pc den indirebilirsiniz. NotePad, GVIM veya herhangi bir editörünü çalıştırıp örnek programınızı yazıp kaydediniz. Artık programınızı derleyebilirsiniz.

MASM de derlemek için 1.MASM yi indirip MASM dizinine açın. 2.Yazdığınız ornek1.asm dosyasınıda bu dizine kopyalayın 3.ml/c dosyaadi.asm şeklinde kaynak kodunuzu assembly ediniz, 4.Bu işlemin sonunda assembler ornek1.obj adında bir obje dosyası oluşturur, 5.Program dosyası oluşturmak için.obj uzantılı dosyayı link16 ornek1.obj komutu ile link etmeniz gerekiyor. Bundan sonraki adımları enter ı tuşlayarak geçin. 6.Programınızı dosya adını yazarak çalıştırabilirsiniz.

TASM de derlemek için 1.TASM yi indirip TASM dizinine açın. 2.Yazdığınız ornek1.asm dosyasınıda bu dizine kopyalayın 3.tasm dosyaadi.asm şeklinde kaynak kodunuzu assembly ediniz, 4.Bu işlemin sonunda assembler ornek1.obj adında bir obje dosyası oluşturur, 5.program dosyası oluşturmak için.obj uzantılı dosyayı tlink ornek1.obj komutu ile link etmeniz gerekiyor.

MASM için 1-ml/c ornek1.asm 2-link16 ornek1.obj TASM için 1-tasm ornek1.asm 2-tlink ornek1.obj

6.Programınızı dosya adını yazarak çalıştırabilirsiniz. Dikkat ederseniz her iki assemblerda aynı kaynak kodunu derledi ve sonunda.exe uzantılı bir program dosyası oluşturdu. İki assemblerın da çok fazla ortak yanı vardır fakat bu aynı oldukları anlamına gelmez ve her zamanda aynı kaynak kodunu derlemeyebilirler. Buradaki basit bir program olduğundan sorun çıkmadı. Belirli bir seviyeye gelene kadar hangi assemblerı kullandığınızın pek bir önemi yok.

Şimdi kaynak kodlarımızı bir daha gözden geçirelim ve dikkatimizi rakamların sonundaki h harfine odaklayalım. h harfi burada rakamın veya sayının hexadecimal (16lık sayı sistemi) olduğunu gösterir. Biz debug ile program yazarken bunu belirtmemiştik çünkü debug her yazılan sayıyı hex. olarak (daha doğrusu binary olarak) kabul eder.

Hafızanın Mantıksal Yapısı: Bir mikroişlemcinin ne kadarlık bir hafızaya erişebileceği adres yolu ile doğru orantılıdır. Adres yolu 16 bit olan bir mikroişlemci 2 16 yani 65536 adet hafıza konumuna erişebilir. 8086 işlemcisi 20 bitlik bir adres yoluna sahiptir ve adresleyebileceği alan 2 20 =1048576 yani 1 MB. a denk gelir. 80286 işlemcisinin adres yolu 24 bitlik ti ve 2 24 = 16777216 hücreyi, başka bir deyişle 16MB. lık bir hafıza alanını adresleyebilir.

Günümüzde kullanılan mikroişlemcilerin adres yolu çoğunlukla 32 bitliktir, buda 4 Milyar küsür hafıza konumuna denk gelir. Artık 64 bit devride başladı. Her ne kadar mikroişlemci böyle büyük hafıza alanlarını desteklese de böyle bir alanı kullanabilmemiz hafızayı nasıl organize edileceğine bağlıdır. Hafıza organizasyonuna yapılan bu yaklaşıma hafızanın mantıksal yapısı diyebiliriz.

Hafızanın mantıksal yapısı çalışma moduna göre değişiklik gösterir ve çalışma modu işletim sistemleri tarafından belirlenir. X86 uyumlu tüm PC ler Real(gerçek) Mod denilen çalışma modunda açılırlar, daha sonra işletim sistemine göre hafıza farklı bir şekil alabilir. Örneğin Linux yada Windows işletim sistemi yükleniyorsa hafıza Protected Mod (korumalı mod) denilen yapıya bürünür. DOS işletim sistemi yükleniyorsa hafıza real mod da kalır. Birde korumalı mod altında DOS programlarını çalıştırmak ve korumalı mod ile real mod programları arasında geçiş yapmak için windows işletim sisteminin Virtual Protected Mod u vardır.

Real mod da hafıza 64Kb lık segmentlerden oluşur ve bu segment içindeki her byte a erişmek için offset adresleri kullanılır. Bu durumda; Hafızanın tamamı Excell sayfası, Segmentler Satırlar ve Ofsetler Sütunlar(adreslenebilen her byte) olarak düşünülebilir.

Mikroişlemci hafızanın herhangi bir konumuna erişirken segment adresini segment kaydedicilerinden, offset adresini de; şayet erişilecek olan bir komut kodu ise IP kaydedicisinden alır. Erişilecek olan veri (değişken, karakter vs.) ise verinin türüne göre offset adresini tutacak olan kaydedici değişir, örneğin erişilecek veri stack ta (yığın bellekte diyebilirsiniz) ise buradaki verinin offset adresini SP (stack pointer) tutar.

Segment kaydedicileri 16 bitliktir, real mod da offset adresleri index kaydedicilerinin 16 bitlik kısımlarında (SP,BP,SI,DI) veya 16 bitlik olan IP kaydedicisinde tutulur. Bu durum xxxx:xxxx formatında gösterilir. Örneğin 3456:76A3 real modda bir hafıza adresini gösterir. Burada; 3456 segment adresi 76A3 ofset adresidir.

3456:76A3 gibi bir adres gösteriminde 3456 yı satır numarası olarak düşünürsek bu satırda 0000-FFFF arasında 65536 adet offset adresi (sütun) mevcuttur diyebiliriz ve bu konumların her biri 1 byte a denk gelir. Hafızanın gerçek yapısını göz önüne alırsak örneğin 8086 işlemcisi en fazla 1MB. lık hafızayı adresleyebilir fakat xxxx:xxxx şeklinde bir gösterim 4GB lık bir alana denk gelir (FFFF kere FFFF). Hal böyle olunca işlemci real modda çalışırken gerçek adresi bulmak için bir hesaplama yapar çünkü gerçekte hafıza real mod da 00000h-FFFFFh arasında anlamlıdır.

Real mod da gerçek adres şu formülle bulunur; 045F:0032 adresi için, segment adresi 4 bit sola kaydırılır veya başka bir deyişle adresin sonuna 4 adet 0 getirilir (0000)2=(0)16 böylece segment adresi 045F0 olur, sonra buna offset adresi eklenir ve gerçek adres bulunur. 045F0h+0032h=04622h gerçek hafıza adresidir. 045F0h + 0032h 04622h

Gerçek modda bilgisayarınız Pentium 4 bile olsa hafızanın sadece 1MB. lık alanını adresleyebilirsiniz, ayrıca sadece kaydedicilerin 16 bitlik kısımlarını kullanabilirsiniz. Bu son model ferrari nizi otobanda 1. viteste sürmeye benzer. Bir programın çalışma süreci genel olarak şöyledir, program önce hafızaya yüklenir ve mikroişlemci ilk komuttan itibaren programı satır-satır icra etmeye başlar.

Bu program hafızaya yüklenirken hafızada mantıksal olarak 3 tane segment oluşturacak 1.si 32 byte lık stack segment bölgesi 2. si 3 byte lık data segment bölgesi 3.sü kodların kapladığı alan kadar code segment bölgesi. İşlemci kaydedicileride programın yüklenme sürecinde ilk değerlerini alırlar. Örneğin CS kaydedicisi code segment bölgesinin segment adresini ve IP kaydediciside bu bölgede bulunan kodların ilkinin offset adresinin değerini alır. Kaynak