Elektrik Mühendisliği · Sayı 317 · Mart 1985
BİLGİSAYAR İÇİN BİR ARA DÜZEY DİLİ: ASSEMBLY DİLİ
Bilgisayar, yazılım ve internet Teknik / bilimsel makale
- Yıl
- 1985
- Sayfa
- 10
- Okuma süresi
- 26 dk
- Görüntülenme
- 0
Konu
Bilgisayar, yazılım ve internet
İlgili: Elektronik ve yarı iletkenler
Anahtar kelimeler
- Assembly dili
- makine dili
- mikroişlemci
- Z80
- derleyici
- kaynak program
Özet
Yazıda bilgisayar programlama dilleri arasında yer alan Assembly dilinin genel özellikleri, makine diliyle ilişkisi, deyim yapısı ve komut türleri Z80 mikroişlemcisi örnekleriyle açıklanmaktadır.
Tam metin
Metin PDF'ten otomatik çıkarılmıştır; tablo, şekil ve formüller eksik ya da hatalı olabilir. Özgün dizgi için PDF'e bakın.
BİLGİSAYARLAR İÇİN BİR ARA DÜZEY DİLİ: ASSEMBLY DİLİ
Toygun S. BAŞOL
ÖZET
Bu yazıda bilgisayar dilleri arasında ayrıcalıklı bir yeri olan (Assembly) dili incelenmektedir.
SUMMARY İn this article, an Assembly Language which takes a privileged place amongs the computer programming language is discussed.
1 GENEL insanlar arası karşılıklı anlaşmayı sağlayan bir dil ol duğu gibi insanlar ile bilgisayarlar arasında da karşılık lı anlaşmayı sağlayacak olan gene bir dil olacaktır, insanların aynı nesneyi anlatmak amacı için kullan dıkları çok çeşitli diller olduğu gibi bilgisayarların da aynı nesneyi işlemek amacı için kullandıkları değişik diller vardır, insanların kullandığı dilin ana öğeleri abece (alfabe) ise bilgisayarların da kullandıkları di lin iki temel öğesi vardır. Bunlar ' T ' ve " 0 " dır. Na sıl insanlar ayni abece ile değişik dilleri anlayabilmek tedir, insanların konuştukları dilin bir kural takımı ol duğu gibi bilgisayarların anladığı dilin de bir kural takımı vardır, işte bu ' T ' ve " 0 " ların uygunca bir araya gelmesinden kaynaklanan kurallar başka bir deyimle "ikili amaç düğüm" (Binary Object Code) lar yardımı ile bilgisayara istenen bir iş yaptırtıla bilir. Uygun "ikili amaç düğümlerinin" arka arkaya gelmesiyle bir "Amaç program" elde edilir. Böyle ce belirli bir olaya özgün sorunlar belirli bir " Amaç program" ile çözümlenir.
Anlaşıldığı gibi bir "Amaç program" " 1 " ve " 0 " lar dan oluşacaktır. Bu " 1 " ve " 0 " lan kullanarak be lirli bir programı yapmak programcı açısından çok zor olduğu gibi bu programın hata yüzdesi de çok fazla olacaktır. Bu yüzden makine dilinde yazılmış bir program elverişli değildir. Ayrıca böyle yazılmış olan bir programın başka bir kimse tarafından göz
den geçirilmesinde de pratik zorluklar vardır. Bu noktada daha kolaylıkla yazabileceğimiz ve okuya bileceğimiz bir programın kuralları ile inşa edilmesi söz konusudur. Buna "Source Program" veya " Kay nak Program" denilir. İstediğimiz amaca uygun bir çok kaynak program türü vardır. Bunlardan birkaçı FORTRA N, BASIC, COBOL, PL, PASCAL ve AS SEMBLY gibidir. Assembly hariç saydıklarımızın hepsi yüksek düzeyli dillerdir. İnsanların anladığı di li bilgisayarın anladığı dile çevirmek, yani yazılmış olan bir Kaynak Programı bir Amaç Programa dönüş türmek için özel bir program kullanılır. Buna Dil Dönüştürücü denilir. Söz gelimi F O R T R A N ve CO BOL için yazılmış olan dil dönüştürücü programa COMPILER, BASIC için yazılmış olan dil dönüş türücü programa I NTE RP RE TE R, ASSEM BLY için yazılmış dil dönüştürücü programa da ASSEMBLER denir. Doğal olarak Assembler programının da ken dine özgün özellikleri vardır.
Y üksek düzeyli dil, doğası gereği düşük düzeyli di lin gereksiniminden çok daha fazla makine kodu adımlarına gerek duyar. Bu ise daha fazla bellek kul lanılmasını gerektirir. Bilgisayar tarafından edimle nen (performed) programın adımlarının çokluğu edimlenen işin gerçek zamanını arttırır. Oysa As sembly dili düzeyi Makine Diline çok yakındır Aynı bir iş için Assembly Dilinin kullanılması gerekli bel lek miktarını azaltacaktır. Dolayısıyla Y üksek düzey li bir dil ile karşılaştırıldığında uygulanan programın edimi daha hızlı olacaktır. Bu ise zaman ve para t u tumluluğunu beraberinde getirecektir.
Assembly dili bilgisayara bağımlıdır. Bilgisayardan bilgi sayarak değişik özellikler gösterir. Sözgelimi ayni bir işin değişik bilgisayarlardan edimlenmesi için değişik kaynak Programlara gereksinim duyulur. Bu derece seçenekleri bol olan ve makineden maki neye değişen bir dil aşağıda genel özellikleri ile anla tılacaktır. Örneklemelerden ise kullanılan bilgisayar cinsleri belirtilecektir.
2. ASSEMBLY SÜRECİ
Assembly dilinde yazılmış bir programın edimi, ma kine dilinde yazılmış olan ve peş peşe gelen KOMUT LARIN işlenmesi ile olanaklıdır. Komutlar, ikili düğüm biçiminde bir KOMUT ÇİZELGE'sinde bel leğin içinde belirli yerlerde saklı tutulurlar. Her ko mutun insan belleğini çağrıştıran bir simgesi vardır. Dolayısıyle kaynak program veya Assembly bir sim geler dizinidir. Bu simgeler dizini Assembler tarafın dan okunur, komut çizelgesi ile karşılaştırılır ve bellekteki belirli bir simgesel adresten itibaren Amaç program haline dönüştürülmesini yükleyici (Loader), veya Bağlayıcı (Lınker) diye çağrılan bir program üst lenir. Assembly sürecini Çizim 2 1'deki gibi düzen leyebiliriz.
| Bilgisayarın Assembler Prog.
Komut Çizelgesi ı
' 80$ adres alanı
Siris :
>
ı Çalışma alanı
Çık.ş
(aynak program
Amaç program
Amaç progrım
> i Amaç Program I
çıkış
Verj
#
i Veri Alanı
|
hesap sonuçları
Çizim 2 1 Assembly Süreç Şeması
Assemblerin bu dönüştürmesi sırasında, kaynak prog ramdaki kimi biçimsel hataları görmesi, ortaya çı kartması ve hatalar ile bulundukları satırları işaretle mesi ve bir hata listesi üretmesi, ayrıca programı lis teleresi sağlanır. Ek olarak, bazı assembler program da kullanılan tüm simgeler için bir çapraz ilgi (eross reference) listesi sağlarlar. Bütün bu işlerin becerile bilmesi için Assembler'in kaynak programı bir veya birden fazla okuması gerekir. Tek geçişli (one pass assembler) 'de, akıllı bir programlama tekniği aracılı ğı ile program tek bir tarama ile elde edilir. İki geçişli (Two pass assembler)'de ise olgu iki aşamalı bir tara ma ile tamamlanır.
3 BİR ASSEMBLY ' D E Y İ M İ N İ N ÖĞELERİ VE ÖZELLİKLERİ
Programcı her istenen komut için, Kaynak Programın her satırına, bir DEYİM (STATEMENT) ile onu izle yen bir satır sonlandırıcısını yazar. Komutun tam is minin yazılması yerine bellekte yer edebilecek bir kı saltılmış biçimi yazılır. Buna MNEMONIC denilir. Bu kısaltılmış biçimler komutun ismine bağlı olarak 3 veya 4 anahtar harften oluşurlar. Bu anımsamayı kolaylaştırır, yazmayı basitleştirir. Her deyim 4 alan dan oluşur. Bunlar sırasıyla, Etiket Alanı (Label),
İşlem Kodu Alanı (operation Code), işlenen Alanı (Operand) ve Yorum Alanı (comment) dır.
Bunlar yukarıda yazıldığı sıra dizilişinde DEYİM için de yer alır, DEYİM'in alanları birbirinden bir veya da ha fazla boşluk ile ayrılır. Deyim sonu işareti ile DEYİM sonlandırılmış olur. Böyle bir DEYİM Çizim 3 1'de görülmektedir. Bir deyim de görünen
Etiket alanı/İ şlem kodu alanı/islenen alanı/Yorum alanı.. Çizim 3 1 Bir Assembly ifadesi
Damgalar (Characters) şunlardır. A'dan Z'ye abecesel damgalar, 0 'dan 9'a sayısal damgalar, + = . ve boş luk gibi işleçler (operatör) bir deyimin değeri progra mın yerelleştirilmesinden etkilenmiyorsa o deyim SALTIK (abseleute) tır. Bir saltık programda bütün deyimler saltıktır. Bir deyimin değeri yerele göre de ğişiyorsa, o deyim yerdeğişir (RELOCATABLE) dir.
3 1 ETİKET ALANI
Etiket komutun kimliğini saptar ve programdaki di ğer komutlar tarafından bir dayanak noktası kullanı lır. Etiket Alanı Deyimin ilk konumundan hemen sonra başlar. İlk konum bir önceki deyimin deyim sonu işaretini izler. Etiket Alanı boş ise deyim eti ketlenmem iştir. Etiket simgesel olmalıdır. Etiket Alanında alfa sayısal damgalar bulunabilir. Etiketin değeri program sayacının değerine bağlı olarak sal tık veya yerdeğişir olabilir. Her etiket program için de tek olmalıdır. İki veya daha fazla komutta ayni simgesel isim gözükmemelidir. Çizim 3 2'de Etiket Alanı ile ilgili örnek bulunmaktadır.
AEDTU ABC45
Çizim 3 2 Etiket Alanı örneği
3 2 İŞLEM KODU ALANI
İşlem Kodu, Assembler tarafından edimlenecek olan işlemi kısa ad (mnemonic) olarak tanımlar. İşlem Ko du Alanı, Etiket Alanını izler. İki alan arasında hiç olmazsa bir boşluk bulunur. Etiket yoksa, işlem kodu ikinci konumdan hemen sonra başlıyabilir. İşlem Ko du bir boşluk ile sonlanır. İşlem Kodları birçok sınıf lamada düzenlenebilir. Bunları genellikle aşağıda anla tacağımız gibi MAKİNE İŞLEM KODLARI ve YA PAY İŞLEM KODLARI olmak üzere iki ana dalda inceleyebiliriz.
ELEKTRİK MÜHENDİSLİĞİ • 317
3 2 1 MAKİNE İŞLEM KODLARI
Bilindiği gibi kaynak programındaki her Deyim Assembler Tarafından Amaç Programında bir makine işlemine karşılık getirilir. Makinanın yaptığı işlemlere göre bu komutları aşağıdaki gibi sınıflayabiliriz:
a) BİLGİ AKTARMA KOMUTLARI : Bilgiyi yaz maçlar (registers) arasında veya yazmaçlar ile bellek arasında veya bellek ile yazmaçlar arasında aktaran işlem kodlarının komutları kalkış ve varış noktaları komut içerisinde belirtilir. Z 80 mikro işlemcisinde, örnek olarak LOAD ve EXCHANGE işlem kodlarını gösterebiliriz. Bunların mnemonic yazılışları LD ve EX dir. Komut içinde kullanılışları ise LD r, s ve EX, DE, HL biçimindedir. PUSH ve POP işlem kodları ile Yıgıt Göstergesi (Stack Pointer) isimli yazmaca girilip çıkılabilmektedir.
b) ÖBEK (block) AKTARMA KOMUTLARI : Bel leğin herhangi bir büyüklükteki bir öbeği gene belle ğin diğer bir yerine tek bir komut ile taşınabilir, ör neğin Z 8Û mikro işlemcisinde LDIR ve LDDR iş lem kodları ile bu iş yapılabilir. İşlem kodlarının açık yazılışları LOADINCREMENT and REPEAT ile LOAD DECREMENT and REPEAT dır. işlemin ya pılması şöyledir. HL yazmaç çiftinin belirttiği ad resteki bilgi DE yazmaç çiftinin belirttiği adrese ak tarılır. Her iki yazmaç çiftinin değerleri 1 arttırılır. Bu işin kaç kere yapılacağını ise BC yazmaç çifti nin değeri belirler. BC yazmaç çiftinin içeriği sıfır olana kadar işlem devam eder. LDDR komutunda ise, her üç yazmaç çiftinin değeri birer eksiltilir. BC sıfır olana kadar olaya devam edilir.
c) ARİTMETİK İŞLEM KOMUTLARI : Yazmaç lar daki veya bellekteki bilgiyi Birikeç (Accumulator) bilgiyle toplayan, çıkartan arttıran veya eksilten iş lem kodlarının kümesidir, örnek olarak Z 80 mikro işlemcisindeki, INC, DEC, ADD, ve SUB işlem kod larını gösterebiliriz. Bu işlemler 16 bit üzerine yapıl dığı taktirde birikeç kullanılmamaktadır. Kısaad (Mnemonic) olarak 8 bitlik bir toplama işlemi ADD A, r: 16 bitlik bir toplama işlemi ise ADD HL, ss şeklinde gösterilebilir. Bu gösteriş biçimindeki bir yazmacı, ss ise bir yazmaç çiftini belirtmektedir. Doğal olarak A birikeçi HL ise Yazmaç çiftini gös termektedir. d) MANTIKSAL İŞLEM KOMUTLARI : Yazmaçlar daki veya bellekteki bilgiye çeşitli mantıksal işlemleri yaptırtan işlem kodlarının kümesidir, örnek olarak Z 80 mikro işlemcisinde AND, OR, EX OR, NEG, CPL ve CP işlem kodlarını gösterebiliriz. Bütün man tıksal işlemler birikeçte yapılmaktadır. Kısaad ola rak CP s komutunun anlamı, s yazmacındaki bilgi yi birikeç ile KARŞILAŞTIR 'dır
e) DÖN (ROTATE) VE KAY (SHIFT) KOMUTLA RI: Yazmaçlardaki veya bellekteki veya birikeçteki bilginin sağa veya sola döndürülmesi veya kaydırılma sı bu grubdaki işlem kodları ile olanaklıdır, örnek ola rak Z 80 mikro işlemcisinde RLA RRA, SLAs ve SRAs işlem kodlarını gösterebiliriz. Buradan verilen ve verilmeyen bu işlem kodlarının geniş bir uygula ma alanı tam sayılı çarpma ve bölme işlemleridir.
f) BİT AYARLAMA (MANIPULATİON) KOMUT LARI: Bir yazmaç yada bir bellek yerelindeki her hangi bir 'bit' i sınamayı sağlayan, o biti " 1 " veya " 0 " yapabilen işlem kodlarının kümesidir, örnek ola rak Z 80 mikro işlemcisinde BİT, SET ve RES işlem kodlarını gösterebiliriz, örneğin, Bit B, r komutu r yazmacından b ninci biti sina anlamına gelir. Aynı biçimde SET b, r ise, r yazmacının b ninci bitini 1 yap anlamına gelir.
g) DALLANDIRMA, SAPMA KOMUTLARI: As sembly programındaki değişik yereller arasından bil ginin koşullu veya koşulsuz olarak aktarılması bu kü medeki işlem kodları ile olanaklıdır. Ana program içinde değişik koşullara bağlı olarak program saya cının içeriğini değiştiren JUMP İşlem kodudur. Ana program ile alt programlar arasındaki gidiş dönüşü CALL ve RETURN işlem kodları sağlamaktadır, örneğin Z 8Û mikro işlemcisinde koşulsuz dallanma için var olan komutlardan biri JP nn dir. Bu komut la program sayıcısının yeni adresinin nn olması sağ lanır. Koşullu dallanma için var olan komutlardan biri JR NZ, e dir. Koşul sağlandığında program sayacı o andaki adresi üzerine e kadar bir değer alır ve prog ram, program sayacını gösterdiği yeni adresten devam eder. Koşulsuz, alt programa geçişi CALL nn komu tu sağlar. Bu komut, program sayıcısının olması gere ken değerini SP yazmacına götürür ve ona yeni değe ri olan nn' yi verir. RET komutu, koşulsuz olarak 1 alt programdan ana programa geçişi sağlar. Komutun yaptığı iş, SP yazmacındaki bilgiyi program yazmacı na aktarmaktır.
h) GİRİŞ / ÇIKIŞ KOMUTLARI : Bir dış aygıt ile yazmaçlar veya bellek yerelleri arasında karşılıklı bilgi aktarılmasına izin veren işlem kodlarıdır, örnek olarak Z 80 mikro işlemcisinde İN ve OUT işlem kod larını gösterebiliriz ı) MAKİNEYİ DENETLEYEN KOMUTLAR: Bilgisa yarların Merkezi İşlem Birimini denetleyen işlem kod larının toplandığı grubdur. örnek olarak Z 80 mikro işlemcisinde NOP, HALT, Dİ ve El işlem kodlarını gösterebiliriz. NOP komutu hiç bir işlem yapmaz. HALT komutu makinenin çalışmasını bir kesme işa reti gelene değin erteler. Dİ ve El komutları ise kesme işaretini engellemekte ve yol vermekte kullanılır.
ELEKTRİK MÜHENDİSLİĞİ
3.2.2 SÖZDE (PSEUDO) İ ŞLEM KODLARI Sözde komutları assembly sürecini denetleyen ve programın yeniden yerleştirilmesini sağlayan komut lardır. Bunun yanında programda kullanılan etiket leri, bellek öbeklerini çeşitli değişmez türlerini be lirttiği kadar programın yönlendirilmesini tanımlar ve çıkış listesini de denetler. Bu komutları aşağıdaki gibi sınıflandın) biliriz.
a) ASSEMBLERİ D E NE TL E Y E N K ÜM E : Bu küme sözde işlem kodları, program sayıcısının içeriğini de ğiştirir, yenisini oluşturur ve Assembly sürecinin son landırılmasına neden olurlar. Bu işlem kodlarının bu lundukları deyimler de Etiket kullanılırsa da bu as sembler tarafından bilmezlikten gelinir, örnek olarak HP2118 bilgisayarında NA M , ORG ve END yapay işlem kodlarını gösterebiliriz. NAM, bir yerdeğişir (RELOCATABLE) programın ismini tanımlar. Bir yerdeğişir program bir NAM komutu ile başlamalı dır. Aynı biçimde program başlangıç yereli olarak bir (zahiri) sıfır ile assembly edilir, işlenen alanında bulunması gereken İ Sİ M en fazla 5 karakterli bir alfa sayısal simge olabilir. Simgenin ilk karakteri abecesel olmalıdır. ORG, bir saltık programın başlangıç nok tasını tanımlar. Bir saltık program ORG, sözde işlem kodu ile başlamalıdır. Deyimin işlenen alanında on dalık veya sekizli bir tam sayı bulunur. Bu program sayıcısının başlangıç değerini belirtir. Bir ORG ko mutunu izleyen bütün komutlar, işlenenin değeri ile başlayan ardası I adreslerde assembly edilirler. END sözde işlem kodu ise assembly programını sonlandı rır. Ayni zamanda Kaynak dili deyimlerinin fiziksel sonunu da işaret eder. Deyimin operand alanında bir isim bulunabildiği gibi boş da olabilir.
b) AMAÇ PROGRAMI Y ÖNLENDİRİCİ KOMUT LAR: Ana program ile alt program arasında veya bir çok alt program arasında iletişimi sağlayan sözde ko mutlar bir kümede toplanır. Bu komutlar sadece yer değişir programlarında kullanılabilir. Komutların eti ket alanı genelde gözönünde bulundurulmaz, işlenen alanı ise birçok alt alana bir virgül ile bölünür, örnek olarak HP 2 1 1 8 Bilgisayarında COM sözde işlem ko dunu gösterebiliriz. Bu komutun görevi, birçok alt Programın ortak olarak kullanacağı bir öbek bellek yerelini ayırt etmektir. Komutun işlenen Alanında görülen her isim alt program için öbeğin bir parçasını tanımlar, isme bağlı olan boyut ise, ilgili parçalara adanan kelimelerin sayısıdır. Boyut gozardı edilmiş ise 1 olarak yorumlanır.
c) ADRES VE SİMGE TANIMLAY AN KOMUT LAR : Programın başka bir yerinde bir işlenen olarak kullanılan bir simgeye, bir sayısal değer veya bir keli melik yerel atayan sözde işlem kodlarıdır, örnek ol
mak üzere HP 2 1 1 8 bilgisayarından EOU sözde işlem kodunu gösterebiliriz. Deyimin etiket alanındaki sim ge, işlenen alanında verilen değerle belirlenir. Bu de ğer bir hesap sonucu ortaya çıkabilir. Ama eksi bir sa yı olamaz, işlenen alanında görülen simgeler daha ön ce kaynak programında tanımlanmalıdır.
d) DEĞİŞMEZLER TANIMLAY AN KOMUTLAR : Amaç programının ardaşıl kelimelerine, bir dizinin (string) bir veya daha fazla değişmez değerini sokan sözde işlem kodlarıdır, örnek olmak üzere ASCII damgaları için ASC, ondalık değişmeler için DEC, sekizli değişmezler içfn de OCT işlem kodlarını HP 21 1 8 bilgisayarında kullanırız.
e) BELLEK AY IRM A KOMUTLARI: Veri çalışma alanı için belleğin bir bölümünün ayrılmasını sağlayan sözde işlem kodlarıdır. Bu işi HP 2 1 1 8 bilgisayarında BSS sözde işlem kodu yapar.
f) ASSEMBLY LİSTESİNİ DENETLEY EN KOMUT LAR : Assembly sürecinin 2. veya 3. geçişi sırasında Assembly çıkış listesini kullanıcının denetimine izin veren sözde işlem kodlarıdır, örnek olmak üzere HP 21 1 8 bilgisayarında. LIST sözde işlem kodu kaynak programının listelenmesine neden olur. Bir UNL söz de işlem kodu ile başlayan program, kaynak progra mı listesini üretmez.
3 2 3. SÖZDE İ ŞLEM KODLARI İLE PROGRAMLAMA ÖRNEĞİ
Anlatılacak örnekte, bir assembly dili programında ki ORG, EOU ve END sözde işlem kodlarının kulla nılışı, HP 2 1 1 6 bilgisayarında gösterilmektedir. Prog ramda kullanılacak X , Y ve Z gibi abecesel damgala rın bellek adresleri sırasıyla 0 0 3 0 0 8 , 0 5 1 2 6 8 ve 0 5 1 2 7 8 olsun. Aynı biçimde LDA, STA, ADA, CPA ve JMP komutları için kodlar sırasıyla 1 1 0 0 2 , 1 1 1 0 2 , 1 0 1 0 2 , 0 1 0 1 2 ve 1 0 0 0 2 olsun. HLT ise 1 6 bitlik bir komut olduğundan işlem kodu 1 0 2 0 0 0 B dir. örnekteki ORG komutu, assembly işlemini 5 0 0 0 8 yerelinde başlamaya zorlamaktadır, ö t e yan dan HA L T komutu 5 0 0 6 8 yerelinde assembly edil diği andan itibaren komutun simgesi 5 0 0 6 8 adresi ile gösterilir.
Assembler'in yaptığı temel işlerden biri, simgesel isimleri bellek adreslerine tekrar yerleştirmektir. Assembler, bu işi becermek için, simge çizelgesi diye çağrılan simgesel isimlerin bir çizelgesini ku rar. Simge çizelgesinde her simgesel isim, uygun dam ga temsili içinde bellek adresleri ile birlikte saklanır. Böylece geliştirilen programdaki simge çizelgesi aşağıdaki gibidir.
SİMGE
HALT MOVE X Y Z
50Û68 50078 03008 51268 51278
Şimdi assemblerin simge çizelgesini nasıl kurduğunu görelim, örneğimizdeki assembler, 5 0 0 0 8 adresinden başlayarak ve her komut için adres sayacını 1 arttıra rak HA L T ve M OVE için adresleri hesaplamaktır. As sembler, bu amaç için program sayacını kullanir.ORG sahte komutu program sayacını başlangıç değerine koyar. Bu komutun işlenen alanındaki B eki as sembler'e 8 esasını temel alan sayı dizgesinin kullanıl dığını anlatmaktadır. Sıradan komutlar görevlerini tamamladığı sırada, program sayacının değerinin art masına neden olurlar.
Bu nedenle, Assembler süreci sırasında H A L T görün dijğünde program sayacının değeri 5 0 0 6 8 olacaktır. Et iket Alanında simge olan bir D E Y İ M ' i n işlenmesin de assemblerin davranışı aşağıda anlatıldığı gibi ola caktır.
Önce, simge çizelgesindeki simge ile program saya cının değeri yer alır, daha sonra komut işlenir ve program sayacının değeri 1 arttırılır. Son olarak ör nek programdaki X , Y ve Z'nin simgesel adresleri ko mutların adresi yerine bilginin bellek adreslerini tem sil eder ve program fiziksel deyimlerin sonunu belir leyen E ND sahte komutu ile sonlanın
SIR*
ETİKET
Y ORUMLAR
> ORG
CPA
IMP
ADA
HALT
|MP
U
X
Y
lî
ENO
SOOOB X
Y Z
X 0
Y HALT 3008 51MB 51278
5 0 0 0 , adresinde basla X 'iakümlatöreal Z'yiakümlatöriekarsılaju X = Z i» alla y'yi akümlatöre al Z ile topla Akiimlatorii X e yükle Dur X 'iy'ye yükle Halı etiketine atla X 'in adresi 3 0 0 a'dir. Y 'nin adresi S1 26 , dır Z'nin adresi 5 1 2 7 , '(tir. Programın fonudur.
3.3 İŞLENEN ALANI işlenen alanı genelde adresleri ve simgesel adresleri içerir, işlenen alanının anlamı ve (formate) işlem Ko dunun türüne bağımlıdır. İşlenen alanı işlem kodu
nun alanını izler. İki alan arasında hiç olmazsa bir boşluk bulunur, işlenen alanı bir boşluk ile sonlanın işlenen alanında aşağıdaki deyimlerden biri buluna bilir. Bunlar, tek simgesel t erim, tek sayısal terim, as terisk, sayısal simgesel ve asteriskin bireşimleri ile aritmetik işleç (ogerators) lerdir. Aynı biçimde Ala nında bir (literal) de bulunabilir.
Bir simgesel terimde 1'den 5'e kadar alfa sayısal den ge bulunabilir. HP 2 1 1 6 bilgisayarında, ilk damga abecesel olmalıdır. Bir sayısal terimde 1 'den 5'e ka dar sayısal damga bulunabilir. Sayısal damgaların alabileceği ondalık sayının en büyük değeri 3 2 7 6 7 ' dir. Sayısal terimde sekizli sayıda temsil edilebilir. İşlenen alanındaki en fazla 6 hanelik sekizli sayıyı bir B izler.
Buna karşılık sayısal terimde Hexa decimal karak terlerde temsil edilir. Bunlar yazıldıktan sonra H ile sonlanır. İşlenen Alanındaki bir Asterisk program sa yacının değerine başvuru anlamı taşır. Mikro bilgi sayarlarda, varış noktası veya kalkış noktası bir yaz maç olduğunda "A, B, C, D, E, H veya L" veya bir bellek işlemi olduğunda " M " işleminin alanında gö rünür. Benzer biçimde " " içindeki ASCI I damga ları, etiket olarak tanımlanan adres simgeleri, etiket leri içeren aritmetik deyimler ve o aşamadaki yereli içeren aritmetik deyimler işlenen Alanı içinde yer alabilir.
Bilginin ve komutların bellekte veya yazmaçlarda yerelleştirilmesi işlemine adresleme denilir. Bir bel lek yerelinin veya bir yazmacın kapladığı yerin içeri ğine SÖZCÜK (W ORD) denir. Her bir SÖZCÜK de 1 ve 0'landan oluşan bir ikili amaç kod bulunur. 1 ve 0 lar Bİ T diye anılır. Bir SÖZCÜĞÜN uzunluğu 4, 8, 16, 32 veya 64 bit olabilir. Bu, bilgisayarın türü ne bağlıdır. Bir SÖZCÜKLÜK uzunluğa bir komut yerleştirilebildiği gibi 2 veya 3 sözcüklük bir uzunlu ğa da 1 K OM U T konabilir. Bu komutun ve makine nin türüne bağlıdır. Bellek ve yazmaç alanlarındaki her sözcüğün bir adresi vardır. Dolay isiyle adresler hem bilgi ve hem de komutlar için belirlenir. Çeşitli adresleme teknikleri vardır. Bunların makine tarafın dan anlaşılan söz dizinleri bilgisayardan bilgisayara değişir. Genelde, adresleme tekniklerini şöyle sıra lıyabiliriz.
3,3.1 DOLAY SIZ ADRESLEME KİPLERİ (Mods)
Bu adresleme kipinde işlenen olarak seçilmiş yazma cın içeriği işlem görür. Bu içerik 1 arttırılarak veya
azaltılarak ya da dizin yazmacının (index register) ile toplanarak yeni işlenen sayacı veya yiğit (Stack) Göstericisi de alınabilir. Şimdi bunları teker teker inceleyelim.
a) YAZMAÇ KİPİ: Seçilmiş kayıtlayıcının içeriği iş lenendir. Bu kipin simgesel gösterimi aşağıdaki şekil deki gibidir.
örnek olarak LSI 11 bilgisayarında INC R3 komutu nu inceleyelim. Burada seçilmiş yazmaç R3 'dür. Komutun işlem kodunda seçilmiş yazmacın içeriği nin 1 artırılması komut edilmektedir. Komutun iş lenen Alanında ise bu işin yapılacağı yer sergilenmek tedir.
Böylece R3 yazmacının içeriği 1 arttırılarak komut işlenmiş olur.
b) KENDİLİĞİNDEN ARTIRMA KİPİ (AUTO INC REMENT MODE): Seçilmiş yazmacın içeriğine her byte için 1 ve her sözcük (Word) için 2 eklenir. Eski içerik işlenenin kendisidir. Ekleme işleminin kaç kez yapılacağı bir yazmaçta verilmiştir. Bu teknik dizilerde ve yiğit işlemlerinde yararlıdır. Bu kipin sim gesel gösterilimi aşağıdaki çizimdeki gibidir, örnek olarak LSI 11 bilgisayarında
.2VEYA 1
CLR (R5) + komutunu inceleyelim. Burada seçilmiş yazmaç R5'dir. Komutun işlem kodunda seçilmiş, yazmacının içeriğinin kendiliğinden 2 arttırılması ve eski içeriğin gösterdiği adresteki sözcüğün sıfırlanma sı istenmektedir. Komutun işlenen alanında ise bu işin yaptırtıldığı yer sergilenmektedir.
c) KENDİLİĞİNDEN EKSİLTME KİPİ (AUTO DECREMENT MODU): Seçilmiş yazmacın içeriği her byte için 1 ve her sözcük için 2 eksiltilir. Yeni içerik işlenenin kendisidir. Eksiltme işleminin kaç kere yapılacağı bir yazmaçta verilmiştir. Bu teknik, bir listedeki bilginin ters yönde işlenmesinde yarar lıdır. Bu kipin simgesel gösterilimi aşağıdaki çizim deki gibidir.
KOMUT jADRES > 2 VEYA 1 ŞİŞLENEN
örnek olarak LSI. 11 bilgisayarında INC {RO) ko mutunu inceleyelim. Burada seçilmiş kayıtlayıcı RO'
dur. Komutun işlem kodunda seçilmiş yazmaç içeri ğinin kendiliğinden 2 eksiltilmesi ve yeni içeriğin gös terdiği adresteki kelimeye 1 eklenmesi istenmektedir. Komutun işlenen alanında ise bu işin yaptırtıldığı yer sergilenmektedir.
d) DİZİN KİPİ (INDEX MODU): Seçilmiş genel yaz maç içeriği ile dizin yazmacının içeriği toplanır. Yeni içerik işlenen alanının adresidir. Bu kipin simgesel gösterilimi aşağıdaki gibidir, örnek olarak LSI 11 bil gisayarında CLR 200 (R 4) komutunu inceleyelim.
»İŞLENEN
Burada seçilmiş yazmacının R4, dizin yazmacının içe riği ise 200'dür. Komutun işlem kodu seçilmiş yaz maç içeriği ile dizin yazmacının içeriğini toplamakta dır. Toplamanın sonucunu yeni adres olarak almakta ve bu adresteki kelimeyi sıfırlamaktadır.
e) IMMEDIATE KİPİ: Burada seçilmiş yazmaç özel olarak komutun işlenen alanının kendisidir, işle nenin değeri komutun içindedir. Bir değişmezin anında, komut içinde verilmesi özelliğini taşır. Bu kipin simgesel gösterilimi aşağıdaki gibidir, örnek olarak LSI TT bilgisayarındaki ADD f 10,RO komu tunu inceleyelim. Burada seçilmiş yazmacın içeriği komutun işlenen alanında görünen 10 değişmez de ğeridir. Komutun işlem kodunda, RO yazmacının içeriği ile 10 değişmez değerinin toplanması ve so nucun RO yazmacına konması istenmektedir.
f) GÖRELİ KİP (RELATIVE MOD): Komutun işle nen alanının içeriği ile program sayacının bir sonraki komutu belirleyen değeri toplanarak istenen işlenenin adresi bulunur. Bu teknik dallanma işlemlerinin edi minde kolaylık sağlar. Ayrıca yerdeğişir kodlara izin verme açısından çekicidir. Bu kipin simgesel gösterimi çizimdeki gibidir. PS, program sayıcısının kısaltılmış yazılışıdır, örnek olarak, LSI 11 bilgisayarında INC A komutunu gözden geçirelim. Hemen şunu belirtmek te yarar vardır. Makine, böyle bir simgesel komut ile karşılaştığı zaman otomatik olarak göreli adresleme
kipinde olduğunu anlar. Bu andan itibaren komutun işlenen alanındaki sayısal değer ile program sayacının bir sonraki komutu belirleyen sayısal değerini toplar. Elde ettiği sayısal değer komutun INC işlemini ya pacağı yerin adresidir. Bu adresteki sözcüğe 1 eklene rek komut işlenmiş olur.
PS
PS 2
•İŞLENEN
PS 4
3 3 2 DOLAY LI (DEFERRED) ADRESLEME KİPLERİ
Komuttaki işlenen alanının içeriği, GÖSTERGE (POINTER) diye isimlendirilen bir yazmacın adresini gösterir. Göstergenin içeriği arzulanan işlenenin ad residir. Bu teknik de kendi içinde alt sınıflara ayrılır.
a) Y AZMAÇ DOLAY LI Kİ Pİ : Seçilmiş yazmacın içeriği işlenen adresidir. Bu kipin simgesel gösterili mi aşağıdaki gibidir, örnek olarak LS111 bilgisayarın da CLR A R5 dir. A simgesi dolaylı adresleme tek niğini belirtmektedir. İşlem kodu, R5 yazmacının içeriğinin gösterdiği adresteki Sözcüğün sıfırlanması nı istemektedir.
KOMUT »ADRES
ŞİŞLENEN
KENDİLİĞİNDEN ARTAN DOLAY LI KİPİ (AUTO INCREMENT DEFERRED MOD): Komutun işlenen alanının içeriği gösterge yazmacının adresidir. Gös terge yazmacının içeriğinin gösterdiği adresteki söz cük arzulanan işlenenin adresidir, işlem tekrarlı ol duğundan gösterge yazmacının içeriği her seferinde 2 arttırılır. Arttırma işleminin kaç kere yapılaca ğı bir yazmaçta verilmiştir. Bu kipin simgesel gös terimi aşağıdaki gibidir, örnek olarak LSI 11 bil gisayarında INC Q(R5) + komutunu inceleyelim. Ko mutun işlenen alanında görülen, R5, gösterge yazma cının adresidir. Komutun işlem kodu ise, gösterge içeriğinin gösterdiği adresteki kelimeyi arzulanan iş lenenin adresi olarak alır. Sonuçta bu adresteki işle nenin değerini 1 arttırır ayrıca gösterge yazmacının değerini de 2 arttırarak komutun işlenmesini bitirir.
KOMUT—> ADRES f^ADRES—^OPERAND
+2
c) KENDİLİĞİNDEN AZALAN DOLAY LI ADRES LEME KİPİ (AUTO DECREMENT DEFERRED MOD): Komutun işlenen alanının içeriği gösterge yazmacının adresidir. Gösterge yazmacının içeriğin den 2 eksiltildikten sonra yeni içeriğin gösterdiği ad resteki sözcük arzulanan işlenenin adresidir.
İşlem tekrarlı olduğundan gösterge yazmacının içe riği her seferinde 2 eksiltilir. Eksiltme işleminin kaç kere yapılacağı bir yazmaçta verilmiştir. Bu kipin simgesel gösterilimi aşağıda verilmiştir.
KOMUT »ADRES ^ 2 _ > A D R E S j Ş L E N E N örnek olarak LSI 11 bilgisayarında COM O (RO) komutunu inceleyelim. Komutun işlenen alanında görünen RO gösterge yazmacının adresidir. Komutun işlem kodu, Göstergenin içeriğini 2 eksiltir. Y eni içe riğin belirttiği adresteki Sözcüğü arzulanan işlenenin adresi olarak alır. Sonuçta işlenene değilleme COMP LEMENT işlemini uygular.
d) Dİ Zİ NLİ DOLAY LI ADRESLEME KİPİ (IN DEX DEFERRED M OD): Seçilmiş genel yazmacın içeriği ile dizin yazmacının içeriği toplanır. Bu sonra gösterge otarak alınır. Y eni içeriğin belirttiği adres teki sözcük arzulanan işlenenin adresidir. Bu kipin simgesel gösterimi aşağıdaki gibidir.
KOMUT ADRES++ ADRES »İŞLENEN örnek olarak LSI 11 bilgisayarındaki ADD 0 1000 (R2 ), Rl komutunu inceleyelim. Komutun işlenen alanında görünen 1000 dizin yazmaç içeriği, R2 ise seçilmiş yazmaç olmaktadır. Komutun işlem kodu ise, dizin yazmacının içeriği ile R2 yazmacının içeri ğini toplar. Toplamın gösterdiği adresteki sözcüğü ad res olarak alır ve bu son adresin içeriğini Rl yazmacı nın içeriği ile toplar ve sonucu R1 'de saklar. Böylece komut işlenmiş olur.
e) IMMEDIATE DEFERRED Y A DA ABSOLUTE MODU: Komutun işlenen alanındaki sayısal değer ar zulanan işlenenin adresidir.
Bu kipin simgesel gösterimi yukarıdaki gibidir, örnek
olarak LSI 11 bilgisayarında ADD 0 / 2000, R3 komutunu inceleyelim. Komutun işlem kodunda, işlenen alanında görülen değişmenin tanımladığı ad resteki sözcük ile R3 yazmacının içeriğini toplanması ve sonucun R3 yazmacına yazılması istenmektedir.
f) RELATIVE DEFERRED MODU: Komutun işle nen alanının içeriği ile program sayacının bir sonraki komutu belirleyen değeri toplanarak gösterge yazma cının adresi bulunur. Gösterge yazmacının içeriği ar zulanan işlenen adresidir. Bu modun simgesel göste rimi aşağıdaki gibidir.
PS PS + 2 PS + 4
İŞLEM KODU İŞLENEN ALANI İŞLEM KODU
Adres + İşlenen
örnek olarak LSI 11 bilgisayarında CLR 0 A komu tunu inceleyelim. Komutun işlenen alanında görünen simge, makinenin relative deferred modunda işlem göreceğini belirtmektedir. Komutun işlem kodu işle nen alanındaki simgenin sayısal içeriği ile program sayacının bir sonraki komutu belirleyen değerini top lar. Böylece gösterge sayacının adresi bulunmuş olur. Bu içerik işlem görülecek işlenenin adresidir. Sonuç ta elde edilen işlenen komut gereği sıfırlanır.
3 4 YORUM (COMMENT) ALANI
Programı daha iyi okunabilir duruma getirmek için kullanılan alandır. Bu alanda tanımlayıcı açıklamalar bulunur. Bu açıklamalar assembler tarafından göz Önünde bulundurulmaz. Ancak assemblerin ürettiği çıkış listesinde yer alır. Yorum Alanı işlenen alanını izler ve ondan hiç olmaz ise bir boşluk ile ayırt edilir. DEYİM'in sonu bir CR (Carriage Return) ve LF (Line Feed) satır besle ile sonlanır. İşlenen yoksa yorum alanı gözardı edilir, örneğin HP 2116 bilgisayarında HLT, NAM ve END komutlarında bu alan gözardı edi lir.
4 ASSEMBLY DİL İ İLE BİR PROGRAMLAMA ÖRNEĞİ
Assembly dilinin kimi temel ilkelerini kullanarak bir programlama denemesi yapalım, örneğin Telex üze rinden iletişimi donatılmış bir uzak yazıcı (Teletype) tarafından gönderilen dizi verinin alınması için bir program yazalım. Çizim 4 1 a 'da genel durumu ile işaret formatı temsil edilmektedir, örnek olarak "R" nin kodu gösterilmektedir. Her 'bit' 22 MS lik süre ile gönderilmektedir. Gönderilecek veri bulunmadığı za man hat sürekli olarak " 1 " (STOP) konumunda kal maktadır. Veri gönderilirken birinci bit olarak her zaman Başta (Start) Biti " 0 " , gönderilir.
Genel
ST Bl B2 B3 B4 B5 DUR
örnek 'R'
ST 0 r
a
Başlangıç Değ.
Başlat Biti
II MS Gecikme
22 MS Gecikme
0 DUR
biriktir C'yı I eksilt
C=0
|EV" Sonuçlar
b Çizlm 4 1 Bilginin ve Programın akış dlagramı
Çizim 4 2 Gecikmenin akış şeması ile devrede yapılışı
i Yükle
D'yi 1 Eksilt
D=Ö
LC_A7—A6 A5 A4 A3 A2 A1 A0—I
Zamandaşlama (Senkronizasyon), 1'den O'a başla anından itibaren her bit'in merkezine olan zamanın ölçülmesi ile de elde edilir. Şekil 4 1 b 'de ise istenen
ELEKTRİK
MÜHENDİSLİĞİ
program için ayrıntılı bir akış şeması bulunmaktadır. Burada, zaman gecikmelerini temsil eden iki öbek dikkatimizi çekmektedir. Bunlar, 11 MS ile 22 MS' lik gecikmelerdir. Çizim 4 2 a da 11 MS'lik gecikme nin ayrıntılı akış şeması gösterilmektedir. Bu yordam da (routine) D yazmacı kullanılmaktadır. D yazmaç larındaki döngülerin sayısal adedi istenen zaman ge cikmelerini sağlamaktadır. INTEL 8008 mikro bilgi sayarını kullandığımızı varsayalım.
Bunun INCREMENT komutu ile 20 A» ve JUMP komutu ile 44 tıs l i k gecikmeler sağladığını bilmek teyiz. Bu durumda döngüdeki toplam gecikmenin 20 + 44 = 64 MS olduğu görülür. 11 MS'lik bir ge cikmenin elde edilebilmesi için 11000/64 = 1 7 2 kere döngü etrafında dolanılması gerektiği ortaya çı kar. Gecikme programının simgesel biçimi şöyledir.
ETİKET LOOP1
İŞLEM KODU MVI DCR JNZ
OPERAND Y ORUM D, 172 11 MS D LOOP1
Burada simgesel adreslerin yararlarını görmekteyiz. Programın bu kısmının, belleğin neresinde olacağına ilişkin bir fikrimiz yoktur. JUMP komutu ile bir ön ceki adrese tekrar başvurmalıyız. Basitçe LOOP 1 gibi keyfi bir isim yaparak, adresleri artık düşünmek sizin bu isme ilgi kurabiliriz.
Assembly programıda bu noktadan sonra ayrıntıları göz Önünde bulunduracaktır Veyahut JUMP ko mutundan itibaren işlenen Alanındaki adresi ($) olarak tanımlayabiliriz. Bu durumda LOOP 1 gibi simgesel bir adrese gereksinim duymayız. Gecikme programı aşağıdaki biçimde yazılabilir. Her iki du rumda da Assembler tarafından üretilen Amaç Prog ram birbirine eşdeğer olacaktır. İkinci yöntem "de ğişken sözcük uzunluk" makinelerde tümüyle tehli keli olacaktır.
İŞLEM KODU MVI. DCR )NZ
OPERAND D, 172 D $1
Y ORUM 1.1 MS GECİKME
22 MS'lik gecikme elde etmek önemli bir sorundur, zira basit bir çevrim ile üretebileceğimiz en fazla ge cikme 256 x 64 = 16700 16,7 S 'lik gecikme elde edilebilir Amaçlarımıza uygun olan gecikmeyi çev rim içine basit bir komut koyarak elde edebiliriz, örneğin (CMP M) komutunu eklersek bir kaybımız olmayacak, tattı tersine çevrim zamanına bir 32 Ms daha eklemiş oluruz, böylelikle onu, 64 + 32 = 96 [is ye çıkartmış oluruz. İstenen çevrim sayısı ise
22000/96 = 230 olur. Böylece 22 MS lik gecikme yordamı için Assembly Programı aşağıdaki biçimde olacaktır.
ETİKET İŞLEM KODU OPERAND Y ORUM
D, 230 11 MS GECİKME
LOOP2 CMP
M
D
LOOP 2
Her 22 MS gecikmenin sonunda, yeni bit zamanının merkezi elde edilecektir. Sonra A yazmacının 0 bi timine bir bit koyacağız. Bu biti daha sonra RAR (ROTATE A RIGHT) yapması için Çizim 4 2 b'de gösterildiği gibi Carry FFa koyacağız, önceki birik tirilmiş bitlerin B kayıtlayıcısından A yazmacına aktarılması (MOVE) daha sonra ROTATE A LEFT komutu ile yeni bitin A içine taşınması ve diğerleri nin bunu izlemesi sağlanır. Daha sonra A yazmacın dan B yazmacına biriktirilmiş veri aktarılır ve üze rine 1 eklenir ve sonunda bit sayısı sınanır. Y orum ları ile birlikte simgesel kodlama aşağıdaki gibidir.
İŞLEM KODU OPERAND Y ORUM
A, ya yeni bit'i gir
Y eni bit'i Carry'ye al
A, B
önceki bit'leri A'ya koy
Bütün bit'leri sola kaydır
B, A
Bit'leri B de tut
C
Bit sayacını 1 azalt
LOOP 3
5. bit değilse çevrime
devam
Programlanmıyan tek nokta çizim 4 1 b'deki Akış
şemasının başlangıç kısmıdır. Bunun için, bit sa
yıcısını basitçe 5 ile yüklemeliyiz.
Arkasından bir HALT komutunu işletmeliyiz. Böy lece bir kesme imi gelene değin mikro işlemci DUR konumunda kalacaktır. Bu durumda, Veri hattı o giriş kapısının 0 bitimine bağlı olduğu gibi mikro işlemcinin kesme girişine de bağlıdır. Bir BAŞLA imi (start transition) alındığında, ilk komut olan 11 MS'lik gecikme ile program başlayacaktır. Baş lama imini sınayan diğer bir döngü programı da aşa ğıdaki gibidir.
İN CPI JNZ
0 0 $2
Giriş imi DUR konumunda kaldığı sürece program yukarıda yazılı olan döngü yordamında kalacaktır. Başla imi geldiği an program döngü yordamından çı kar ve 11 MS'lik gecikmeyi sağlayan bölüm ile devam
eder. Y ukarıdaki yöntem programa 3 fazla byte kon masına neden olur. Tamamlanmış program, tartış tığımız kısımların basitçe biraraya getirilmesiyle ya zılabilir. Aşağıda Assembler tarafından listelenmiş program gösterilmektedir.
Çizelgeden görüldüğü gibi, listelenmiş assembly prog ramının sol yanında adanmış bellek yerelleri ve onal tılı biçimde komut kodları bulunmaktadır. Soldan itibaren her sıradaki ilk 4 adanmış bellek yerelleri ad residir. Ayni sıradaki son 4'dii ise komut kodunun kendisi olup komutun her byte'ına karşılık gelen iki onaltılı hane olarak basılıdır.
Assembler tarafından basılan listedeki ilk satırdaki ilk komutun (M V I C, 5) 0 0 0 0 ve 0001 no'lu bellek ye rellerinde saklandığı (biriktirildiği) gözlemlenmekte dir. Komut kodunun onaltılı hanesi 16'dır. Bu MCS8
assemblerinde 00 0 1 0 1 1 0 ikili işlem koduna karşılık eder.
Burada C yazmacının 0 1 0 göstermektedir. Komut kodunun ikinci onaltılı hanesi immediate işleneni temsil eden S'dir. S Buda MCS8 assemblerinde 0 0 0 0 0 1 01 ikili işlem koduna karşılık gelir. Bir sonraki komut (HL T) ikinci bellek yerelinde saklıdır. Ve içe riği sıfırdan oluşur. Görüldüğü gibi Assembler, istenen işlem kodlarını ve adanmış ardaşıl adresleri kendi liğinden üretir. Şimdi, JNZ $ 1 komutunun ikinci byte'ını göz önüne getirelim. Burada assembler, o anki bellek yeri adres değerinden (6 ), 1 çıkartma işle mini ( 6 1 = 5 ) hesap etmektedir. Aynı biçimde assembler L0 0 P3 etiketini de göz önünde bulundurur. Programın son satırında işlenen alanında görünen L00P3'ü daha önceden adanmış olan 9 sayılı bellek yereline gönderir.
ASSEMBLER TARAFINDAN ÜRETİLEN ÇIK IŞ LİSTESİ
SIRA BELLEK KOMUT ETİKET İŞLEM
Y ERELİ KODU
KODU
IEAC
480500
IEE6 L00P3 MVI
000B
BF
L 0 0 P 2 CMP
OOOC
000D
480BOO
1A
C1
C8
480900
İŞLENEN Y ORUM
C,5
D, 172 D şı
D, 230 M D LOOP2 0
A,B
B,A C LOOP3
bit sayıcısına 5 koy başla gelene değin bekle II M Slik gecikme D'yi 1 azalt D = 0 olana kadar çevrimde kal 22 MS'lik gecikme zaman gecikmesi ekle D'yi 1 azalt D = 0 olana kadar çevrimde kal Y eni biti gir biti Cary'ye al Önceki bitleri A'ya koy Bütün bitleri sola kaydır Bitleri B'de tut Bit sayıcısını 1 azalt 5. bit değilse çevrimde kal
KAYNAKÇA 1. Software Design Far Microprocessors, J.G. VVester, W.D. Simpson, 1976,Texas Instrument Inc., 2. Microcomputer Handbook, DEC, 1976 S. A Pocket Guide To Hevvlett • Packard Computers, H.P., 4. Minicomputer Systems, Organization andProgramming (PDP 11), R.H. Eckhouse.Prentice Hail Inc., 1975, 5. Minicomputers in Data Processing And Simulation, B. Soucek. J ohnWiley and Sons, 1972, 6. Digital Design With Standart MS 1 And LS 1, T.R. Blakes lee, John Wiley and Sons, 1979, 7 Introduction To Computer Organization And Data Structures, H.S. Btone, McGravv Hill Book Company. 1972
8. Microprocessors in Instrument And Control. R.J. Bıbbero
JohnVViley and Sons Inc, 1977, 9. 8080 Microcomputer Systems User s Manuel, Inte 1,1975,
10.Z 80 Microcomputer Data Book, Mostek, 1981, 11.Microprocessors and Logic Design, R.L. Kura, John Wüey And Sons Inc, 1980, 12 Microprocessors Programming And Softvvare Develop ment, F.G. Duncan, Prentice Hail International Inc., 1979, 13 Model 70 User's Manual, Interdata Inc., 1970, 14 8080/Z80 Assembly Language, Techniques For Improver Programming A.R. Miller, John Wiley and Sons Inc., 1981, 15 TMS 9980 Microprocessor Data Manual, Texas Instru ment Inc, 1979, 16 Z8 Single Chip Microcomputer, Technical Manual. Syner tek, 1979, 17 Am Z 8000 Microprocessors Specifications, Advanced Micro Devices, 1978,
18 Microprocessors User's Guide, Pro Log Corp., 1979
1980.