Emu8086 ile Port Bağlantısı

Emu8086 ile C# da yazılmış bir formun butonu ile port bağlantısı kurma işlemini yapmak için,

c:/emu8086/devices/developers adresine girip io.cs classını bulunuz.

Daha sonra c# da yaptığınız projenin üzerine tıklayıp  Existing New items ile io.cs  classını projenize ekleyiniz.

emu2

Bu işlemide gerçekleştirdiğinize göre projenize Assembly ile c# arasında port bağlantısını sağlayacağınız classı eklemiş oldunuz.

Classı incelerseniz içersinde 4 tane metodun olduğunu göreceksiniz.Bu metodların ne işimize yaradığını anlattıktan sonra kullanımlarıyla ilgili de bilgi vereceğim.

READ_IO_BYTE

READ_IO_WORD

Yukarıdaki iki metod ile c# assembly’nin kendisiyle iletişime geçebileceği port numaralarını belirliyor.Bu port numaralarının birimlerinin  byte veya word  cinsinden olmasına göre ikisinden birini seçiyoruz.

WRITE_IO_BYTE

WRITE_IO_WORD

Yukarıdaki diğer iki metod ile de c# ile Assembly’nin içinde kullanılan,port numarası bilinen herhangi bir porta müdahele edebiliyoruz.Write_io_byte ve Write_io_word metodları 2 parametrelidir.Bu parametrelerin birincisi ile port numarasını ikincisiyle de portun açık /kapalı olma durumu tutuluyor.

Mesela ben Emu8086 içerisinde örneklerde olan Thermometer  kodunu form ile çağırdım.Ve bu form ile o thermometer projesine c# ile müdahele etmek istiyorum.Thermometer projesini c#’da buton ile çağırdım.

Bunu

System.Diagnostics.Process.Start (“C:\\emu8086\\DEVICES\\thermometer.exe”); komutuyla gerçekleştirdim.emu2

Formdaki kapat butonuna basıldığında thermometrenin çalışmamasını ve Aç butonuyla da çalışmasını istiyorum.Bunun için port işlemlerini yapmamız gerekli.Butonların click kısmına gelip
Emu8086.IO.WRITE_IO_WORD(127, 0); //Thermometreyi kapatır.
Emu8086.IO.WRITE_IO_WORD(127, 1);//Thermometreyi açar.

Yukarıdaki birer satırlık kodları yazmamız yeterli.Peki 127 sayısı nerden çıktı?127 sayısı emu8086 içerisindeki thermometre örneğinde kullanılan port numarası olarak verilmiş.Yani aslında biz yukarıdaki kodlarla portu açıp kapama işlemini yerine getiriyoruz.

emu2

 

Emu8086’ya Diğer Programların Entegresi

Emu8086 programı çalıştırıldığında başka bir programda yapılmış bir arayüz veya kodları çağırmak istiyoruz.

Mesela c# ‘da bir arayüz geliştirdiniz.Bu arayüzü emu8086 da çalıştırıp,emu8086 ile c# arasında bağlantı kurmak istiyorsunuz.Bunun için öncelikle diğer yazımda belirttiğim gibi emu8086 programı bilgisayarınızda kurulu olmalı.Yapacağınız ikinci işlem ise c# da yaptığınız projenin .exe li halini kopyalayıp,c:/emu8086/Devices klasörünün içine kopyalamak.Benim emu8086 da çağırmak istediğim proje WindowsFormsApplication1.

emu1

 

 

Bu işlemi yaptıktan sonra artık işimiz çok kolay Emu8086’da çalıştırmak istediğimiz projenin içine c#  da yapmış olduğumuz projenin

#start=WindowsFormsApplication1.exe#   şu kodu yazarak sağlıyoruz.

emu2

 

Emulate ettikten sonra göreceksiniz ki diğer programda yapmış olduğunuz proje ekrana geliyor.Böylece emu8086 ile herhangi başka program ile de entegreyi sağlayabilirsiniz.emu2

Assembly Dili ve Emu 8086’ya Giriş

Assembly dilini yeni öğrenmeye başladım.Öğrendikçe blogumda paylaşımlar yapacağım.İlk olarak assembly öğrenmek adına yapılması gereken assembly dilini geliştireceğimiz emu 8086 yı bilgisayarınıza kurmanız.Bunu aşağıdaki linki kullanarak yapabilirsiniz:

http://8086-microprocessor-emulator.soft32.com/

Kuruluma gayet kolay.Kurulduktan sonra ekrana choose code template messagebox’ı gelecektir.Buradan seçeceğiniz template sizin oluşturduğunuz kodun uzantısını belirleyecektir.

80861

Bu adımı geçtikten sonrada kodu geliştireceğimiz ekranı görebileceksiniz.

8086

Artık rahatlıkla assembly dilinde code yazıp geliştirebilirsiniz  :)Diğer yazılarımda assembly dilinde sıklıkla kullanılan komutlardan,yazılmış örneklerden bahsedeceğim Assembly ile ilgili öğrendiğim herşeyi buradan paylaşacağım.