INTEL 8086 ASSEMBLY
Yayınlanma tarihi Nis 20, 2009 : Assembly Köşesi
INTEL 8086 ASSEMBLY
Int 33h , Int10h Kesmesi Ve Bir Ürnek (EMU 8086)
AX=03h Int 33h Registerler: BX=1 sol butona basıldı BX =2 sağ butona basıldı BX =3 Her iki butona da basıldı CX=Fare Curser X Değeri DX=Fare Cursor Y Değeri AH= 0Ch INT 10h
Registerler:
AL=Renk CX: Pixel x koordinatı DX: Pixel y koordinatı CX ve DX registerleri ile belirlenen noktaya AL registeri ile belirlenen renkte nokta koyar.

Yukarıda satır satır yazdığımız aÇıklamanın ardından kısaca şunları da ekleyebiliriz,
Program int 33h ve int 10h kesmeleri ile EMU 8086 da yapdığımız bir assembly programıdır,
basitÇe şu şekilde Çalışır;
Int 10h ile program başında grafik moda geÇtikten sonra, int 33h ile fare cursör”ü
görünür hale getirdik, devam etiketi (label) ile loop arasında kalan kısımda sonsuz
bir döngü ile fare tuşlarını okutuyoruz, fare sol tuşuna basıldığında BX registeri 1 olur
ve CMP ve JE komutları ile yaz etiketine dallanılır. Yaz etiketinde int 33h ile fare
bilgileri tekrar okutulup tam fare cursör”ünün bulunduğu yere int 10h ile beyaz bir
pixel koyuluyor. Pixelin rengini ¬belirleyen AL registeridir o da binary 1111 yani
Desimal On Beşe eşittir, aşağıda bu rek kodlarını da gösterecek olursak;
Fare okutulurken sol ve sağ butonlara tıklandığında CX 3 değerini alır ve CMP,
JE komutları ile bitti etiketine dallanarak program biter, yani program fare ile
her iki butona basılana kadar, program devam eder.
Program Çıktısı Aşğıda görülmektedir.( Not: Program EMU 80806 ile yazılmıştır)
shr komutunun kullanılmasının değeri ise Normalden iki katı fazla Çıkan
CX değerini ikiye bölerek X koordinatını gerÇek değerine getiriyoruz.
Ürnek program dosyasını indirebileceğiniz adres:
http://depositfiles.com/files/xc7ks7ugu
Faydali olması dileğiyle,
Nurettin ÜEBİ
Bilgisayar Programcısı
Bugun Okunma Sayısı:0, Toplam Okunma Sayısı:4225




Makale için teşekkürler. Ayrıca meraklı arkadaşlara daha ileri seviyede assembly ve win32 api dersleri için 5 sene önce hazırladığım makalelerime göz atabilirsiniz. http://www.snakeforce.com/forum