Elektronik / Elektronik Kaynakları/

6502 Mikroişlemcisi Hakkında Türkçe Bilgi

Sponsorlu Bağlantılar

Mikroişlemcilerin öğretilmesinde, 8-bitlik kaydedicilere sahip olması, yapısının basit ve mikroişlemci programlama mantığının kolay öğrenilebilmesi sebebiyle 6502 mikroişlemcisi hedef alınmıştır. 6502 mikroişlemcisinin 8-bit mikroişlemcilerden 8085, Z-80 ve 6800 içerisinde, komut kümesi ve adresleme modları açısından daha üstün özelliklere sahip olmasından dolayı tercih etkenidir.

Motorola firmasından ayrılarak MOS Technology şirketini kuran mühendislerce 1975 yılında NMOS teknolojisi kullanılarak üretilen 8-bitlik 6502 mikroişlemcisi bellek ve giriş/çıkış birimleriyle birlikte bir bilgisayarı oluşturacak özelliktedir.

Apple II, Atari ve Commodore gibi ilk gerçek bilgisayarlarda kullanılan bu işlemci 56 farklı tipte komutu işleyebilir. Bu komutların sayısı yaklaşık 13 adresleme türünün kullanılmasıyla 151 adete çıkabilir. 16 hatlı adres yoluna sahip olan işlemcinin hat giriş ve çıkışlarında 8080A ve 6800 işlemcilerin aksine, üç-durumlu devreler kullanılmaz ve sadece transistör-transistör mantığı (TTL) ile desteklenir.

6502 mikroişlemcisi üç-durumlu devre kullanmadan DMA’ya (Doğrudan Bellek Erişimi) erişemez. Adres yolunun aksine veri yolu üç-durumlu devrelerle tamponlanmıştır. 6502 mikroişlemcinin diğer versiyonu 6502A 2 MHz’de çalışan birişlemci olup, 65C02 ise CMOS teknolojisiyle yapılmış ve birkaç komut daha eklenmiş versiyonudur.

Aşağıda MOS Tecnology firmasının 6502 işlemcisi ve ZİLOG firmasının Z80 işlemcisi görülmektedir;

6502-mikroislemci-turkce-bilgi-datasheet_0

6502 işlemcisinin üzerinde birbiri ile çakışmayan iki fazlı saat sinyali üreten osilatörü ve saat sürücüleri vardır. Bu sürücü devreler 8080A ve 6800 işlemcilerinde işlemci dışındadır. Osilatör devresi dışardan RC birleşimli devreden veya fazla saat kararlılığı isteniyorsa kristal kontrollü devreden sağlanan giriş sinyaline ihtiyaç duyar. 37. ayaktan uygulanan bu sinyalle işlemcinin dahili devreleri 3. ayaktan Q1 ve 39. ayaktan q2 sinyali üretir.

Ayak Bağlantıları

Şekilde, 6502 mikroişlemcisinin ayak bağlantılarını göstermektedir;

6502-mikroislemci-turkce-bilgi-datasheet_1
Şekil -6502 mikroişlemcisinin ayak bağlantıları

Adres yolu (A0-A15) : İşlemcinin 64KB’lık alanı adresleyebilecek şekilde 16 adet adres hattı vardır. Her bir ayak, standart TTL ve 130pF’lık bir yükü sürme yeteneğine sahiptir.

Veri yolu (DO-D7) : Mikroişlemcinin diğer birimlerle bilgi alış/verişini sağlayan iki yönlü sekiz adet veri yolu mevcuttur. Her veri yolu hattına bağlı üç-durumlu tampon vardır.

Güç girişi (8. ayak) : 8 no’lu ayaktan +5V’luk gerilimle çalışır. İki toprak bağlantısı vardır (1.ve 21.ayak).

Saat sinyalleri (3. ve 39. ayaklar) : işlemcide üretilen iki fazlı birbiriyle çakışmayan saat sinyali, dahili ve harici bütün çalışmaları senkronize eder. Bu sinyaller kullanıcıya 3. ayaktan Q1 ve 39. ayaklan Q2 olarak sağlanır. Saat sinyalinin frekansı 37 no’lu uca dışardan bağlanan elemanlarla belirlenir.

6502-mikroislemci-turkce-bilgi-datasheet_2
Şekil 6502 kristal kontrollü osilatör devresi

