8086 Programlama – Kısım III Prosedürler

Slides:



Advertisements
Benzer bir sunumlar
X86 Assembly Programlama Dilinde
Advertisements

Programming 8086 – Kısım II Program Akışı ve Döngüler
Kesmeler (Interrupts)
Bilgisayar Programlama Güz 2011
TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ
Bilgisayar ? BİL 110 Bilgisayara Giriş Öğrt. Gör. Dr. Ahmet Cengizhan Dirican Bilgisayar Müh. Böl.
Derleyici Araçları FLEX & BISON
8051 MİKROKONTROLÖR AİLESİ
Bilgisayar Organizasyonu
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Derleyici Teorisine Giriş
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
MATEMATİK ÖĞRENEBİLİR
Intel 8086 Mimarisi Adresleme Modları
Programlama Fonksyionları
ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ
Amaçlar Assembly dilinin genel özelliklerini tanımak
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
8086 Programlaması – Kısım 1 1 Mikroişlemciler. İçerik 2 Hafıza Eri ş imi MOV komutu De ğ i ş kenler, Array’ler, Sabitler Aritmetik ve Mantık Komutları.
BRÜLÖR GAZ KONTROL HATTI (GAS TRAİN)
DUYUŞ VE DUYUŞSAL EĞİTİMİN TANIMI
Diksiyon Ödevi Konu:Doğru ve etkili konuşmada
BİLİŞİM TEKNOLOJİLERİ NEDİR?
Bölüm 9 OPERASYONEL MÜKEMMELİYETİ VE MÜŞTERİ YAKINLAŞMASINI BAŞARMA: KURUMSAL UYGULAMALAR VIDEO ÖRNEK OLAYLARI Örnek Olay 1: Sinosteel ERP Uygulamalarıyla.
Modülasyon Neden Gereklidir?
A416 Astronomide Sayısal Çözümleme - II
AKIŞKANLAR MEKANİĞİ 3. BASINÇ VE AKIŞKAN STATİĞİ
11. SINIF: ELEKTRİK ve MANYETİZMA ÜNİTESİ Alternatif Akım 2
PARAMETRİK OLMAYAN HİPOTEZ TESTLERİ
OSI Modeli ve TCP/IP Modeli
Programming 8086 – Kısım II Program Akışı ve Döngüler
Biz kimiz? ve Neyi Amaçlıyoruz?
C Programlama Dili Bilgisayar Mühendisliği.
C Programlama Dili Çağdaş Hakan Aladağ.
11. SINIF: ELEKTRİK ve MANYETİZMA ÜNİTESİ Elektriksel Kuvvet ve Elektrik Alan Doç. Dr. Ali ERYILMAZ Derse başlııyoruz. İlk Sunu…
YRD. DOÇ. DR. OKTAY KIZILKAYA
Bilgisayar Donanım ve Sistem Yazılımı
8086 Programlama – Kısım IV Stack’ler, Makro’lar
SPSS’TE VERİ GİRİŞİ 385 kişiye yapılan anket soruları aşağıdaki verilmiştir. Soru 1. Cinsiyetiniz? Erkek (1) Kadın (2) Soru 2. Yaşınız? ……………. Soru.
Sürdürülebilir Yerleşkeler Neyi sürdürmek istiyoruz???
8086 Programlama – Kısım III Prosedürler
Bölüm 6: Alamouti Kodlama
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
Öğr. Gör. Mehmet Ali ZENGİN
Öğr. Gör. Mehmet Ali ZENGİN
Mikroişlemciler Adresleme Modları.
İKİNCİ DERECEDEN DENKLEMLER
22nd ERES Conference, June 24-27, 2015, Istanbul/TR
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
AİLE İÇİ İLETİŞİM HOŞGELDİNİZ AYŞE ÖNEM PSİKOLOJİK DANIŞMAN.
Bilgisayar Donanım ve Sistem Yazılımı
Cpu Nasıl Çalışır?.
Bilgisayar Donanım ve Sistem Yazılımı
MÜHENDİSLİK ÖLÇMELERİ
HAVA VE AKCİĞER SAĞLIĞI “parankimal ve vasküler hastalıklar”
Mikroişlemci Sistemleri
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
Outlier Problem in Meta-Analysis and
Bilgisayar Donanım ve Sistem Yazılımı
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
PINAR KARTALO Ğ LU.  Belirli sayıda i ş lemlerin tekrarlanması için kullanılan döngülerdir. for döngüleri ba ş langıç ve biti ş de ğ erleri arasında.
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
Tolga Ayav, K.Atilla Toker İzmir Yüksek Teknoloji Ensitütüsü
Bilgisayar Mühendisliğine Giriş
MÜHENDİSLİKTE SAYISAL YÖNTEMLER Optimizasyon
ELEKTRİK DEVRE TEMELLERİ
NİŞANTAŞI ÜNİVERSİTESİ
GEOMETRİK Jeodezİ
11. SInIf: ELEKTRİK VE MANYETİZMA ÜNİTESİ KONDASATÖR (SIĞAÇ)
Sunum transkripti:

8086 Programlama – Kısım III Prosedürler Mikroişlemciler 8086 Programlama – Kısım III Prosedürler

