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
Yorum Gönder