6502-mikroislemci-turkce-bilgi-datasheet_3
Şekil 6502 Q1 ve Q2 saat sinyalleri

6502’nin 100 KHz’den 1 MHz’e kadar frekans sahası vardır. Bu frekans alanı, 1.0 µs ile 10 µs arasında çevrim zamanını gösterir. 6502 mikroişlemcisinin 1 MHz, 2 MHz ve 3 MHz’lik versiyonları vardır. 1 MHz’lik bir işlemcide bir saykıllık veya çevrimlik iş 1µs çeker. MHz’in kargılığı µs’dir.

Kontrol Yolu Sinyalleri

6502 mikroişlemcisinin doğrudan zamanlama ve kontrol bölümüne bağlı. IRQ, NMI, RES ve SO adlı beş adet kontrol giriş hattı, SYNC ve R/W adlı iki kontrol çıkış hattı vardır. Her mikroişlemci kendine has G/Ç kontrol sinyallerine sahiptir.

Bütün bu tür özellikler üretici firmanın el-kitaplarında belirtilmektedir. İşlemcinin iki ayağı kesme talebi alır. Bunlar kesme talebi (4. ayak) ve önlenemez kesme talebidir (6. ayak). 40 no’lu ayak ise, işlemciyi normal işleyişinden alıkoyan RESET ucudur. Bu çok önemli ve ileride işlevleri anlatılacak olan kontrol hatlarına tek tek bakılırsa:

IRQ (4. ayak) : IRQ önlenebilir kesme ayağıdır, işlemci, IRQ ayanına herhangi bir G/Ç cihazından gelen bir düşük düzeyli sinyalle harekete geçer. Bu tip bir sinyal alınır alınmaz kesme yetkisizlendirme bayrağının 0 olması şartı ile, işlemci program sayıcısına otomatik olarak FFFE ve FFFF adresindeki 16bitlik yeni adres bilgisini yükler.

NMI (6. ayak) : Bu uç diğet kesmenin tam tersi olan ve önlenemeyen bir kesme türüdür. Bu ayaktaki kesme talebi programcı tarafından yetkisizlendirilemez.

RES (40. ayak) : Bu uç düşük düzeydeyken, işlemci okuma ve yazma işlemini yasaklar. RES’deki sinyalin pozitife-gidiş kenarında işlemci bütün dahili elemanlarını yeniden hazır hale gelirir.

RDY (2. ayak) : RDY ayağı bir komutun işlenmesindeki gecikmelerde kullanılır. Eğerbu hat düşük düzeye çekilirse, işlemci bekleme durumundadır, Bu işlem yeterli hızı bulunmayan bellek veya G/Ç cihazlarında fayda sağlar.

SO (38. ayak) : Bu ayak taşma bayrağının kurulmasında kullanılır. Eğer S0 ayağında yüksekten düşüğe bir geçiş varsa, işlemci taşma bayrağını mantıksal 1’ler. Çoğu uygulamalarda kullanılmayan bu uç, ileride G/Ç cihazlarında kullanılmak için tasarlanmıştır.

SVNC (7. ayak) : SYNC, senkronizasyon-eşzaman kelimesinin kısaltılmışıdır. İşlemci bir komut kodu alıp getirdiği zaman bu uç daima yüksek düzeye çıkar. Bu durumda bir çevrim bekledikten sonra işlenenin alınması sırasında düşük düzeye iner. SYNC ayağıişlemcideki hataları bulma işleminde kullanılır.

R/W (34. ayak) : İşlemcideki o andaki verinin yönünü tayin eder. Bu ucun yüksek düzeyde olması (mantıksal 1). işlemcinin bellek veya G/Ç elemanlarından veri okuyacağını gösterirken, düşük olması (mantıksal 0) bu elemanlara veri yazıyor anlamını gösterir.

6502 İç Yapısı

Bu birimler tüm işlemcilerde aynı mantıkla çalışmaktadır. Sadece ayrıntılar mimarisinde gizli olduğundan, programcının ALU ve kontrol birimi hakkında fazla bilgi sahibi olmasına gerek yoktur. Hedeflenen mikroişlemciye program yazarken programcının bilmesi gereken esas donanım elemanları kaydedicilerdir. Çünkü, assembly dilinde doğrudan işlemciye program yazarken programcının kullanabileceği, hangi özellikte ve kaç tane kaydedici var bilmesi gerekir. Bundan dolayı 6502 mikroişlemcisinin kaydedicileri tek tek ele alınmıştır.

