ASSEMBLER -2 İnsan beyninin bilgisayarlara göre en önemli üstünlüğü birkaç işlemi aynı anda yapabilmesidir. Örneğin bir in- san müzik dinlerken kitap okuyabi- lir ve aynı zamanda birşeyler yiyebi- lir. Bilgisayarlarda ise durum tama- men farklıdır ve tüm işlemler belli bir sıraya göre ardı ardına yapılır. Yal- nız burada herşey o kadar hızlı ger- çekleşir ki bilgisayar aynı anda bir- den fazla işlem yapıyormuş gibi gö- rünür. Makine dilinin mantığı da he- men hemen aynıdır. Assembler ko- mutlarını bilgisayar çok yakından ta- nıdığı için bunları hemen işleme koy- maktadır. Böylelikle makine dilinin özelliklerini mantıklı şekilde kullana- rak bilgisayarımızın birkaç işi birden yapmnsını sağlayabıhnz da bahsettiğimiz komutlar zınc:ırınm ilk parçası LDA komutu- dur. Bunun anlamı şudur: Bellekte- ki değeri akümülatöre yükle (Load accumulator with memory). Tüm Assembler komutları üç harf- ten oluşmaktadır. Geçen sayımızda her makina dili komutuna bir 8-Bit kodun eşlenmiş olduğunu belirtmiş- tik. LDA komutu için bu kod $a9 ve- ya desimal 169'dur (ikilik sistemde de 10101001). Şimdi bu kodun belleğin herhangi bir baytında kayıtlı olması lazımdır. Bu bayt $1500 veya desimal 5376 olsun. O halde Assembler satı- rımız şu şekilde olmalıdır: 1500 LDA Yalnız burada yine eksik birşey vardır. Akümülatöre hangi değer yüklenecek? PEEK, POKE gibi bazı Basic komutlarında da olduğu gibi Assembler komutlarının birçoğu da tek başlarına kullanılmazlar. Bunlar- da her seferinde komutu takip eden bir parametre bulunur. Makina dilin- de bu parametreler ikiye ayrılır: Bir baytlıklar ve iki baytlıklar. Eğer akümülatöre O1 değerini yük- lemek istersek Assembler satırımız şu şekli alacaktır: 1500 LDA # $01 Şimdi burada Ol değerinin önün- $ ne işe yarıyor diye soracak- deki sınız. Assembler programlarının bir- çoğu veri girişinde onaltılık sayı sis- temini kullanır, fakat bunun yanın- da ikilik veya onluk sayı sistemini kullananlar da vardır. Hatta çok ge- lişmiş bazı Assembler'lar ASCII- işaretlerini de kullanırlar. Her veri gi- riş türü için bir özel sembol belirlen- miştir. Genellikle onaltılık sayı siste- mi için “$*, ikilik sayı sistemi için *x”, desimal için *!” kullanılır. Yukarıdaki örnekte kullanılan **$”* parametrenin onaltılık sayı sistemin- de olduğunu belirtmektedir. #” işaretine gelelim. Akümüla- töre bir değer yüklemenin çok çeşidi vardır: Burada olduğu gibi doğrudan bir sayı verme, herhangi bir adreste bulunan değeri yükleme vs. Bizim kullandığımız doğrudan bir sayıyı akümülatöre yükleme yöntemi- ne “dolaysız adresleme”' adı verilir ve “#" ile gösterilir. Eğer $1500 adresin LDA'nın ma- kine dili karşılığı yer alırsa bir son- raki adreste, yani $1501'de akümü- latörün alacağı değer olan O1 bulun- malıdır. Bu nedenle bir sonraki As- sembler satırımızı hafızada ancak $1502 adresinden sonra yerleştirebi- liriz — Bir monitör ile Assembler'da program yazarken genellikle istenen başlangıç adresinin başına bir “*A” harfi konulur. İlk satır yazılıp RE- TURN'”e basıldığında bilgisayar yaz- dığımız satırın kaç bayt işgal ettiğini hesaplar ve bir sonraki satırın başla- yacağı adresi otomatik olarak yazar. Örneğin EXMON'da şu satırları yaz- malısınız: A 1500 LDA # $01 Şimdi RETURN'e bastığınız ekranda A 1500 LDA # $01 A 1502 satırları gözükür ve bilgisayar bizden 23