Assembly Öğreniyorum-8
ASSEMBLY DİLİ KURALLARI
Etike alanı 1-6 karakter olmalıdır.
-İlk karakter sayı/rakam olmaz.
Sayıların Temsili Derleyici Tarafından Anlaşılması
Sayı -------> Desimal
--------------------------------------------------------
$sayı --------> Hekzadesimal
sayıH --------> Hekzadesimal
---------------------------------------------------------
@sayi --------> Oktal
sayiO --------> Oktal
sayiQ --------> Oktal
--------------------------------------------------------
%sayi --------> Binary
sayiB --------> Binary
# Kendisinden sonra gelenin data olduğunu gösterir. Ve immediate adresleme kullanılır.
Komut Kümesi : 6802 mikroişlemcisinin komut kümesi bir, iki ve ya üç bytelık komutlardan oluşur. Bir komutun uzunluğu komuta ve adresleme çeşidine bağlı olup, ilk byte komutu ve kullanılan adresleme çeşidini belirlemeye yeterlidir. 6802 mikroişlemcisinin 74 komutu bütün geçerli adresleme çeşitleri için onaltılık tabanda operasyonel kodlara sahiptir.
Adresleme Modları :
7 çeşit adresleme modu vardır :
- Immediate Adresleme
- Relative Adresleme
- Inherint Adresleme (Anlaşılır, içerilmiş)
- Indexed Adresleme
- Akümülatör Adresleme
- Extended Adresleme
- Direct Adresleme
1. Immediate (Anında) Adresleme : Bu yöntemle işlenecek olan bilgi, komutun 2inci byte'nda yer alır. Anında adreslemeyi assembly dili yazılımında belirlemek için verinin önüne # işareti konur.
Lda A #$ F1
------- --------------------- ----- -----------
Etiket Komut Alanı Veri Açıklama
Alanı Alanı Alanı
"A" akümülatörünü F1 verisi ile yükler. A'nin içinde F1 yer alır.
2. Indisli Adresleme : Indis kayıtçısı kullanarak adreslemenin yapılmasından dolayı bu yönteme indisli adresleme yöntemi denmiştir. Komuttan sonra gelen sayı indis kayıtçısındaki sayıya eklenerek, gerçek data adresi belirlenir. Belirlenen bu adresten data okunur veya yazılır. İndisli adresleme yöntemini belirtmek için komut ve datadan sonra 'x' yazılır.
Lda A $ 00,x
------- --------------------- ----- -----------
Etiket Komut Alanı Veri Açıklama
Alanı Alanı Alanı
"A" akümülatörünü, index registerdaki değere "00" ekleyerek bulunduğu adresin içindeki data ile yükle.
3. Doğrudan Adresleme : Doğrudan adresleme yönteminde komutun operasyonel kodundan sonra işlenecek olan verinin bulunduğu adres yazılır. Bilindiği üzere 16 bitlik adresler 0000.....FFFF arasındadır. Doğrudan adreslemede adres 8 bit kullanılarak, 8 bitlik adreslere ulaşılırken fazladan yer kaplamamak için 0000....00FF arasındaki adresler, 00...FF şeklinde kullanılır. Yani doğrudan adreslemede komuttan sonra gelen adres değeri 1 byte'dır.
Lda A $ F1
------- --------------------- ----- -----------
Etiket Komut Alanı Veri Açıklama
Alanı Alanı Alanı
"A" akümülatörünü F1 adresinin içindeki veri ile yükle.
*Doğrudan adreslemede bir belirteç yoktur.
4. Genişletilmiş Adresleme : Genişletilmiş adreslemede veri alanı 16 bittir. Adresleme komutları 3 byte'dan oluşur.
Lda A $ 8520
------- --------------------- ------- -----------
Etiket Komut Alanı Veri Açıklama
Alanı Alanı Alanı
5. Anlaşılır Adresleme : İşlenecek olan ver komutun kendisi ile birlikte verilir. Böylece işlenecek olan bilgi herhangi bir bellek bölgesinde aranmaz. Bu şekilde 6802 mikroişlemcisinde 25 komut vardır.
Örnek : ABA
CLC
6. Relatif Adresleme : Sadece dallanma komutlarında kullanılan bu adresleme türünde, ulaşılması gereken adres program sayıcısının o andaki içeriğine bağlı olarak bulunur. Dallanma komutları 2 Byte'dan oluşur. Birinci byte işlem byte'tıdır. İkinci byte ise öteleme byte olup, program sayacına eklenir.
Örnek : BEQ 08 ---> İleriye doğru 8 basamak atlanır.
BEQ F7 ---> Geriye doğru 7 adım dallanır.
FF-F7=08
00..........7F 80............FF
¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯
+127 -128
ileriye dallanır. geriye dallanır.
Benzer konu yok.
Bu konu 471 gün önce yazıldı.
Bu yazıyı beğendin mi?
Henüz geri bildirim yok.


(Bu yazı toplam +2 puan toplarken, 2 kadar kişi oy kullandı.)


























Mayıs 30th, 2009 - 03:08
pek bulunmayan bir konu, uğraştığınız belli:) güzel bir kaynak olmuş. sanırım oktal sayı gösteme şeklinde bir sorun var;
3 değişik şekilde gösteriliyor sayının oktal olduu bildiğim kadrıyla:
@sayı,
sayıO,
sayıQ olarak. “Q” yerine “@” yazılmış :) basit(önemsiz) olsada uyarmak istedim bu güzel makalede eksiklik olsun istemem;) …
Mayıs 30th, 2009 - 03:34
Evet haklısınız, gözümden kaçmış. Uyarı için teşekkür ederim gerekli düzenlemeyi hemen yapıyorum. :)
Mayıs 31st, 2009 - 12:52
Ben de teşk. ederim dikkate aldığın ve kısa zamanda düzelttiğin için, yakın bir zamanda “www.kemalonur.com” isimli sitem için “alıntı” yapmayı düşünüyorum bu konu hakkında sizden(alıntı için izin vermişsiniz) :) Gösterdiğiniz özenin devamını dilerim…