6502 Kaydedicileri

Mikroişlemci içerisinde temeli flip-flaplara dayanan kaydıran kaydediciler vardır.Kaydediciler, verinin manevrasında kullanılan bir birimlik bellek parçalarıdır.

6502-mikroislemci-turkce-bilgi-datasheet_4

CPU içerisindeki bu kaydediciler yaptıkları işlere göre gruplara ayrılmaktadır. Bunlar;

Genel amaçlı kaydediciler, özel amaçlı kaydediciler ve kullanıcıya veya programcıya gözükmeyen gizli kaydedicilerdir. Genel amaçlı kaydediciler, akümülatör ve indis kaydedicileridir.

İndis kaydedicileri de kendi arasında X ve Y olmak üzere ikiye ayrılırlar. Özel amaçlı kaydediciler adandıkları işe göre adlandırılmışlardır. Bunlar; program sayıcısı (PC), yığın işaretçisi (SP) ve bayraklardır (P veya PSW).

Programcıya veya kullanıcıya gözükmeyen gruba ise, komut kaydedicisi (IR), veri kaydedicisi (DR), veri adres kaydedicisi (DAR), bellek adres kaydedicisi (MAR) ve bellek veri kaydedicisidir(MBR).

Kaydediciler, bellek veya doğrudan G/Ç cihazlarından gelen veri veya komutları geçici olarak üzerlerinde saklarlar.

6502 Akümülatör

A adıyla anılan 8-bitlik bu kaydedici, işlemcinin veriyi ele almada kullandığı ana elemanıdır. İşlemciye harici cihazlardan giren veri önce bu kaydediciye alınır ve işlendikten sonra dağıtımı yapılır. Ayrıca Arilmetik ve Mantık Birimi’nin temel kaydedicisidir. ALU’da işlem görecek veriler önce bu kaydediciye alınır ve işlem yapıldıktan sonra sonuç yine bu kaydediciye alınır.

Şekilde tamamı görülen kaydediciler sekreterler grubu olarak düşünülürse, A kaydedicisi bunların başı yani, baş katibi olarak tanımlanabilir. Komut kümesinin içerisindeki komutlarda en çok ima edilen kaydedici Akümülatör’dür. A kaydedicisi aritmetik işlemlerden, toplama, çıkarma, sağa ve sola kaydırma, mantıksal işlemlerin tümü ve veri aktarımında baş rolü oynar.

İndis Kaydedicileri

8-bitlik X ve Y adlı iki indis kaydedicisi, bellekteki toplu verilere veya veri tablolarına erişmede kullanılırlar. Bunlardan X veya Y, bellekteki veriye erişimde kullanılırken diğeri sayaç vazifesi görebilmekledir. İndis kaydedicilerinin belli başlı üç ana görevi vardır. Bunlar:

Hesaplamalarda ara değerlerin geçici olarak saklandığı yerdir. Meselâ, verilerdeki negatif veya pozitif sayıların bulunmasında indis kaydedicilerden birisi verinin yerinin bulunmasında indisçi olarak çalışırken diğeri, negatif veya pozilif sayıların toplamını tutabilir.

Program döngülerinde ve zamanlama uygulamalarında bir sayıcı olarak kullanılabilir. Programın herhangi bir yerinde zaman gecikmesi istenildiğinde indis kaydedicilerden birisine gecikme zamanı kadar değer atılır. Daha sonra bu değer bir döngü içerisinde azaltılarak sıfırlanana dek sürdürülür.

6502-kod

Program parçasında işlenen komutların ve döngü sayısının hesaba katıldığı gecikme zamanı hesaplanarak X indis kaydedicisine atılır. Daha sonra bu değer her defasında bir azaltılarak döngü içerisindeki komutlar işletilir. X’deki değer sıfıra ulaştığında program durur ve burada belli bir zaman gecikmesi söz konusu olur.

Bellekte depolanmış dizi halindeki veri tablosu veya veri bloğu üzerinde bir indisçi gibi kullanılabilir.

Bu işleme en iyi örnek, ciltli kitaplarda bulunan ipliğin kalınan yerin takibinde bir İndisçi gibi kullanılmasıdır.

