Bir Bilgisayar Mühendisi İçin Programlama Dili, Öğrendiklerini Sınadığı, Deneyler Yaptığı Bir Labaratuardır. Ve Mühendisler Deneylerini, Kestiremedikleri Sonuçları Gözlemlemek İçin Değil, Öngördükleri Sonuçları Doğrulamak İçin Yaparlar...
Assembly Dili
 
Üye Girişi
E-mail:

Şifre:



 
Blog Arama Motoru
 
Son Güncellenenler
 
Sosyal Ağlarda Paylaş
 
  Merhaba Assembly
   Flat assembler ile başlangıç olarak basit bir merhaba dünya örneği yazalım: format mz
org 100h
mov ah,09
mov dx,yazi
int 21h
mov ah,00
int 16h
int 20h
yazi db "Merhaba Assembly$"

   Şimdi ne yaptık ayrıntılı şekilde inceleyelim. format mz ile dos için çalıştırılabilir dosya yazacağımızı söyledik. Bu kod fasm'e özel bir kod. Eğer bunu koymazsak derlenen dosya com formatında olur.

   mov ah,09 ile string yazma fonksiyonunu kullanacağımızı belirtiyoruz. Bu ifadeden sonra program int 21 dos kesmesi ile karşılaştığında dx registerında bulunan adres bilgisinden başlayarak $ işaretini görene kadar bellekteki stringi ekrana basacak.

   mov dx,text ile dx registerına text ile işaretlediğimiz adresi yazdık. Aklınıza gelebilir; neden dx e yazdık, neden ax e yazmadık? Çünkü fonksiyon, işleyeceği değer için dx registerına bakar.

   int 21h dos kesmesi olduğunu söylemiştim.

   mov ah,00  ifadesi ise int 20h kesmesine ait bir fonksiyon. Bu fonksiyon ile klavyeden karakter bekleniyor. Hani c++ ile console programını bitirince cin>>a; diyip ekranın kapanmasını engelliyorduk ya, bu da aynı amacı taşıyor.

   int 20h çıkış kesmesi. Basicteki end komutuna benzetilebilir.

   Son olarak db ile Merhaba Assembly stringini belleğe yazıyoruz. ve bellekteki adresi, yazi etiketi ile işaretliyoruz.

   Bu basit örnekte bile interrupt kavramıyla karşılaştık. O kadar çok kesme var ki, assembly dilini ağır kılan şeylerden biri de bu galiba. İlerde en çok kullanılan kesmelerin (interrupts) bir listesini yazacağım...
 
Okunma Sayısı: 625
Yayınlanma Tarihi: Blogun eski sürümü ile yazılmış, tarih kaydı bulunmuyor...
Anahtar Kelimeler: merhaba, dünya, hello, world, örneği, flat, assembler, assembly
Yorumlar ( 2 )
Mustafa BERK
#1

30/12/2009, 21:18

hocam tasm ile veya masm ile aynı kodu derleyemiyoruz yanlış bilmiyorsam bunun nedeni nedir x86 asm butun x86 işlemcilerde aynı ise bu söz dizimi neden farklı
Hüseyin Atasoy
#2

30/12/2009, 22:17

Doğrudur, bir assembler ile derlenebilen kodlar başka biri ile derlenemeyebilir. Genel anlamda assembler, assembly dilini makine diline çevirir. Ama kendisine kodları hangi düzende vereceğimizi kendisi belirler. Yani farklı olan sözdizimi değil assembly komutlarının alınış düzeni. Örneğin masmda db ile tanımlanacak değerler ".data" altına yazılırken, fasmda program akışını kesmeyecek herhangi bir konumda bulunabilir. Burada "sözdizimi farklı" demek yerine "assembly kodlarını alış düzeni farklı" demek daha doğru. Sonuçta yaptıkları şey aynı. Tabi bir de assemblerların kendilerine ait komutlarının oluşu("format mz" gibi) da onları birbirlerinden farklı kılıyor...
Yorum/Görüş Bildir
Yorumları html kodu veya özel karakter kullanmadan, yazım kurallarına
dikkat ederek ve düzgün bir Türkçe kullanarak yazalım...
 
    Atasoy Blog v3.0 © 2009-2010 Hüseyin Atasoy | Tema Tasarımı: Hüseyin Atasoy
AtasoyWeb 1 yaşında, bu tema benden ona doğum günü hediyesi :)    
Programlama Günlüğü > Assembly Dili > Merhaba Assembly
Menü