Bilgisayar Donanım ve Sistem Yazılımı Aslı Eyecioğlu Özmutlu aozmutlu@bartin.edu.tr
Pomodoro Tekniği (Pomodoro Technique) Francesco Cirillo tarafından ortaya atılan, zaman planlamasını ön planda tutan bir çalışma tekniği. Work Smarter, not Harder ! Daha çok çalışma, daha zekice çalış ! https://cirillocompany.de/
Assembly Kod yapısı ve yazımı Operand Alanı Talimatlar
Assembly Kod Yazımı Program formatı Komutlar ve talimatlardan meydana gelen assembly dilinde yazılmış kaynak kodlarının her bir satırında dört ayrı alan tanımlanabilir. Bunlar: Etiket alanı, Komut alanı, Operand alanı, Açıklama alanıdır.
Assembly Kod Yazımı Operand alanı Operand alanı, işlemciye işlenecek verinin nerede olduğunu söyleyen bir kısımdır. Tek başına bir anlam ifade etmezler. ADD AX,BX CMP AX,BX MOV CX,00
Assembly Kod Yazımı (devam) Operand Alanı ADD AX , BX İki bölümlü operand alanındaki ilk bölüme hedef operandın bulunduğu yer, i̇kinci bölüme kaynak operandın bulunduğu yer denir. Bu iki bölüm virgülle ayrılır. Hedef Operand Kaynak Operand
Assembly Kod Yazımı (devam) Operand Alanı Kaynak operand doğrudan bir veri kaydedici, bellek adresi yada o adresi gösteren bir kaydedici olabilir. Hedef operand bir kaydedici veya bellek adresi olabilir. Sağ taraftaki operanddan sol taraftaki operanda bir aktarım olduğundan sağdaki operandın değeri değişmez, AYNI kalır fakat hedefteki kaydedici yada adres içeriği kaybolur.
Assembly Kod Yazımı (devam) Operand Alanı Bu alanla komut alanı arasında bir veya iki karakterlik boşluk olması yeterlidir. Fazla veya az olması assembler açısından olumsuzluk yaratabilir.
Assembly Kod Yazımı (devam) Talimatlar Komut alanında iki tip hareket ifadesi kullanılmaktadır. Bunlar, komut (instruction) ve talimatlardır (direktif). İkiside emir kelimesini ifade eder, fakat komutlar mikroişlemci, talimatlar ise assembler için kullanılır.
Assembly Kod Yazımı (devam) Talimatlar Talimatlar, segmentlerin ve alt yordam gibi prosedürlerin kurulumunda, sembollerin tanımı, geçici saklama yapmak için kullanılır. Programda kullanılan komutların tümü amaç kodları üretirken talimatlar üretmezler.
Assembly Kod Yazımı (devam) Talimatlar Talimatlar, komutların belli bir kurallar düzeninde sarılarak i̇şlemciye iletilmek üzere verilmesidir. Assembler talimatları süzdükten sonra komutları belirtilen düzende işlemciye ulaştırmak üzere belli bir düzene sokar.
Assembly Kod Yazımı (devam) Talimatlar Talimatlar 6 ana kategoriye ayrılır: Listeleme talimatları Veri talimatları Segment talimatları Makro talimatları Şartlı talimatlar Diğer talimatlar
Assembly Kod Yazımı (devam) Listeleme talimatları Assemble edilmiş bir programda, sayfa formatı program başlığı ve alt başlıklar gibi tanımlar yazım formatını belirler. Page ve Title talimatları sayfa yapısını ve program başlığını oluşturur. Page 60,120 ; sayfa 60 satır ve 120 sütundan oluşmaktadır Title SnfOrt ; sınıf ortalamasının hesaplanması
Assembly Kod Yazımı (devam) Listeleme talimatları Satır ve sütün sayısı assembly dilinde yazılı programın yazdırılmasında bir sayfanın enini ve boyunu belirler. Normal bir A4 kağıdı için bu oran 60 satıra 80 karakterdir. Page talimatının default değeri (eğer bu talimat yazılmazsa) 50,80'dir Bu sayılar sisteme bağlı yazıcının ve dolayısıyla kullanılan kağıdın standardına bağlıdır. Geniş kağıtta geniş format, dar kağıtta ise dar format seçilir.
Assembly Kod Yazımı (devam) Listeleme talimatları Title talimatıyla programın genel olarak ne yaptığı, her listenin ikinci satırına yazdırılır. Title'den sonra program disk yada diskette hangi adla saklanıyorsa o yazılmalı ve hemen yanınada genel açıklama yapılmalıdır. Başlıklar 60 karaktere kadar yazılabilir. Altbaşlıklar'da gerekli olduğunda subttl olarak üçüncü satırda yazdırılabilir.
Assembly Kod Yazımı (devam) Veri talimatları Veri talimatları kendi aralarında 5 gruba ayrılır. Bunlar: Segment ya da prosüdür tanımlamaları Sembol tanımlamaları Veri tanımlamaları Harici (external) referanslar Assembly kontrol tanımlamaları
Assembly Kod Yazımı (devam) Segment talimatları Bu talimat ile segmentin başlangıcını ve sonunu tanımlarız. Her segmentin açılması bir anlamlı adla başlar ve aynı adla kapanır. Bir programda birden fazla segment tanımlaması yapılabilir. Segment Formatı Etiket İşlem Operand Açıklama İsim SEGMENT . ENDS Parametreler (Seçimlik) ; Segmentin başlangıcı Segmentin Sonu
Assembly Kod Yazımı (devam) Segment talimatları Bir programda bir veya birden fazla segment alanı tanımlanabilir. 4 adet segment alanı vardır.Bunlar, kod segment ile komutların yerleştirildiği, data segment ile verilerin depolandığı, ekstra segment ile sonuçların yazıldığı ve yığın segmenti ile verilerin geçici bir süre atıldığı bellek alanını ifade eder.
Assembly Kod Yazımı (devam) Segment talimatları Her segment’de align, combine ve class olmak üzere üç yardımcı operand mevcuttur.
Assembly Kod Yazımı (devam) Align Parametresi Program kodlarının belleğe yüklenmesini belli bir düzen içerisinde gerçekleştirir. Bu yerleşim çeşitleri; byte(bir byte’lık yerleşim, word(iki byte’lık yerleşim), doubleword(dört byte’lık yerleşim) ve para(16 byte’lık yerleşim, paragraf) şeklindedir. SEG1 SEGMENT WORD ; Segment 1 SEG1 ENDS
Assembly Kod Yazımı (devam) Align Parametresi Program içerisinde bu parametre kullanılmadığı zaman(default) “para” parametresi olarak 16 byte’lık yerleşim gerçekleşir.
Assembly Kod Yazımı (devam) Combine Parametresi Aynı adla tanımlanmış segmentlerin birbirleri ile arasındaki bağı (koordine eder) kurar. Parametreler ise; public, stack, common, memory ve AT operandlarıdır.
Assembly Kod Yazımı (devam) Combine Parametresi KOD SEGMENT Public ‘code’ MOV AX,25 MOV TOP,AX KOD ENDS VERİ SEGMENT Public ‘data’ TOP DB ? VERİ ENDS MOV CX,AX CIK DB ? RET MOV CIK, CX
Assembly Kod Yazımı (devam) Class Parametresi Segmentin depolanacağı bellek bölümünü belirler. KOD SEGMENT Para Public ‘Code’ VERİ SEGMENT Para Public ‘Data’ STOK SEGMENT Para Public ‘Stack’
Assembly Kod Yazımı (devam) Diğer Talimatlar PROC Talimatı Assume Talimatı END Talimatı
Assembly Kod Yazımı (devam) PROC Talimatı Özel bir amaçla yazılmış program parçalarına prosedür denir. Genel bir program içerisinde birisi ana prosedür olmak üzere birden çok prosedür bulunabilir. Prosedürler içerisinden prosedürler çağrılabilir. Alt prosedürler genelde ana prosedür içerisinden CALL komutu yardımı ile çağrılır.
Assembly Kod Yazımı (devam) PROC Talimatı Açılan her prosedür açıldığı adla birlikte kapatılır. Bunu kullanan komut ise ENDP’dir. Prosedür çağrılarının aynı segmentte mi yada başka bir segmentte mi olduğunu ifade eden FAR ve NEAR operandları mevcuttur. Segment dışı çağrılar için FAR operandı segment içi çağrılar için ise NEAR operandı kullanılır.
Assembly Kod Yazımı (devam) PROC Talimatı Prosedürlerle yazılmış bir programın programcıya sağladığı faydalar şunlardır: Tekrarlı komut yazımından kazanç sağlar. Ortak prosedürler kullanılarak komut sayısı azaltılır. Daha iyi bir program analizi sağlar. Program hataları açık bir şekilde görülür. Prosedürlerin düzeltilmesi kolaylaşır. PROCADI PROC Far/Near (ifadeler) PROCADI ENDP
Assembly Kod Yazımı (devam) ASSUME Talimatı Assume talimatı hangi segment kaydedicilerini kullanacağını tanımlar. Kullanım şekli aşağıdaki gibidir: Segment kaydedicileri CS, DS, SS ve ES’dir. Yukarıdaki kullanım şeklinde segment_kaydedicisi yerine bu dördünden biri yazılır. Segment_adı ise kullanıcı tarafından belirlenir. Bir segmente atanan segment kaydedicisi, program içerisinde daha sonraları istenildiğinde yeni bir assume ile değiştirlebilir. ASSUME Segment Kaydedicisi: Segment Adı [, ........]
Assembly Kod Yazımı (devam) END Talimatı End talimatı başlatılan işlemin sonlandırılması anlamındadır. Yanına gelen takılar ile işlevdeki hareketi sonlandırır. ENDS ile segment sonu, ENDP ile prosedür sonu, Takısız END hali ile programın sona erdiğini ifade eder.
Teşekkürler Sorular? Aslı Eyecioğlu Özmutlu aozmutlu@bartin.edu.tr