6502 mikroişlemcisindeki 8-bitlik iki indis kaydedicisi veri depolanması sırasında iki bayttan daha fazla veriyle karşılaşırsa, bu durumda zorluklar ortaya çıkabilir.

Eğer burada indis kaydedicisi bir sayıcı gibi kullanılıyorsa onaya çıkan problemleri yok etmek için RAM’in belli bir kısmında verileri tutmak için yer ayrılır. Bu durumda indis kaydedicileri bir yığın işaretçisi gibi davranırlar.

Program Sayıcısı

Program sayıcısı (PC-Program Counter) adından da anlaşıldığı gibi, programcı tarafından yazılan ve RAM belleğe atılan programın işlenmesi sırasında çalıştırılacak sıradaki komutun bulunduğu adresi gösterir.

Bu bir adres kaydedicisi olduğundan 16-bitliktir. PC’nin gösterdiği adresteki komut işlendiğinde PC=PC+1 olur ve bir sonraki komutun bulunduğu adresi işaret eder. PC ilk komuttan sonra bunların adresini işaret ederek komutla birlikte islenmesini sağlar ve daha sonra sıradaki komuta geçilir.

PC’nin büyüklüğü CPU’nun ele alabildiği adres bitlerinin sayısına bağlıdır. Eğer işlemci 16-bit adres kullanıyorsa PC 16-bit eğer 32-bit kullanıyorsa PC 32-bitlik adres tutar. Bellekte sadece veriler değil adreslerde saklanır, bu durumda adresler ikiye parçalanarak saklanır.

Bir adres bellekte saklanacağı zaman önce küçük (LSB) tarafı sonra büyük (MSB) tarafı saklanır. Bellekteki bu saklı adres kullanılacağı zaman, önce LSB tarafı da PC’nin PCL parçacına, MSB tarafı PCH parçasına yerleşir.

Programcının PC’ye doğrudan erişebileceği herhangi bir komut yoktur. Bundan dolayı PC’nin değeri doğrudan belleğe veya bellekten bir değer doğrudan PC’ye aktarılamaz. Bunun yanında JMP komutuyla PC, bellekte istenilen adrese doğrudan yönlendirilebilir.

Yığın İşaretçisi

RAM belleğin bir bölümü programcı tarafından veya herhangi bir komutun işlenmesi sırasında geçici olarak kullanılır. Belleğin bu bölümüne Yığın denir. Mesela, bir alt-yordama dalınacağı zaman, geri dönüldüğünde eldeki bilgilerin tekrar ele geçirilebilmesi ve kalınan yerden devam edilebilmesi için, işlemci tarafından monitör programın da yardımıyla eldeki veriler geçici ve otomatik olarak bellekteki yığın olarak ayrılmış belleğe saklanır.

Dalınan program RTS komutu ile bittiğinde, eski veriler yığından otomatik olarak geri çekilir ve program bir kesikliğeuğramadan devam eder, ya da programcı herhangi bir işlemin yapılması sırasında başkabir işlem yaptırmak isteyebilir. Yine bu durumda eldeki veriler programcı tarafından yığına atılır. İş bitliğinde ise eski işleme devam etmek için yığından bilgiler çekilerek devam edilir.

6502-mikroislemci-turkce-bilgi-datasheet_5

6502 işlemcisinin Yığın işaretçisi 16-bitlik olmasına rağmen sistem tarafından belleğin 1.sayfası yığın olarak ayrıldığından, daima 16 bitin 9 biti kullanılır. 9. bit daima 1’dir ve 1.sayfayı işaret eder.

Yığın işaretçisi daima adres işaret eder ve bu adres 256 baytlık alanı kapsar. Sistemin ilk çalışması sırasında SP, yığın olarak ayrılan 1. sayfanın [01FF] adresini işaret eder. Eğer yığına bir veri atılacak (PHA komutuyla) olursa, bu veri yığının ilk adresi olan en üste yerleştirilirken, SP’nin değeri bir azalır ([01FE] adresini gösterir). Bu veri çekilmeden yine bir veri atılırsa SP’nin gösterdiği yere konularak SP yine bir azalır. Yani SP’nin değeri yığına veri atıldıkça küçük adreslere doğru iner

