Assembly Diline Giriş Assembly Örnek Programları

Assembly Diline Giriş Assembly Örnek Programları

Programlama için günümüzde belki de en az kullanılan bilgisayar dili Assembly’dir. Ancak bilgisayar yapısı dersi kapsamında öğretilmek için kullanılabilecek en iyi dil de odur. Her iki cümledeki ifadelerin de nedeni aynıdır: Assembly, makine diline en yakın dildir.

Assembly öğrenmeye başlamadan önce bir programcının hedefinin ne olması gerektiğinin hatırlanmasında fayda vardır. Bununla birlikte programlamanın temel adımları, yani problemin ortaya konuşu, çözümün planlanması, programın kodlanması, denenmesi ve belgeleme de bu bölüm kapsamındadır.

Assembly dilinin diğer dillere göre nerede olduğunu vurguladıktan sonra programlamaya ve komutlara geçilecektir. Amaç Assembly gurusu yaratmak olmadığından bu bölüme bir giriş olarak bakılmalıdır.

Bu bölümde öğrencinin Assembly dilinin ne olduğunu, diğer dillere göre farklılıklarını kavraması amaçlanmaktadır. Ayrıca probleme bir programcı gözüyle yaklaşması beklenmektedir. Buradan hareketle basit Assembly kodları yazabilmelidir.

Bölüm Hedefi

Bu bölümde,

Programcının hedeflerini; Programlamanın temel adımlarını; Programlama dillerinin seviyelerini; Assembly dilinin yapısını; Temel assembly kodlarını;

öğreneceksiniz.

Programcının Hedefi

Programcıdan beklenen bir problemin çözümünü bilgisayar komutlarına çevirmesidir. Bunu yaparken algoritmayı kurma, programı yazma, çalıştırma, sonuçları inceleme, hataları düzeltme, gerekli kolaylaştırmaları yapma ve sonunda belgeleme adımlarını sırası ile gerçekleştirmelidir.

Programlama

Programlama beş adımdan oluşmaktadır;

  • Problemin Tarifi
  • Çözümün Planlanması
  • Programın Kodlanması
  • Programın Denenmesi
  • Belgeleme

>>> Problemin Tarifi

Problemin tarifinde amaç, girdiler, beklenen çıktılar ve yapılacak işlemlerin açıklığa kavuşturulmasıdır. Buradaki diğer adımlar gibi bu adım da herhangi bir işte takip edilmesi gereken adımlardandır. Her işe başlarken, eldekiler ve arzu edilen sonuçlar tariflenmez mi?

akış çizelgeleri temel basic

>>> Çözümün Planlanması

Çözümün planlanmasının en çok bilinen yolu adım adım insan lisanı ile algoritmayı oluşturmak veya daha iyisi akış çizelgesi (flowchart) çizmektir. Akış çizgeleri neyin nasıl yapılacağını gösteren haritalar olarak düşünülebilir. Akış çizgelerinde kullanılan elemanlar standartlaşmıştır.

trt teletext akış şeması

TRT1’in teleteksinden saati öğrenmek için hazırlamış akış çizgesi.

Assembly Diline Giriş Assembly Örnek Programları

>>> Programın Kodlanması

Bu aşamada akış diyagramındaki mantık silsilesinin bir bilgisayar dilini kullanarak bilgisayara geçirmek amaçlanmaktadır. Bu aşamada bir yazı düzenleyicisi (editor) kullanılır.

Seçilen dilin yazım kurallarına uyarak ve o dilin teknik özellikleri doğrultusunda yazım gerçekleştirilir. Bazı programlama dilini tanıyan düzenleyiciler hataları yazım esnasında bildirme veya çeşitli elemanları ayırt edici renklere boyama özelliklerine sahiptir.

>>> Programın Denenmesi

