Assembler ile Aritmatik Kaydırma
Negatif sayıların gösterimine bağlı olarak temel bilgisayarda 2'li komplement gösterimi kullanılır. En soldaki işaret birinin aynı kalmalıdır.
Aritmatik Sağ Kaydırma
- Bu durumda, E FF'sine işaret biti ile aynı değer verilir.
CLE / E=0
SPA / Eğer AC>0 (pozitif ise) atla, E=0
CME / AC<0 (negatif ise) E=1
CIR / E ve AC'yi dairesel olarak kaydır
Aritmatik Sola Kaydırma
- En az değerli bit'in olduğu yerden 0 eklenmeli.
- Bu E=0 tanımlanarak yapılabilir.
- İşaret bit'i kaydırma sırasında değişmemelidir.
- İşlem sonrasında E bit'i ve işaret bit'i karşılaştırılmalıdır.
- Eğer iki değer aynı ise işlem doğru olarak tanımlanmıştır.
- Fakat iki işlem farklıysa taşma(overflow) olmuş demektir.
- Kaydırma yapılmadan önceki sayı değeri çok büyük olduğundan, kaydırma sonucu akümülatör AC kapasitesi yetersiz kalır.
Alt Rutin (Subroutine)
Bir programın belirli bir işlevi yerine getirmek için tekrar tekrar çağrılabilen bağımsız bir kod bloğudur. Ana programdan ayrılmıştır ve gerektiğinde ana program tarafından çağrılır. Alt rutinler, kodun yeniden kullanılabilirliğini artırır, programın okunabilirliğini ve bakımını kolaylaştırır.
Alt Rutinlerin Avantajları
1. Kodun Yeniden Kullanımı: Aynı kodun birden fazla yerde kullanılmasına olanak tanır, bu da kodun tekrar yazılmasını engeller.
2. Modülerlik: Programı daha küçük, yönetilebilir parçalara ayırır, böylece programın okunabilirliği ve bakımı kolaylaşır.
3. Hata Ayıklama Kolaylığı: Küçük ve bağımsız kod blokları, hata ayıklama sürecini basitleştirir.
4. Geliştirme Hızı: Tekrar kullanılabilir kod parçaları, geliştirme sürecini hızlandırır.
Alt Rutinlerin Kullanımı
Alt rutinler genellikle dört ana adımdan oluşur:
1. Tanımlama: Alt rutinin başlama ve bitiş noktalarını belirten komutlarla kodlanması.
2. Çağırma: Ana programın, alt rutini çağırmak için özel bir komut kullanması.
3. Yürütme: Alt rutinin görevini yerine getirmesi.
4. Geri Dönme: Alt rutinin tamamlanmasının ardından ana programa geri dönmesi.
Alt Rutinlerin Yapısı
Alt rutinin yapısı genellikle şu şekilde düzenlenir:
- Giriş (Entry Point): Alt rutinin başladığı yer.
- Kod Bloğu: Alt rutinin görevini yerine getiren komutlar.
- Çıkış (Exit Point): Alt rutinin sona erdiği ve ana programa geri döndüğü yer.
Örnek: Assembler Kodunda Alt Rutin Kullanımı
İşte yukarıdaki örnekten yola çıkarak bir alt rutinin nasıl kullanılabileceğini gösteren basit bir Assembler kodu:
--assembly kodu
ORG 100 / Programın başlangıcı 100 adresinde
/ Ana Program
START, LDA x / x'in değerini AC'ye yükle
BSA KAYDIR / KAYDIR alt rutinine dallan, AC'yi kaydır
STA x / Kaydırılmış x'i sakla
LDA y / y'nin değerini AC'ye yükle
BSA KAYDIR / KAYDIR alt rutinine dallan, AC'yi kaydır
STA y / Kaydırılmış y'yi sakla
HLT / Programı durdur
/ Veri Bölümü
x, HEX ABCD / x değişkeni, başlangıç değeri ABCD
y, HEX DBDB / y değişkeni, başlangıç değeri DBDB
/ Alt Rutin Bölümü
KAYDIR, HEX 0 / KAYDIR alt rutini başlangıcı
CIL / AC'yi dairesel sola 1 kez kaydır
BUN RET / Ana programa geri dön
RET, HEX 0 / Dönüş adresini saklamak için kullanılan alan
END / Program sonu
assembly kodu--
Alt Rutinlerin Temel Bileşenleri
- Giriş Noktası (Entry Point): Alt rutinin başladığı yer. Örneğin, `KAYDIR, HEX 0`.
- Dönüş Adresi Saklama (Return Address Storage): Alt rutin çağrıldığında ana programın devam edeceği adresin saklandığı yer. Örneğin, `RET, HEX 0`.
- Kod Bloğu: Alt rutinin işlevini yerine getiren komutlar. Örneğin, `CIL` komutu ile AC'yi kaydırma işlemi.
- Çıkış Noktası (Exit Point): Alt rutinin ana programa geri döndüğü yer. Örneğin, `BUN RET` komutu.
Alt Rutinlerin Kullanımında Dikkat Edilmesi Gerekenler
1. Dönüş Adresi: Alt rutinin ana programa doğru bir şekilde dönebilmesi için dönüş adresinin doğru saklanması ve kullanılması önemlidir.
2. Bellek Yönetimi: Alt rutinlerin bellek kullanımı dikkatle yönetilmelidir, özellikle sınırlı bellek alanına sahip sistemlerde.
3. Geçici Veri (Temporary Data): Alt rutinler, çağrılar arasında geçici veriyi korumak için özel teknikler kullanabilir, örneğin register'lar veya stack (yığın) kullanımı.
Alt rutinler, karmaşık programların daha yönetilebilir ve sürdürülebilir hale getirilmesinde kritik bir rol oynar. Programcılar, alt rutinleri kullanarak kod tekrarını azaltabilir, kodun modülerliğini artırabilir ve hata ayıklama sürecini basitleştirebilir.
Assembler kod örneği için teşekkürler.
YanıtlaSilAssembler ile Alt Rutin ve Kaydırma Örnekleri:
YanıtlaSiltraotora.net/2024/06/assembly-alt-rutin-ve-kaydirma-ornekleri.html