Eğer yığından bir veri çekilecek olursa (PLA komutuyla), SP değerini bir artırarak oradan veri alınır.

Burada dikkat edilmesi gereken nokta, bu sistemde sırasıyla yığına atılan veriler yine sırasıyla anıdan geri çekilmelidir. Fakat, ilk yığına konulan veri, son olarak; son konulan veri ise, ilk olarak çekilmelidir. Bu sisteme LIFO (Last in First Out-Son Giren İlk Çıkar) sistemi denir. LIFO sisteminin tersi olan ve ilk giren verinin ilk çıktığı FIFO (First in First Out) bir sistem daha vardır.

Komut Kaydedicisi (IR)

CPU, bellekten komut kodunu alıp getirdiğinde ilk önce onu komut kaydedicine koyar. Komut kodu burada deşifre devresi tarafından kodu çözülerek hangi işlemin yapılacağı belirlenene kadar orada kalır. Komut kaydedicisi CPU tarafından komut saykılı işlenene kadar otomatik olarak kullanılırken, programcının bu işlemciye erişmrsi için bir sebep yoktur. IR’nin genişliği8-bittir.

Veri Adres Kaydedicisi (DAR)

Bellekte üzerinde çalışılacak adresin oluşturulmasında bu kaydedici kullanılır. Programın işlenişi sırasında komut kodu çözüldükten sonra bu iki grup halindeki mutlak adres bilgisi iki okuma çevrimi ile bellekten getirilir. Birinci aşamada, bellek adresinin yarısı getirilerek veri adres kaydedicisinin ilgili tarafına konulur, daha sonraki adımda diğer yarısı getirilerek bu kaydedicinin diğer tarafına yerleştirilir. Böylece, üzerinde çalışılacak adres DAR’da üretilmiş olur. DAR 16-bitlik bir kaydedicidir.

Veri Kaydedicisi (DR)

Akümülatörle birlikte ALU’da yapılacak olan aritmetik ve mantıksal işlemlerde işlenen(operand) bilgisinin tutulmasında kullanılır. Data Register 1 olarak adlandırılan bu kaydedici bellekten alınan verilerin üzerinden geçiş yaptırmakla görevlidir. A ve DR kaydedicileri bellekten veri yolu üzerinden ayrı ayrı veri alabilirler fakat, sadece A kaydedicisi tekrar sonucu belleğe gönderebilir.

Bellek Adres Kaydedicisi (MAR)

Bellekten bir veri veya komut alınıp getirileceği zaman önce bu kaydediciye ilgili adres bilgisi konulur. Program yazılıp derlendikten sonra, ilk işaret edilen adresten itibaren belleğe yerleşir. Daha sonra program çalıştırıldığında, komut kodlarının adresleri önce PC’ye ve oradan da MAR’a konularak hedef gösterilir.

Komut kodların işaret ettiği verilerin adresleri önce DAR’da oluşturulur ve daha sonra MAR’a konularak hedef gösterilir. MAR kaydedicisi aslında bir tampon kaydedicisi olarak da adlandırılabilir. Programcıya gözükmeyen kaydediciler aslında birer tampon kaydedicisi olarak düşünülebilir.

Bellek Veri Kaydedicisi (MBR)

Bu kaydedici, bellekten herhangi bir veri (komut da olabilir) işlemciye gelirilmek istendiğinde ilk bu kaydediciye alınır. Yine belleğe herhangi bir veri atılacağı zaman bu kaydedici üzerinden yüklenir. Fakat programcı, program yazımı sırasında bu kaydediciyi belirtmez. Gözükmeyen kaydediciler işlemci içerisinde otomatik olarak kullanılır.

İşlemci Durum Kaydedicisi

Bayraklar (P-Processor Status veya PSW-Processor Status Word) olarak adlandırılan 8-bitlik bu kaydedici CPU’nun en önemli kaydedicilerinden birisidir. Aritmetik ve mantık biriminde işlenen komutların sonuçları bu bayraklara etki eder ve işlem bu sonuçlara göre yönlendirilebilir. 8-bitlik bu kaydedicinin 5. biti boş olup, +5V’a bağlanmıştır. Bayraklardan beşi bir Önceki işlemin sonucunu gösteren durum bayraklarıdır. Diğer ikisi ise, kullanışlı kontrol bitleridir.

6502-mikroislemci-turkce-bilgi-datasheet_6