Bir defada hatasız kodlama yapılması çok zordur. Bunun için önce gözle bir kontrol yapılır. Sonra çevirici programına başvurulur. Bunlar derleyiciler veya Assembler’lar olabilir. Onlar da bize göremediğimiz yazım hatalarını bildirebilir. Daha sonra hata ayıklayıcı program ile (debugger) var olduğunu düşündüğümüz mantıksal hatalarımızı ayıklarız. Bu son aşamada gerekirse işlem adımlarının üzerinden programın adım adım geçmesi gözlenir. Herhangi bir komutta program istemediğimiz bir sonuç üretiyorsa hatanın olduğu bölge yakalanmış demektir.

Derleyici hata mesajı ile durmazsa nesne modülünü oluşturur. Link programları da bu nesne modülünü gerekiyorsa başka kütüphane programlarını da kullanarak işler ve böylece yürütülebilir (executable) programı oluşturur.

>>> Belgeleme

Belgeleme iki safhadır:

  • Programın amacı, akış çizelgesi, örnek girdi ve çıktılar gibi belgelerin bir araya getirilmesi
  • Program kodu içerisine mümkün olduğunca sık ve anlaşılır açıklamalar yerleştirilmesi

Bu belgeleme programcının ve sonraki programcıların işlerini kolaylaştıracaktır. Ayrıca bazı durumlarda kullanıcılar için de programın davranışını daha iyi kavramak açısından çok faydalıdır.

Programın uzun soluklu olması için belgeleme ihmal edilmemelidir.

Assembly Diline Giriş Dil Seviyeleri

Daha önce de bahsi geçmesine karşın Assembly’nin yerini göstermek açısından programlama dillerinin sınıflandırmasını vurgulamakta fayda var. Programlama dillerini şu şekilde seviyelendirebiliriz:

Dil Seviyeleri

  • Düşük Seviyeli Diller
  • Yüksek Seviyeli Diller
  • Çok Yüksek Seviyeli Diller
  • Doğal Diller

>>> Düşük Seviyeli Diller

En düşük seviyeli dil elbette ki makine dilidir. Ona en yakın olarak da Assembly dilleri karşımıza çıkar. İşlemci bağımlı olan bu diller hızlı çalışmakla birlikte programlaması çok zordur. Komutlar daha yüksek seviyelerdeki dillerde olduğu gibi çok işlevli değildir.

Günümüzde geliştirilen yazılımlarda artık bu dil kullanımdan kalkmış gibidir. Yazılan kodlar makine diline Assembler denilen çeviricilerle dönüştürülür.

Düşük Seviyeli Diller

  • Makine Dili
  • Assembly Dilleri

>>> Yüksek Seviyeli Diller

Programcının daha az çaba ile daha çok şeyler yapabilmesi isteğinden bu nesil diller ortaya çıkmıştır. 1960’larda ortaya çıkmaya başlayan İngilizce’ye benzeyen bu diller halen en çok kullanılanlardır. Derleyicilerle makine diline dönüştürülürler. Bazı dillerde kodlar çalışma anında komutların dönüştürülmesi prensibi ile ele alınır. Elbette ki bu durumda önemli ölçüde bir yavaşlama söz konusu olmaktadır.

BASIC, COBOL, FORTRAN, C, C++, Java, HTML, PASCAL, Perl, vb. bilinen yüksek (üçüncü) seviyeli dillerdir.

>>> Çok Yüksek Seviyeli Diller

4. nesil diller kullanılarak, 3. nesil dillerin 100 satırda yaptığını birkaç satırda yapmak mümkün olabilmektedir. Ancak yapılabilecekler ayrıntı bakımından sınırlıdır. Bu diller çeşitli amaçlar için özelleşmiş dillerdir. Örneğin veritabanı sorgulama dilleri bunların bir çeşitidir. Birkaç satırlık komutla çeşitli bilgilere ulaşılıp, grafikler çıkarılıp, istatistikler toparlanabilir.