Prosedürler Prosedür (Procedure), belli bir işi gerçekleştirmek için programınızdan çağırabildiğiniz kod parçasıdır (C programlama dilindeki fonksiyonları hatırlayınız) Prosedürler, programlarınızın daha yapısal olmasını ve kolay anlaşılır olmasını sağlarlar. Genellikle prosedürler, gerekli işlemleri gerçekleştirdikten sonra çağrıldıkları noktaya geri dönerler.

Prosedür yapısı isim PROC ; prosedür kodu RET isim ENDP İsim: prosedürün ismi Aynı isim, prosedürün hem üstünde hem de altında yer almalıdır.

Prosedür örneği SUMS PROC ADD AX, BX ADD AX, CX ADD AX, DX RET SUMS ENDP

Yapı hakkında bazı notlar Bildiğiniz gibi, RET komutu, işletim sistemine dönmek için kullanılır. Aynı komut, prosedürden dönmek için de kullanılır (aslında, işletim sistemi, sizin programınızı da özel bir prosedür olarak görmektedir) PROC ve ENDP komutları ise, compiler tanımlamalarıdır. Gerçekte makine koduna dönüştürülmezler. Compiler, prosedürlerin adreslerini hatırlar.

Prosedür çağrısı CALL komutu, prosedür çağrıları için kullanılır. Örnek:  ORG 100H CALL m1 MOV AX, 2 RET ; işletim sistemine dön. m1 PROC MOV BX, 5 RET ; çağrıyı yapan kısma dön. m1 ENDP END

CALL ve RET CALL komutu ile, dönüş adresi yığın bölümünde saklanır. RET komutu ile ise, yığın bölümünde saklanan adres alınır ve IP içerisine atanır. Prosedürlerin sonuna RET komutu yerleştirmeyi unutmayın! Prosedürünüzün içerisinde birden fazla RET komutu yerleştirebilirsiniz (C programlama dilindeki return komutu gibi).

Prosedüre parametre göndermek Prosedürlere parametre göndermek için birkaç yol vardır. En kolay yoll, register’ların kullanılmasıdır Parametreleri register’lara yerleştirin ve prosedürü çağırın Prosedür, bu register’ları kullanacak şekilde dizayn edilmelidir. Başka bir yol da yığın bölümünü kullanmaktır Parametreleri yığın bölümüne atın ve prosedürü çağırın Prosedür, parametreleri yığın bölümünden çekecek biçimde dizayn edilmelidir Her iki yolda da, programlayıcı, prosedürün genel yapısını bilmelidir.

Örnek ORG 100h MOV AL, 1 MOV BL, 2 CALL m2 RET ; işletim sistemine dön. m2 PROC MUL BL ; AX = AL * BL. RET ; çağrıyı yapan kısma dön. m2 ENDP END

Örnek hakkında Program, 24’ü hesaplamaktadır. Prosedür, parametreleri AL ve BL’den almaktadır; onları çarpmaktadır, sonucu ise AX’te saklamaktadır. C programlama eşiti, aşağıdaki gibi düşünülebilir: short m2(char al, char bl) { short ax = al * bl; return ax; }

Örnek: Araştırma (Searching) Word array’inde bulunan sayılar arasından bir sayıyı arayan bir prosedür yazınız. Prosedür, SI register’ından, array’in başlangıç adresini alacaktır. Aranacak sayı ise BX register’ında bulunmaktadır. Array içerisinde bulunan eleman sayısı ise CX register’ında bulunmaktadır. Prosedür, bulunan sayının offset değerini DI register’ında saklayacaktır. Eğer sayı bulunamaz ise, DI’ın değeri 0 olacaktır.

Çözüm (Sayfa 1) include emu8086.inc ORG 100H ; 2500H … 2514H arasına veri yerleştir MOV SI, 2500H MOV AX, 10 MOV CX, 10 LOOP1: MOV [SI], AX INC SI DEC AX LOOP LOOP1

Çözüm (Sayfa 2) ; Parametreleri set et: MOV SI, 2500H ; start address MOV CX, 10 ; number of elements MOV BX, 1 ; number to be searched ; Prosedürü çağır: CALL FIND ; Sayının bulunup bulunmadığını kontrol et: CMP DI, 0 JNE NUMFOUND PRINT 'The number is not found' RET NUMFOUND: PRINT 'The number is found.'

Çözüm (Sayfa 3) FIND PROC L1: MOV AX, [SI] ; array’den sıradaki elemanı oku CMP AX, BX ; AX’deki sayı ile karşılaştır JE FOUND ; Bulundu ise, FOUND bölümüne atla INC SI ; Bulunmadı ise, sıradaki elemanı kontrol et INC SI ; Word array’i olduğu için, SI 2 arttırılmalıdır. LOOP L1 ; Bu satıra gelindi ise, array içerisinde sayı bulunamamış demektir: JMP NOTFOUND FOUND: MOV DI, SI ; SI’ı, DI’a kopyala ve geri dön RET NOTFOUND: MOV DI, 0 ; DI’a sıfır’ı kopyala ve geri dön FIND ENDP