Negatif Bayrak : Bu bayrak herhangi bir verinin MSB bitine bağlı olarak verinin işlenmesinde veya verinin transferinde ortaya çıkan sonucun işaretini gösterir.
Bayrak kaydedicisinin 1. bitidir ve işaret biti olarak da anılır.Bilindiği gibi işaretli 8-bitlik bir verinin 7.biti işaret biti olarak belirtilir. Eğer 7.bit 0 ise veri pozitif bir sayı, 1 ise negatif bir sayıdır.

Taşma Bayrağı: Taşma bayrağı, işaretli iki sayının birbirinden çıkarılması veya birbirleri ile toplanmasında elde edilen sonuçla bir taşma olup olmadığını gösterir. Taşma, 8-bitlik aritmetik işlem sonunda sonucun -128’den az, +127′ den fazla olması halinde ortaya çıkar. Bu durumda V bayrağı 1, aksi halde 0 olur.Taşma, işlenenin işaret bitine bakılarak belirlenir. Eğer işlenenlerin işaret bitleri aynıysa ve sonuç bayt kapasitesini aşarsa, sonucun işaret biti değişecek ve V bayrağı 1 olacaktır.

İşaretli sayılarla işlem yapılırken sayının gerçek değerinin ikili tamlaması (tümleyeni) alınır. Bu durumda çıkan sonuçta gerçeği yansıtmayacağından tekrar ikili tamlaması alınarak gerçek sonuca bakılır. Eğer işlem gören sayıların ikiside negatif ise sonuçta negatif çıkmaktadır.

Böylece işlemde bir hata olmadığından V= 0 olarak kalır. Ancak işlemde bir elde biti vardır ki, bu taşmayı etkilemez, sadece C bayrağını 1 yapar. Aşağıdaki örnekte, iki aynı işaretli sayı toplanmakta ve sonuç işareti faklılık göstermekte ve sonuç -132 olacağına + 124 olmaktadır. Bundan dolayı V bayrağı işlem sonunda taşma olduğunu göstermek için 1 olur.
Aritmelik çıkarma işleminde ikinci sayının 2’li tamlaması alınarak iki sayı toplanır(S=A+(-R)). Eğer A7 ve B7 işaret bitleri aynıysa ve bayt kapasitesi aşılmışsa, taşma ortaya çıkar.

6502-mikroislemci-turkce-bilgi-datasheet_7

Programcı taşma bayrağına sadece CLV komutuyla ulaşarak eskiden kalan artık biti silebilir. Taşma bayrağını 1’e kurmak (setlemek) için herhangi bir komut yoktur.

Durdurma Bayrağı: BRK komutunun islem sırasında ortaya çıkışını CPU’ya bildirmek için bu bayrak kullanılır. BRK komutu yazılım durdurma komutudur. Bu bayrağı silme veya kurma komutu, yoktur.

6502-mikroislemci-turkce-bilgi-datasheet_8

Ondalık Mod Bayrağı: Mikroislemci, bu bayrağın 1 olduğunu görmesi halinde aritmetik işlemlerini BCD moduna göre yapar. Aksi takdirde, D bayrağı 0 olduğu müddetçe işlemci arilmetik işlemlerini normal ikili işlemde yapar. Programcı bu bayrağa her an erişerek SED komutuyla kurma, CLD komutuyla temizleme imkânına sahiptir.

D bayrağı bir defa kurulduktan sonra, programın kendisi D’yi değiştirene kadar o modda kalır. İnsanların anladığı rakamların ondalık olması sebebiyle, yapılan işlemlerin kolay anlaşılabilir olması için BCD (ondalık) modunda arilmetik işlemler yapılabilir.

Kesme Yetkisizleştirme Bayrağı: Bu bayrak (I-Interrupt) CPU’nun IRQ ucuyla doğrudan ilgili olup, programcı tarafından 1 yapıldığında IRQ kesme talebinin etkisi ortadan kaldırılarak gözönüne alınmaz. Eğer bu bayrak 0 iken, mikroişlemciye herhangi bir kesme talebi (IRQ) gelirse, mikroişlemci o anki işini bitirdikten sonra kesme altyordamına dalarak talebe cevap verir. Kısaca, I=1 olduğunda kesme servis talebi kabul edilmez ve işlemci normal işlemine devam eder. Eğer I=0 olduğunda, işlemci kesme servis talebine cevap verecektir.

