Assembly Alt Rutin ve Kaydırma Örnekleri

 1. Örnek

--Assembly kodu

ORG 100 / Programın başlangıcı 100 belirtilmiştir

LDA x   / x'i AC'ye yükle

BSA KAYDIR / KAYDIR alt rutinine dallan

STA x / x'i sakla

LDA z / z'yi AC'ye yükle

BSA KAYDIR / KAYDIR alt rutinine dallan

STA z / z'yi sakla

HLT / Bilgisayarı durdur

x, HEX ABCD / Onaltılı operand x

y, HEX DBDB / İkili operand y

KAYDIR, HEX 0 / Dönüş adresini buraya saklar

CIL / Dairesel sola 1 kez kaydır

AND MSK / AC (16) yı 0 yap

BUN KAYDIR / Ana programa dönüş

MSK, HEX FFFE / Mask operandı: en sol biti 0 yapar

END / Program sonu

Assembly kodu--


Bu kodların her biri, işlemcinin çeşitli işlemleri gerçekleştirmesi için talimatlar veriyor. Aşağıda her satırı tek tek açıklıyorum:


1. ORG 100:

   - Anlamı: Programın bellekte başlayacağı adresi belirtir. Bu durumda programın başlangıç adresi 100 olarak belirlenmiştir.


2. LDA x:

   - Anlamı: x adresindeki veriyi AC (Accumulator) register'ına yükler.

   - Açıklama: x'in değeri AC register'ına yüklenir.


3. BSA KAYDIR:

   - Anlamı: KAYDIR alt rutinine dallan ve dönüş adresini sakla.

   - Açıklama: Program KAYDIR alt rutinine dallanır ve dönüş adresi saklanır.


4. STA x:

   - Anlamı: AC register'ındaki veriyi x adresine saklar.

   - Açıklama: AC register'ındaki değer x adresine kaydedilir.


5. LDA z:

   - Anlamı: z adresindeki veriyi AC register'ına yükler.

   - Açıklama: z'in değeri AC register'ına yüklenir.


6. BSA KAYDIR:

   - Anlamı: KAYDIR alt rutinine dallan ve dönüş adresini sakla.

   - Açıklama: Program KAYDIR alt rutinine dallanır ve dönüş adresi saklanır.


7. STA z:

   - Anlamı: AC register'ındaki veriyi z adresine saklar.

   - Açıklama: AC register'ındaki değer z adresine kaydedilir.


8. HLT:

   - Anlamı: Bilgisayarı durdurur.

   - Açıklama: Programın yürütülmesini durdurur.


9. x, HEX ABCD:

   - Anlamı: x değişkenine onaltılık ABCD değerini atar.

   - Açıklama: x'in değeri onaltılık ABCD olarak ayarlanır.


10. y, HEX DBDB:

    - Anlamı: y değişkenine onaltılık DBDB değerini atar.

    - Açıklama: y'in değeri onaltılık DBDB olarak ayarlanır.


11. KAYDIR, HEX 0:

    - Anlamı: KAYDIR alt rutinine başlangıç adresi olarak onaltılık 0'ı atar.

    - Açıklama: KAYDIR alt rutini başlangıç adresi olarak 0'ı kullanır.


12. CIL:

    - Anlamı: AC içeriğini dairesel sola 1 kez kaydırır.

    - Açıklama: AC içeriği bir bit sola kaydırılır, en yüksek bit en düşük bite taşınır.


13. AND MSK:

    - Anlamı: AC register'ındaki değer ile MSK (mask) değerini bit düzeyinde AND işlemi yapar.

    - Açıklama: AC register'ındaki değer ile MSK'nın değeri AND işlemi uygulanarak AC'ye yüklenir.


14. BUN KAYDIR:

    - Anlamı: KAYDIR alt rutinine koşulsuz dallan.

    - Açıklama: Program koşulsuz olarak KAYDIR alt rutinine dallanır.


15. MSK, HEX FFFE:

    - Anlamı: MSK değişkenine onaltılık FFFE değerini atar.

    - Açıklama: MSK'nın değeri onaltılık FFFE olarak ayarlanır. Bu değer tüm bitleri 1 olan ve sadece en düşük biti 0 olan bir mask değeri ifade eder.


16. END:

    - Anlamı: Programın sonunu belirtir.

    - Açıklama: Programın sona erdiğini belirtir ve derleyiciye buradan sonrasını işlememesi gerektiğini söyler.

Bu program, AC register'ına x ve z adreslerindeki değerleri yükleyip, bu değerlerle belirli işlemler yaparak sonuçları tekrar aynı adreslere kaydeden ve belirli bir rutine dallanarak işlemler gerçekleştiren bir yapıya sahip. "KAYDIR" alt rutini, dönüş adresini saklayarak çağrılıyor ve işlemler tamamlandıktan sonra ana programa dönüyor. "CIL" komutu ile AC register'ındaki değer dairesel sola kaydırılıyor ve "AND MSK" komutu ile belirli bit düzeyinde işlemler yapılıyor.


2. Örnek

Bu programda, bir değeri sola kaydırmak için bir "KAYDIR" alt rutini kullanacağız. Programın ana kısmında iki değeri yükleyip kaydırdıktan sonra, sonuçları saklayacağız ve programı durduracağız.


--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--


Programın Açıklaması

- ORG 100: Programın başlangıç adresini 100 olarak ayarlar.

- START, LDA x: x değişkeninin değerini AC (Accumulator) register'ına yükler.

- BSA KAYDIR: KAYDIR alt rutinine dallanır ve dönüş adresini saklar.

- STA x: AC register'ındaki kaydırılmış değeri x adresine kaydeder.

- LDA y: y değişkeninin değerini AC register'ına yükler.

- BSA KAYDIR: KAYDIR alt rutinine dallanır ve dönüş adresini saklar.

- STA y: AC register'ındaki kaydırılmış değeri y adresine kaydeder.

- HLT: Programı durdurur.

- x, HEX ABCD: x değişkeninin başlangıç değeri olarak onaltılık ABCD'yi atar.

- y, HEX DBDB: y değişkeninin başlangıç değeri olarak onaltılık DBDB'yi atar.

- KAYDIR, HEX 0: KAYDIR alt rutinine başlangıç adresi olarak onaltılık 0'ı atar.

- CIL: AC register'ındaki değeri dairesel olarak sola kaydırır.

- BUN RET: Dönüş adresine koşulsuz dallanır.

- RET, HEX 0: Dönüş adresini saklamak için kullanılan alan.

- END: Programın sonunu belirtir.


Bu program, iki değişkeni (x ve y) kaydırmak için bir alt rutin kullanarak kaydırma işlemlerini gerçekleştirir ve sonuçları tekrar aynı adreslere kaydeder. "KAYDIR" alt rutini, AC register'ındaki değeri dairesel olarak sola kaydırır ve ardından ana programa geri döner.

Yorumlar

Sitedeki popüler yayınlar:

Algoritma Mantığı Nedir? Algoritma Türleri Nelerdir?

C++ For Döngüsü

Kontrol Sistemleri