Belki de 3. nesil dillerinin sonrasındakiler programlama dilleri değil, programlardır. Çünkü programcı işlem adımlarının ayrıntısından bütünüyle kopmuş olduğundan yapılan bir bilgisayarın programlanmasından çok programların programlanmasına doğru kaymıştır. Her durumda bu da bir programlamadır ve dil olsun veya olmasın bu kısmıyla bizim ilgi alanımızdadır.

Çok Yüksek Seviyeli Diller

SQL, Focus, Metafont, Matematica

>>> Doğal Diller

Bu diller doğal konuşma ile veya buna karşılık gelen yazılarla bilgisayara hükmetmek için tasarlanmaktadır. Bunlar bir program yazmaktan çok, tıpkı bir kısım 4. nesil dilde olduğu gibi sorgulama yapmak için tercih edilebilirler. Özellikle bilgisayardan biraz uzak kalmış insanlar (görme özürlüler gibi) için bunlar idealdir.

Ne yazık ki bilgisayarın ne istendiğini anlamadığında verdiği nazik hata iletisini fazlaca duymamak için, söz konusu dildeki komutlara da aşinalık gerekmektedir.

Assembly ile Programlama

Daha önce de vurgulandığı gibi, Assembly dili sisteme bağımlıdır. Biz x86 ailesinden IBM uyumlu bir PC üzerinde programlama yapacağız. Yani ucuz bir 80486 bizim için yeterli olacaktır.

 >>> Yazmaçlar

Önce yeni yazmaçlarımızı tanıyalım:
4 tane hem 16 hem de 8 ikil için kullanılabilen içsel yazmacımız var: A, B, C, D. Bunların sonuna X getirildiğinde (AX gibi) 16 bitlik, H veya L getirildiğinde de 8 bitlik yazmaç gibi kullanılabilirler. AH, A yazmacının yüksek baytına, AL ise düşük baytına karşılık gelir.

1 bayt 1 bayt
AH AH
AX

Assembly Diline Giriş yazmaçlar ve görevleri

Yazmaçlar ve isimleri şöyledir:

>> Assembly Diline Giriş Debug Programı

Microsoft Assembler, Turbo Assembler gibi programlar kullanılabilirse de biz öncelikle her PC’de olan bir DOS programını, DEBUG’ı kullanacağız. Bunun için Windows’ta iken bir DOS komut istemi açmak veya başlat menüsünden çalıştır demek, sonra da debug yazmak ve enter’a basmak gerekir. Gelen ekranda sadece bir – işareti vardır ve imleç yanıp sönmektedir. Böylece programlama alanına girmiş oluruz. DEBUG sadece COM uzantılı programlar oluşturabilir ve bu programların boyutu 64 KB’ı geçemez. Komutların büyük/küçük harf duyarlılığı yoktur. Yeri geldikçe gerekli komutları göreceğiz. Kullanıcının girişleri yeşil boyalı olanlardır. İlk göreceğimiz DEBUG komutu ‘?’, yani help komutudur.

Sonraki DEBUG komutu ‘r’, yani register komutudur. Yazmaçların o anki durumunu gösterir:Bir program yazmaya a komutunu verdikten sonra başlanır. Eğer güncel kesimin (segment) 0100h adresi değiştirilmek isteniyorsa o da komutun sonuna eklenir. Her komut yazıldıktan sonra enter’a basılır. Hatalı ise yeniden denenir. Yazma bittikten sonra iki defa enter’a basılır. Yazma modundan böylece çıkılır. Sonra yazılan programın komutlarını birer birer işletmek için ‘t’ komutu kullanılır.Eğer bizi yazmaçların biri ilgilendiriyorsa bunu da belirtebiliriz. Hatta bu yazmacın değerini bile değiştirebiliriz.

assembly dili  debug çalıştırma

assembly görsel eğitim seti indir

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Doğru cevabı sayı olarak yazın. *