Kesme yetkisizleştirme bayrağı programcı tarafından SEI komutuyla kurulurken (mantıksal 1), CLI komutuyla temizlenebilir (mantıksal 0). Kesmeler, sistem resetlenirken veya bir önceki kesmeye servis verilirken 6502 işlemcisi tarafından otomatik olarak yetkisizleştirilebilir. Bu bayrak değişik zamanlarda işlemci tarafından otomatik olarak kurulur veya temizlenebilir.

Sıfır Bayrağı: Herhangi bir veri transferi veya manevrasında sonuç sıfırsa bu bayrak otomatik olarak 1 olur. Diğer faklı durumlarda yine otomatik olarak temizlenir. Meselâ, LDA #0 komutu A kaydedicisini sıfırlarken aynı zamanda sıfır bayrağını 1 ‘e kurar. Aritmetik ve Mantık işlemlerinin sonucunda sıfır elde ediliyorsa yine Sıfır bayrağı 1’ lenir.

Meselâ, BNE GİT komutunun kullanılmasında, bir önceki komutun etkilediği Z bayrağının sıfır olup olmadığına bakılır. Eğer Z bayrağı sıfırsa (Z=0) şart sağlandığından komut etiketine(GİT) dalınır. Aksi halde (Z=1) program bir sonraki komutun işlenmesine geçer.

Elde Bayrağı: 8-bitlik iki sayının toplanması veya çıkarılması gibi aritmetik işlemlerin sonucunda 8. bitten (MSB biti) 9. bite bir geçiş varsa elde bayrağı 1 olur. Böylece gerçek işlem sonucu ortadan kaybolmaz ve C’deki elde sayısı bir sonraki işlemde göz önüne alınır. C bayrağı, CLC komutuyla temizlenirken, SEC komutuyla kurulabilir.

6502-mikroislemci-turkce-bilgi-datasheet_9

Bellek ve Adresleme Kavramı

6502 mikroişlemcisinin sahip olduğu 16-bitlik adres yolu ile 65536 (64KB) bellek hücresini adresleyebilmektedir. Bu bellek uzayı her biri 256 bayt olan 256 adet sayfaya bölünmüş ve verinin daha etkin bir şekilde kullanımı sağlanmıştır. 0000H adresinden başlamak üzere ilk 256 baytlık adres alanına sıfırıncı sayfa denilir ve programın kullanacağı veriler buraya yerleştirilir.

Sonraki sayfa 6502 işlemcisinde yığın olarak ayrılmıştır. Buraya veriler geçici olarak atılır istenildiğinde de alınıp kullanıma sokulabilir.

Bütün mikroişlemcilerde olduğu gibi, yığını gösteren bir işaretçi mevcuttur. Yığın işaretçisi (SP). 6502 işlemcisinde 36-bitlik olmasına rağmen MSB (Most Significant Bit-Yüksek değerlikli bit) tarafı 1, sayfaya sabitlendiginden daima 0000H ile O1FFH arasında dolaşabilir . Sistem çalıştırıldığında SP daima 01FFH adresine konumlanır ve her veri atılışında kendisini bir azaltarak bir sonraki boş adresi gösterir.

6502-mikroislemci-turkce-bilgi-datasheet_10

Bir sonraki alan 2. sayfa program kodlarının bulunduğu alandır. Burası programın yerleştiği ve programcı tarafından ORG (ORiGin-programın bellekte yerleşeceği adres alanının başlangıç yeri) talimatı sonucunda kullanılan alandır.

Diğer bilgisayar sistemlerinde olduğu gibi, bellek uzayının en üst alanları monitör programlara bırakılır. Burada 6502 işlemcisiyle gerçekleştirilen sistemin çalışma programı bulunur. Diğer kalan sayfalar, veri ve komut alanı olarak da kullanılırken, bu bellek alanı G/Ç adresleri olarak ayrılırlar.

6502 işlemcisi, kaydedici yetersizliğinden dolayı belleğe duyalı olarak çalışmak zorundadır. Yani üç genel amaçlı kaydedici ile veri manevrası yapmak zordur. Diğer işlemcilerde kaydedici bolluğundan, veri manevrasında belleğe gerek duymazlar.

Mikroişlemciler bu bakımdan belleğe dayalı işlemciler veya kaydediciye dayalı işlemciler grubundan birisine girer. Belleği kullanan işlemci G/Ç işlemlerinde de belleği kullanmak zorundadır. Sistemde seri (ACIA-Asynchronous Communications Interface Adaptör-Eşzamansız iletişim bağdaştırma birimi) veya paralel (PIA-Peripheral Interface Adapter-Çevre bağdaştırma birimi) G/Ç olarak kaç adet IC (Integrated Circuits-Yonga seti) kullanılmış ise o kadar bellek adresi G/Ç olarak ayrılır.

Her bir port için bellekte dörder adet adres ayrılır ve ona göre programlanır. Meselâ, 6520 PIA G/Ç yongasının A portunda, CRA (Control Register A-A portunun denetim kaydedicisi), DDRA (Data Direction Register A-A portunun veri yönü kaydedicisi) ve ORA (Output Register A-A portunun tampon kaydedicisi) olmak üzere üç kaydedici vardır ve bunlar için sadece iki bellek alanı ayrılır. Diğer portlar içinde aynı yöntem uygulanır.

Mikroişlemci Kesmeleri

Mikroişlemci sıralı durumdaki komutları işlerken içerden veya dışardan kesmelere uğrayabilmekledir. Kesme, program çalışırken işlemciye gelen bir sinyalin bu programı durdurarak özel bir işlem yapmak üzere başka bir programa sapmasıdır. Özel programlar programcı veya tasarımcı tarafından yazılarak, ana program içerisine veya ROM belleğe (BIOS gibi) konulabilir. Kesmelerin devreye giriş şekli programcının veya sistemi tasarlayanın yetkisindedir.

6502 Mikroislemcisi üç adet donanım kesmesi bir adet de yazılım kesmesine sahiptir. Donanım kesmeleri mikroişlemcili sistemi dışardan bir sinyalle durduran girişlerdir. Bunlar, Reset (RES), kesme talebi (IRQ -Interrupt Request) ve Önlenemez kesme (NMI -Non-maskable Interrupt)lerdir.

Yazılım kesmesini BRK komutu yerine getirir. Kesmelerin çalışma biçimi ayrıntılı olarak giriş-çıkış teknikleri konusunda işlenmekledir.

6502-mikroislemci-turkce-bilgi-datasheet_11

Mikroişlemci simülatörü üzerinde üç butonla seçilebilen kesmelerle, programın çalışması kesilebilir ve Tabloda verilen adreslere yerleştirilen yeni program adreslerine yönlendirilebilir. Simülatörde vektör adreslere karşılık gelen kesme hizmet yordamlarının (ISR-Interrupt Service Routin) adresleri programcı tarafından kendi programının içerisine yerleştirilerek gerekli işlemleri yapacak yordama program yönlendirilebilir. Her ISR yordamının sonuna mutlaka RTI komut konulmalıdır.

Reset Kesmesi (RES)

Mikroişlemciye Reset kontrol girişi, programın yeniden başlatılması veya bir hatayı takiben gücün kesilmesi gibi durumlarda programın çalışmaya başlantılmasında kullanılır. Başlatma modunda çalıştığından işlemcinin kaydedici içeriklerinin saklanmasına gerek yoktur. RES sinyalinin alınmasıyla birlikte mikroişlemci, $FFFC ve $FFFD bellek adres içeriklerini (bu bir ISR adresi) PC’ye yerleştirerek programın o adresten itibaren çalışmasını sağlar.

Kaynak dosya: 6502 Mikroişlemcisi Hakkında Türkçe Bilgi

Dosya indirme LINK listesi (HTML formatında) link-5639.zip şifre-pass: 320volt.com

boll

6502 Mikroişlemcisi için “Mikroişlemciler ve Assembly Dili” kitabım, Visual 6502 Mikroişlemci Simülatörü için www.pcsistem.net den alınmıştır

  • Ö.Değer ÖZSU

    Aklıma 90 lı yıllarda merak sarıp uğraştığım assembly dili geldi.Registerler flaglar,sayı sistemleri…derken epey birşeyler öğrenmiş bilgisayarların çalışma mantıkları hakkında bilgi sahibi olmuştum.

    Elinize sağlık.Bilgilendirici,güzel bir yazı.Teşekkürler.