Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Assembly programlama dili ve liste işlemleri hakkında kapsamlı bir eğitim içeriğidir.
- Video, Assembly programlama dilinde alt programların kullanımı ile başlayıp, kod segmenti ve yığın işlemleri, register'ların işlevleri ve sırasız liste işlemleri gibi konuları ele almaktadır. İçerikte alt programların nasıl çağrıldığı, değer aktarımı yöntemleri, sırasız listelerde eleman ekleme, silme, en büyük ve en küçük değer bulma gibi işlemler örneklerle açıklanmaktadır.
- Eğitim boyunca her konu emülatör üzerinden pratik örneklerle desteklenmekte, "topla bir", "karşılaştır", "yerleştir" gibi alt programlar kullanılarak sırasız listede eleman ekleme ve silme işlemlerinin adım adım gösterildiği görülmektedir. Video bir mola duyurusuyla sona ermektedir.
- Alt Programlar ve Kullanımı
- Bu hafta alt programlar, prosedürler ve CALL komutu ile alt program kullanımı anlatılacak.
- Tüm programları tek bir blok halinde tanımlamak hem yazarken hem de debug ederken zor olduğu için, küçük küçük alt programlar kullanarak kod yazmayı tercih ediyoruz.
- Alt programlar, ana programdan çağrılır, kendisine tanımlanmış işleri yapar ve çağıran yere geri dönerler.
- 01:01CALL ve RET Komutları
- CALL komutu ile çağrılan program tanımlanmış işleri bittikten sonra RET komutu ile ilk çağrıldığı adrese geri döner.
- CALL komutu ile bir alt program çağırırken dönüş adresi yığına atılır.
- Aynı segment içinde tanımlanmış alt programlar CALL NEAR ile, farklı segment içinde tanımlanmış alt programlar CALL FAR ile çağrılır.
- 02:39Alt Program Tanımlama ve Çalışma
- Alt programlar PROC ile başlar ve ENDP ile kapatılır.
- CALL komutu ile alt program çağrılır, alt program çalışır ve RET komutu ile ana programa geri dönülür.
- Örnek olarak M1 adlı alt program çağrılır, BX yazmacına 5 değeri atanır ve RET ile ana programa geri dönülür.
- 05:14Alt Program Örneği
- AX yazmacına 1, BL yazmacına 2 değeri atanır ve CALL M2 komutu ile M2 alt programı çağrılır.
- M2 alt programı AX ve BL değerlerini çarpar ve sonucu AX'e atar.
- M2 alt programı dört kez çağrılır ve sonucu 16 olur.
- 06:56Alt Programlara Değer Aktarma
- Alt programlara değer aktarmanın üç yolu vardır: yazmacı kullanmak, eleştirilebilir bellek alanları tanımlamak ve yığını kullanmak.
- Örnek olarak DX yazmacına değer atanır ve CALL komutu ile alt program çağrılır.
- Alt program DX yazmacını kullanarak işlem yapar ve sonucu AX'e atar.
- 09:07Değişkenlerle Çalışma
- DATA segmentinde değişkenler tanımlanabilir ve alt programlar bu değişkenleri kullanabilir.
- Örnek olarak VAR1 ve VAR2 adlı iki değişken tanımlanır ve CALL BEDEN komutu ile alt program çağrılır.
- Alt program VAR1 ve VAR2 değerlerini AX'e atar, OR işlemi yapar ve sonucu VAR1'e atar.
- 12:43Yığından Değer Aktarma
- Alt programlara aktarılacak değer önce yığına atılır, sonra alt program yığından değerleri okur.
- Aynı segment içinde çağrı yapıldığında dönüş adresi olarak yığına sadece IP yazmacı atılır.
- Farklı segment içinde çağrı yapıldığında dönüş adresi olarak yığına CS ve IP yazmacı atılır.
- 16:58Kod Segmenti ve Yığın İşlemleri
- Kod segmentinde BP register'ın yığına atılması ve SP yazmacının değeri BP'ye aktarılması işlemi gerçekleştiriliyor.
- AX, BP'den dört fazlası adresine gidiyor ve bu değeri zorlayarak, sonra geri alarak BP'nin içerisine tekrar yerleştiriyor.
- Pollfire ile kod segmentinde aynı işlem far ile tekrarlanıyor, ancak bu sefer farklı bir segmentte (kod segment 2) yapılan bir kod çalıştırılıyor.
- 19:43Yığın ve Değer Aktarımı
- İşlenecek adresin değerini göndererek değer aktarımı yapılıyor, örneğin yığında bir işlem yaparken onun adresi kullanılıyor.
- "Nokta data" ile bir tane beş birimlik sıfırdan oluşan bir word yapı tanımlanıyor ve kodun offseti ile count değeri yığına atılıyor.
- Alt programın uzunluğunu ve adresi verilen 16 bitlik sayılardan oluşan bir diziye değerin atanması isteniyor.
- 21:18Alt Program Çağrısı ve Parametreler
- Dizinin adresi ve eleman sayısı yığına atılarak alt program parametre olarak verilmekte.
- Count ve array gibi 100 birimlik alanlar tanımlanıyor ve array'in offseti ile count değeri yığına atılıyor.
- Arrayfil alt programı çağrılıyor ve bu program, dizinin içini sıfır olarak doldurabilmek için kullanılıyor.
- 22:56Arrayfil Alt Programı
- Arrayfil alt programında BP yazmacının içerisine push ediliyor ve SP yazmacının içerisine WP yazmacı atılıyor.
- Döngü içerisinde WP yazmacının içindeki adres sıfırlanıyor ve CX yazmacı azalırken döngü devam ediyor.
- Bu işlem, bölgeye gidecek offset bilgisini atarak, oradan arrayin bulunduğu adrese gidip işlem yapması üzerine kurulmuş.
- 24:08Listeler ve İşlemleri
- Listeler bellekte sıralı bir şekilde eleman denilen veri bilgilerini tutar.
- Sırasız listelerde eleman ekleme, silme, büyük ve küçük değerlerin bulunması işlemleri yapılabilir.
- Sıralı listelerde de eleman ekleme ve silme işlemleri gerçekleştirilebilir.
- 24:36Sırasız Liste Eleman Ekleme
- Sıfırvirgülseksen ile başlayan a, b, c, d, e, f, g, h elemanlı bir sırasız liste tanımlanıyor.
- Listeye eleman ekleme işlemi için dev bayrağı silinir, diğer endeks yığına atılır ve listeye yazmak için kullanılan sayac ayarlanır.
- Listenin başlangıç adresi didx'in içine atılır ve yazmacın içi sıfırlanarak ilk değer yazılır.
- 25:41Eleman Ekleme İşlemi
- Sayıcı sıfırlanır, di yazmacı bir arttırılarak bir sonraki elemana geçilir ve m karakterinin ASCII kodu al yazmacının içerisine atılır.
- Repeat ile liste tarama işlemi gerçekleştirilir ve eşit değilse ekle komutuna gidilir.
- Ekle komutunda gösterdiği adrese al yazmacındaki değeri atandıktan sonra topdi yapılıp di yazmacı bir arttırılarak program kapatılır.
- 27:10Örnek Uygulama
- Sırasız bir liste içerisinde a, b, c, d, e, f, g, h elemanları bulunuyor ve listenin uzunluğu başta ilk veri olarak yazılır.
- M karakteri listeye eklenirken, tek tek karşılaştırma işlemi yapılıp m bulunamadığı için ekle işlemine gidilir.
- Di yazmacı bir arttırılarak listenin uzunluğu 9'a çıkar ve m karakteri listeye eklenir.
- 30:01Mevcut Eleman Ekleme
- Listeye mevcut bir eleman (örneğin c) eklemeye çalışıldığında, c karakteri bulunur ve karşılaştırma işlemi sadece üç kere yapılır.
- CX ve diğer yazmacların içerisine geri çekildikten sonra program kapatılır.
- Sırasız bir listeye bir eleman ekleme işlemi gerçekleştirilir.
- 31:54Sırasız Liste Programı
- Sırasız listede eleman ekleme işlemi için data segmentinde bir rakamlar dizisi tanımlanıyor.
- Program, DX içine 9 değerini atarak 9 kere döngüye sokuyor ve listenin başlangıç adresini DI'ye atıyor.
- Loop döngüsü içinde, DI'nin adresindeki değeri karşılaştırıyor ve eşit değilse başa dönüyor.
- 34:25Sırasız Listeden Eleman Silme
- Sırasız listeden eleman silme işlemi için D bayrağı ile başlanıyor ve BX sıfırlanıyor.
- Listenin başlangıç adresi D'ye atılıyor ve CX sıfırlanıp CL'ye D içindeki değer (8) alınıyor.
- Silinecek eleman (B) bulunuyor ve silme işlemine zıplanıyor.
- 36:06Silme İşleminin Tamamlanması
- Silme işlemi için sonraki elemanı listedeki bir sonraki eleman yerine yazarak işlem tamamlanıyor.
- İlk değer (8) bir önceki değere düşüyor çünkü eleman sayısını belirtiyordu ve azaltılarak başlatılmıştı.
- B harfi silindi ve yerine C, D yerine C, C yerine D koyularak liste tamamlanıyor.
- 38:03Rakam Listesinden Eleman Silme
- Sırasız bir rakam listesinde (1, 2, 3, 4, 5) eleman silme işlemi yapılıyor.
- Listenin başlangıç adresi DI'ye atılıyor ve rakam 2 bulunuyor.
- Silme işlemi için DI artırılıp azaltılarak sonraki adamlar bir önceki adrese taşınıyor.
- 39:49En Büyük ve En Küçük Değer Bulma
- Sırasız listeden en büyük ve en küçük değerlerin bulunması işlemi yapılıyor.
- Listede 120, 405, 98,80, 89,80, 150 değerleri bulunuyor.
- CX saymaca 5 değerine ayarlanıyor ve listenin başlangıç adresi BX'e atılıyor.
- 41:16En Büyük Değerin Bulunması
- BX içindeki değer (120) diğer değerlerle karşılaştırılıyor.
- Daha büyük değerler bulunuyor ve MAXI'ye atanıyor.
- Tüm tarama işlemi sonunda en büyük değer (98,80) AX içinde tutuluyor.
- 44:14Sıralı Liste Eleman Ekleme
- Sıralı bir listeye eleman eklemek için nereye eklenmesi gerektiğini bulmak gerekiyor.
- Daha sonra eklenecek değere yer açılması için değerler kaydırılıyor.
- Listeye sırayla 4 ekleyen bir program yazılıyor ve döngü ile elemanlar karşılaştırılıyor.
- 46:38Alt Programlar ve Çalışma Mantığı
- Sistemde topla bir, topla iki, karşılaştır, yerleştir, adı ve sona ekle gibi alt programlar (dalgalanmalar) bulunmaktadır.
- Çalışma mantığı, datayı alıp listenin başlangıcını belirleyerek başlar.
- A ve D yazmacındaki rakamları karşılaştırarak işlem yapar ve belirli koşullara göre farklı alt programlara yönlendirir.
- 47:41İşlem Adımları
- A ile D içindeki rakam karşılaştırılır ve büyük olduğu durumda "topla bir" alt programına yönlendirilir.
- Karşılaştırma işlemi devam eder ve DX yazmacının değeri ile karşılaştırma yapılır.
- DX değeri belirli koşullara göre artar veya azalır ve yerleştirme işlemi yapılır.
- 50:48Sonuç ve Sıralama
- Yerleştirme işlemi tamamlandıktan sonra yeni liste 3, 4, 5, 6, 5, 8, 9 ve 15 şeklinde oluşur.
- Sırasız bir listeden eleman silme işlemi, sıralı listede eleman ekleme işlemiyle benzerlik gösterir.
- Sistem, karşılaştırma yaparak elemanı bulup, alttaki elemanları yukarıya yerleştirerek işlemi tamamlar.