|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir
Would you like to react to this message? Create an account in a few clicks or log in to continue.

|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir


 
AnasayfaLatest imagesAramaKayıt OlGiriş yap

 

 Assembly & Win32 Programlama

Aşağa gitmek 
YazarMesaj
FaTaL
Yönetici
Yönetici
FaTaL


Ruh Hali : Assembly & Win32 Programlama Manyak10
Başak Mesaj Sayısı : 626
Rep Puanı : 12268
Teşekkür Aldı : 18
Kayıt tarihi : 24/10/09
Nerden Nerden : Kocaeli
İş/Hobiler İş/Hobiler : 3D / Maya / After Efect
Lakap Lakap : Fatal

Assembly & Win32 Programlama Empty
MesajKonu: Assembly & Win32 Programlama   Assembly & Win32 Programlama EmptyCuma Ekim 30, 2009 9:15 am

Turbo Assembler 5.0 elimde uzun süredir bulunmasına karşın,
paketteki bir sorundan ötürü TASM32.EXE açılmıyordu. Dolayısıyla da
Win32 için herhangi bir çalışma yapabilmem mümkün değildi. Geçenlerde
tuttum TASM 5’i bir kez daha download ettim. Paketi sorunsuz kurunca
tek eksik olan TASM32.EXE de tamamlanmış oldu. Böylece Win32 için kod
yazma olayına başladım. Yani, yazdığım bu konuda ben pek deneyimli
sayılmam. Win32 için program yazmak isteyen arkadaşlar için en azından
bir başlangıç olsun diye bişeyler yazıyorum işte. Yaw Türkiye’de
assembly ile win32 kodu yazan biri varmı ?

Gerekli olanlar;

1- Assembly ile Win32 kodu yazma isteği
2- Bir adet Windows 9x ile çalışan bilgisayar
3- Turbo Assembler 5.0 (TASM32.EXE, TLINK.EXE ve Win32 libraryleri yeterli)
4- Bir adet text editörü (Windowsun not defteri bile olabilir)
5- Win32 Programmers’ Reference

Yukarıdaki 5 şey sizde varsa olaya başlayabiliriz. Örnek olsun
diye ’marabaa televole’ şeklinde bir mesaj kutusu çıkaran bir program
yazalım.

Programı yazarken windows apilerini kullanmamız gerekecek. Geçen
sayılardan birinde Melikşah’ın da belirttiği gibi API dediğimiz olay
eskiden DOS’ta kullandığımız interrupt servislerine benzer bir olay.
API konusunda geniş bilgiyi Win32 Programmers’ Ref. de bulabilirsiniz.

Not: API konusunda bazı APIlerin sonunda ...A harfini görürsünüz.
Bu ’A’ harfi o APInin 32 bitlik olduğunu gösterir. Mesela MessageBox 16
bitlik iken MessageBoxA 32 bitliktir.

Amacımız ekrana bir mesaj kutusu çıkarmak olduğuna göre
MessageBoxA APIsini kullanmamiz gerekecek (Win32.hlp dosyasında
MessageBoxA ile ilgili bilgiyi bulabilirsiniz). Konuyu bulduysanız
karşınızda aşağıdaki gibi bir şey göreceksiniz.

int MessageBox(

HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);

Burada hWnd mesaj kutusunu görüntüleyen pencerenin handle numarası,
LpText mesaj kutusunda görünecek olan yazının adresini, LpCaption mesaj
kutusunun başlık çubuğuna yazılacak yazıyı (caption) ve uType ise mesaj
kutusu tipini gösterir (Butonlar + Question, information vs..)

Eğer ortalıkta daha pencere falan yokken bir mesaj kutusu
görüntülenecekse haliyle hWnd=0 olacaktır. uType olayında ise mesaj
kutusuna konulacak düğmeleri ve mesaj kutusunun iconunu ifade eden bir
sayı bulunacaktır. (Ayrıntılı bilgi windows derleyicileri helpinde..)

MessageBox ile ilgili bilmemiz gerekenler bunlar. Şimdi kodlamaya başlayabiliriz.

;MESAJ.ASM
.386P
Locals
Jumps
.Model Flat ,StdCall

Yukarıdaki kısım derleyiciye yönelik olan parçalardır

extrn ExitProcess : Proc
extrn MessageBoxA : Proc

Yukarıda external olarak kullanacağımız API’leri tanımladık.

.Data
baslik db "ho hoyt !",0
yazi db "Marabaa televole",0

Kod özelliği taşımayan bilgileri .Data ile ifade edilen alana yazıyoruz. Burada text yazıların sonunu #0 karakteri belirtir

.Code
Main:
push 0 ;uType değeri stackte (Sadece Tamam düğmesi gösterilecek)
push offset Baslik ; Başlık adresi stackte
push offset Yazi ; Yazi adresi stackte
push 0 ; Pencere yok, o yüzden hWnd değeri olarak 0 değerini stacke koyduk
call MessageBoxA ; Mesaj kutusu gösterildi

CALL ExitProcess ;Programın sonu.. (Kernel32.ExitProcess)
End Main ;Burada da program bitti.

Bu programı aşağıdaki şekilde derleyebilirsiniz.

TASM32.EXE mesaj.asm /mx /m3 /z /q
TLINK32 -x /Tpe /ap /c mesaj,mesaj,, import32.lib
Sayfa başına dön Aşağa gitmek
http://www.refleksforum.com
 
Assembly & Win32 Programlama
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Assembly Programlama Dili
» Assembly Giriş
» Assembly Giriş-2
» Assembly Komutlari
» Assembly Komutlari -2

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir :: Bilgisayar Dersleri :: Assembly-
Buraya geçin: