Gömülü Sistemler - Adresleme Modları
Bir addressing modebelirli bir hafıza konumuna nasıl hitap ettiğinizi ifade eder. Bu talimatı yürütmek için aşağıdaki gibi beş farklı yol veya beş adresleme modu vardır -
- Anında adresleme modu
- Doğrudan adresleme modu
- Doğrudan adresleme modunu kaydedin
- Dolaylı adresleme modunu kaydedin
- Dizine alınmış adresleme modu
Anında Adresleme Modu
Bir örnekle başlayalım.
MOV A, #6AH
Genel olarak yazabiliriz,
MOV A, #data
Olarak adlandırılır immediate çünkü 8 bitlik veri hemen toplayıcıya (hedef işlenen) aktarılır.
Aşağıdaki çizim, yukarıdaki talimatı ve uygulanmasını açıklamaktadır. İşlem kodu 74H, 0202 adresine kaydedilir. Veri 6AH, program belleğindeki 0203 adresinde saklanır. İşlem kodu 74H okuduktan sonra, bir sonraki program hafıza adresindeki veriler toplayıcı A'ya transfer edilir (E0H, akümülatörün adresidir). Komut 2 bayt olduğu ve bir çevrimde yürütüldüğü için, program sayacı 2 artırılacak ve program belleğinin 0204'ünü gösterecektir.
Note- 6AH'den önceki '#' sembolü, işlenenin bir veri (8 bit) olduğunu gösterir. '#' Olmadığında, onaltılık sayı adres olarak alınacaktır.
Doğrudan Adresleme Modu
Bu, bir operandı ele almanın başka bir yoludur. Burada verinin adresi (kaynak veri) bir işlenen olarak verilmiştir. Bir örnek alalım.
MOV A, 04H
Kayıt bankası # 0 (4. kayıt) 04H adresine sahiptir. MOV komutu yürütüldüğünde, 04H yazmacında saklanan veriler toplayıcıya taşınır. 04H kaydı 1FH verilerini tuttuğundan, 1FH akümülatöre taşınır.
Note- Acil modun aksine, doğrudan adresleme modunda '#' kullanmadık. '#' Kullanmış olsaydık, 04H veri değeri 1FH yerine akümülatöre aktarılırdı.
Şimdi aşağıdaki resme bir göz atın. Komutun nasıl yürütüldüğünü gösterir.
Yukarıdaki çizimde gösterildiği gibi, bu, tamamlamak için 1 döngü gerektiren 2 baytlık bir talimattır. Bilgisayar 2 artırılacak ve 0204'ü gösterecektir. MOV A komutu için işlem kodu, adres E5H'dir. 0202'deki talimat yürütüldüğünde (E5H), akümülatör aktif hale getirilir ve veri almaya hazır hale gelir. Daha sonra PC 0203 olarak bir sonraki adrese gider ve kaynak verinin (akümülatöre aktarılacak) bulunduğu 04H lokasyonunun adresini arar. 04H'de, kontrol 1F verisini bulur ve akümülatöre aktarır ve dolayısıyla yürütme tamamlanır.
Doğrudan Adresleme Modunu Kaydedin
Bu adresleme modunda, yazmaç adını doğrudan kullanırız (kaynak işlenen olarak). Bir örnek yardımıyla anlamaya çalışalım.
MOV A, R4
Bir seferde, kayıtlar R0'dan R7'ye kadar değerler alabilir. Bu tür 32 kayıt vardır. Kayıtları adreslemek için sadece 8 değişkenli 32 kayıt kullanmak için, kayıt bankaları kullanılır. 0'dan 3'e kadar adlandırılmış 4 kayıt bankası vardır. Her banka, R0'dan R7'ye kadar adlandırılan 8 kayıttan oluşur.
Bir seferde tek bir kayıt bankası seçilebilir. Kayıt bankasının seçimi, birSpecial Function Register (SFR) adlı Processor Status Word(PSW). PSW, her bitin gerektiği gibi programlanabildiği 8 bitlik bir SFR'dir. Bitler, PSW.0'dan PSW.7'ye kadar belirlenir. Kayıt bankalarını seçmek için PSW.3 ve PSW.4 kullanılır.
Şimdi, nasıl çalıştığını net bir şekilde anlamak için aşağıdaki resme bir göz atın.
Opcode EC, MOV A, R4 için kullanılır. İşlem kodu 0202 adresinde saklanır ve yürütüldüğünde, kontrol doğrudan ilgili kayıt bankasının (PSW'de seçilen) R4'e gider. Kayıt bankası # 0 seçilirse, kayıt bankası # 0'ın R4'ünden gelen veriler toplayıcıya taşınacaktır. Burada 2F, 04H'de saklanır. 04H, 0 kayıt bankasının R4 adresini temsil eder.
Veri (2F) hareketi kalın olarak vurgulanmıştır. 2F, 0C H veri belleği konumundan toplayıcıya aktarılıyor ve noktalı çizgi olarak gösteriliyor. 0CH, 1 numaralı sicil bankasının Kayıt 4 (R4) adres konumudur. Yukarıdaki talimat 1 bayttır ve tam yürütme için 1 döngü gerektirir. Bunun anlamı, kayıt doğrudan adresleme modunu kullanarak program belleğini kaydedebilirsiniz.
Dolaylı Adresleme Modunu Kaydedin
Bu adresleme modunda, verilerin adresi kayıt defterinde işlenen olarak saklanır.
MOV A, @R0
Burada R0 içindeki değer, akümülatöre aktarılacak verileri tutan bir adres olarak kabul edilir. Example: R0, 20H değerine sahipse ve 2FH verisi 20H adresinde saklanıyorsa, bu komutun yürütülmesinden sonra 2FH değeri akümülatöre aktarılacaktır. Aşağıdaki resme bakın.
Yani opcode için MOV A, @R0E6H'dir. Kayıt bankası # 0'ın seçildiği varsayıldığında, kayıt bankası # 0'ın R0 verisi 20H'yi tutar. Program kontrolü, 2FH verisini bulduğu 20H'ye hareket eder ve 2FH'yi toplayıcıya aktarır. Bu 1 baytlık bir talimattır ve program sayacı 1 artar ve program belleğinin 0203'üne hareket eder.
Note- Sadece R0 ve R1'in dolaylı adresleme talimatı oluşturmasına izin verilir. Başka bir deyişle, programcı @ R0 veya @ R1 kullanarak bir talimat oluşturabilir. Tüm kayıt bankalarına izin verilir.
İndeksli Adresleme Modu
Dizine alınmış adresleme modu kavramını anlamak için iki örnek alacağız. Aşağıdaki talimatlara bir göz atın -
MOVC A, @A+DPTR
ve
MOVC A, @A+PC
burada DPTR veri işaretçisi ve PC program sayacıdır (her ikisi de 16 bitlik kayıtlardır). İlk örneği ele alalım.
MOVC A, @A+DPTR
Kaynak işlenen @ A + DPTR'dir. Bu konumdaki kaynak verileri içerir. Burada akümülatörün mevcut içeriği ile DPTR içeriğini ekliyoruz. Bu ek, kaynak verilerin adresi olan yeni bir adres verecektir. Bu adresin gösterdiği veriler daha sonra toplayıcıya aktarılır.
İşlem kodu 93H'dir. DPTR, 01FE değerine sahiptir; burada 01, DPH'de (daha yüksek 8 bit) ve FE, DPL'de (daha düşük 8 bit) bulunur. Akümülatör, 02H değerine sahiptir. Ardından 16 bitlik bir ekleme yapılır ve 01FE H + 02H, 0200 H ile sonuçlanır. 0200H konumundaki veriler akümülatöre aktarılır. Akümülatör içindeki önceki değer (02H), 0200H'den yeni verilerle değiştirilecektir. Akümülatördeki yeni veriler şekilde vurgulanmıştır.
Bu, yürütme için 2 döngülü gerekli olan 1 baytlık bir talimattır ve bu komut için gereken yürütme süresi, önceki komutlara kıyasla (her biri 1 döngü) yüksektir.
Diğer örnek MOVC A, @A+PCyukarıdaki örnekle aynı şekilde çalışır. Akümülatör ile DPTR eklemek yerine, hedef adresi elde etmek için burada program sayacı (PC) içindeki veriler akümülatör ile eklenir.