1.BÖLÜM 1.SAYI SİSTEMLERİ

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "1.BÖLÜM 1.SAYI SİSTEMLERİ"

Transkript

1 1.BÖLÜM 1.SAYI SİSTEMLERİ Başka bir gezegeni ziyaret etmedikçe, nesneleri ondalık sayılar kullanarak sayarak hayatımızı geçiririz. Matematikçiler ondalık ifadesini 10 tabanında sayma sistemi olarak değerlendirirler. Çünkü bu 0 ile 9 arasında 10 rakamdan oluşmaktadır. İnsanoğlu ondalık sayılarla daha rahat sayabilmektedir. (Belki de on el ve ayak parmağı olduğu için.) Ama bilgisayarlar böyle değil. Bunun yerine bilgisayarlar 2 lik tabandaki (binary) sayma sistemiyle sayarlar. Bu tabanın yalnız iki rakamı vardır. 0 ve 1. Bundandır ki bilgisayarlar kendi düzeylerinde haberleşirler. (Siz bunu assembler dili kullandığınızda yaparsınız.) İkilik (binary) sayma sistemine alışık olmalısınız. Binary yanında, assembler-dili programcıları bir diğer sayma sitemi olan 16 tabanındaki (hexadesimal) sayma sitemine de iyi derecede alışık olmalıdırlar. Bu bölüm daha önce hiçbir birikimi olmayan okuyucular için bilgisayar sayı sistemlerini ele alır. Eğer zaten binary ve hexadesimal sayma sitemlerini biliyorsanız bu bölümü atlayabilirsiniz. 1.1.İKİLİK (BINARY) SAYMA SİSTEMİ Bir bütün program talimatlarını ve veriyi belleğinden alır. Bellek binlerce elektrikli bileşen içeren tümleşik daireler (ya da yongalar) kapsar. Işık anahtarları gibi bu bileşenlerde yalnız iki olası ayar vardır. On ya da off. Hala yalnızca bu iki ayarla, bellek bileşenleri kombinasyonları herhangi bir boyutun sayılarınız gösterebilir. Nasıl mı? Okumaya devam edin. Bellek bileşeninin On ve Off ayarları ikilik sayı sisteminin iki rakamıyla uyuşmaktadır. Bu bilgisayarın temel sistemidir. Yalnızca iki rakamımız var. 1 (On) ve 0 (Off). İkilik sayı sistemi bir 2 tabanı sitemidir. Yeniden, bu durum ikilik sayı sistemini 10 rakama sahip (0 ile 9 arasında) standart ondalık sayı sisteminden ayırır. Belleğin anahtara benzer bileşenleri bits (binary digits in kısaltması) diye adlandırılır. Gelenek olarak, bir bit on olduğunda 1 değerini off olduğunda 0 değerini alır. Bu gösterir ki bir ondalık rakamı (0 ile 9 arasında) düşünene kadar sınırlandırır. Şimdi siz ondalık rakamları 9 dan büyük formda sayılara birleştirebiliyorsanız, binary rakamları da 1 den büyük sayılara birleştirebilirsiniz. Bildiğiniz gibi 9 dan büyük ondalık sayıları göstermek için ek onlu rakamlara ihtiyacınız var. Benzer şekilde 99 dan büyük ondalık sayıları göstermek için bir yüzlü rakama gerek var ve böyle devam eder. Her ondalık rakam için hemen sağına 10 un katları rakamları eklemelisiniz. 1

2 Örneğin; 324 sayısını göstermek için (3*100)+(2*10)+(4*1) ya da böyle (3*10 2 )+(2*10 1 )+(4*10 0 ) Böylece, her ondalık rakamda 10 un gücü önündeki rakamdan daha büyüktür.benzer kural ikilik sistemde de uygulanır. Burada her ikilik rakamda ikinin gücü önündeki rakamdan daha büyüktür. En sağdaki bit 2 0 ın katına sahiptir (Ondalık 1). Sonraki bit 2 1 nin katına sahiptir (Ondalık 2) ve böyle gider... Örneğin: İkilik 101 sayısı ondalık 5 değerindedir. Çünkü: = (1*2 2 ) + (0*2 1 )+ (1+2 0 ) = (1*4) + (0*2) + (1*1) = 5 10 Binary sayılarının nasıl inşa edildiğini anlayabiliyor musunuz. Verilen herhangi bir bit konumunun değerini bit durumunun öncellenmesinin ağırlığını iki katına çıkarırsınız. Böylece ilk sekiz bitin binary ağırlığı 1, 2, 4, 8, 16, 32, 64 ve 128 olur. Bu durum Şekil 0-1 de gösterilmiştir BIT KONUMU İKİ ONDALIK DEĞERİN GÜCÜ Şekil.1.1 Sekiz ikili rakamın ağırlıkları. Ondalık sayıyı ikilik sayıya çevirmek için bir dizi basit çıkarama işlemi yapın. Her çıkarma prosedürü bir tekil ikilik rakam (bit) değeridir. Başlamak için en büyük olası ikilik ağırlığı ondalık değerden bu bit konumuna 1 girin. Sonra sonraki en büyük ağırlığı sonuçtan çıkarın ve bu bit konumuna bir 1 girin. Sonuç 0 2

3 olana kadar devam edin. Herhangi bir güncel ondalık değerden çıkarılamayan ağırlıklı bir konuma bir 0 girin. Örneğin: Ondalık 50 yi ikiliğe çevirmek için bit konumu 5 = bit konumu 4 = bit konumu 1 = 1 0 Değer bit değerlerine (3,2 ve 0 bitlerine) bir 0 girmek sonuç değerini vermeyi sağlar. Sonuç Ondalık 50 nin eşiti ikilik değerin gerçekten olduğunu doğrulama için, 1 in konumlarının ondalık ağırlıklarını toplayın. 32 (bit 5) 16 (bit 4) - 2 (bit 1) Sekiz Bit Bir Byte Eder Apple II Ailesi Commodore 64 ve VIC-20, Radio Shack TRS-80 ve diğer ünlü mikrobilgisayarların mikroişlemcileri 8-bit çevresinde tasarlanırlar. Sekiz-bit mikroişlemciler zaten böyle isimlendirilmiştir. Çünkü bunlar bilgiyi bir anda sekiz bit olarak işlerler. İşleme sekiz bitten daha fazla olduğunda bu mikroişlemciler ek işlemler gerçekleştirmelidir. Bilgisayar terminolojisinde bilginin bit 8-bit birimi byte olarak adlandırılır. Sekiz bitle, bir byte 0 (ikilik ) ile 255 (ikilik ) arasında ondalık değerlerle gösterilir. Bir byte işleme biriminin temelidir. Mikrobilgisayarlar belleklerinin tutabildiği byte numaralarının açıklaması içinde tanımlıdır. Mikrobilgisayar üreticileri belleği 1,024 byte lık blokların içinde inşa ederler. Bu belirli miktar 2 10 byte gösteriminde bilgisayarların ikilik yönelimini yansıtır. 3

4 1.024 değerinin bir standart kısaltması vardır. Bu K harfidir. Bu sayede bir bilgisayar 256*1.024 (ya da 262,144) byte içeren 256K bellek içerir İkilik Sayıları Toplamak İkilik sayıları ondalık sayılarla aynı yolla toplayabilirsiniz: Bir sütundan sonrakine fazlayı taşıyarak. Örneğin ondalık 7 ve 9 değerlerini toplamak için: onlar sütunundan üretilmiş doğru sonucu (16) bir 1 taşımalısınız. Benzer bir şekilde, 1 ve 1 ikilik değerini toplamak için, ikiler sütunundan üretilmiş doğru değere (10) bir 1 taşımalısınız. Çoklu-bit sayılarını toplamak biraz karmaşık olur. Çünkü siz bir önceki sütundan bir elde sağlamalısınız. Örneğin bu işlem iki elde gerektirir En sağdaki sütunun toplanması (1+1) 0 sonucunu üretir ve 1 in bir eldesi ikinci sütunun içinedir. Eldeyle birlikte ikinci sütunun toplanması ( ) 1 sonucunu üretir ve bir elde de üçüncü sütunun içinedir. İkilik toplamada genel kurallar bu tabloda gösterilmiştir. Tablo.1.1. İkilik Toplamada Genel Kurallar: Girdiler Sonuçlar Operand #1 Operand #2 Elde Toplam Elde

5 1.1.3.İşaretli Sayılar Şimdiye kadar ikilik içindeki işaretsiz sayıların nasıl gösterildiğini tartıştık. Daha önce andığımız gibi bir işaretsiz sayının içindeki her bit onun konumunu yansıtan bir ağırlığa sahiptir. En sağdaki (ya da) en az-belirgin bit 1 in ağırlığına sahiptir. Her daha belirgin bit iki kez ağırlığa sahipse bu onun öncelidir. Böylelikle, eğer bir byte taki her sekiz bit 0 sa byte 0 değerine sahiptir. Eğer hepsi 1 ise, byte 255 değerine sahiptir. Bununla beraber, siz sık sık pozitif ve negatif değerleri işletmek isterseniz. Bu işaretli sayılar dadır. Bir byte bir işaretli sayı yalnızca yedi en az-belirgin bit (0-6 arası) veriyi gösterir. En belirgin bit (7) sayının işaretini belirtir. İşaret biti 0 ise sayı pozitif ya da sıfır ve 1 ise sayı negatiftir. Şekil 0-2 işaretli ve işaretsiz byte ların sırasını gösterir işaretsiz sayı her bit veri gösterir 0 pozitif işaretli sayı düşük seviyeli bitler veri gösterir işaret biti= negatif işaretli sayı ikinin-bileşeni formundaki düşük seviyeli bitler veri gösterir, işaret biti=1 Şekil.1.2. İşaretli ve işaretsiz sayıların gösterimi. 5

6 İşaretli sayı tutulurken, bir tekil byte 0 (ikilik ) ve +127 (ikilik ) arasında pozitif değerleri gösterebilir. Ve 1 (ikilik ) ve 128 (ikilik ) arasında negatif değerleri gösterir. Not: -1 ikilik olarak dir. Bu den daha kolay değil midir? (Bu, 1 ve bir eksi işaret bitidir.) Hayır. Bu yanlış yanıtlar üretebilir. Düşünün Örneğin, +1 ve 1 eklerseniz ne olur. Yanıt kesinlikle 0 olmalı = = = -2 Böylece -1 göstermek için birkaç yol gerekir. +1 eklediğimizde 0 elde ederiz. 1 için ile geldiğinde: bu doğru yanıtı üretir. Bunu test etmek için toplamamızı yeniden yapalım = = = 0 Başındaki fazladan 1-bit elde dir. Artık bit toplamadan gelir. Basitçe yok sayabiliriz İkinin Bileşeni -1 deki gibi tüm negatif işaretli sayılar özel bir formda gösterilmiştir. Bu yapılan toplamalarda doğru yanıtları üretir. Buna ikinin bileşeni formu denir. Negatif sayıların ikilik gösterimini bulmak için (bu ikinin bileşen formunu bulmaktır.) basitçe sayının pozitif formunu alın ve her biti tersine çevirin. (--- her 1 i 0 a ve her 0 ı 1 e ---) sonra sonuca 1 ekleyin. Örneğin devamında 32 nin ikinin bileşeni ikilik gösteriminin nasıl hesaplanacağını gösteriyor. 6

7 her biti tersine çevir ekle , ikinin bileşeni formunda Şüphesiz, ikinin bileşeni dönüşümü negatif sayıları zor çözülür yapar. İyi ki aynı prosedürü bir (ikinin tümlenmişi) negatif sayının pozitif formunu bulmak için verdiğimizde de kullanabiliyoruz. Örneğin: değerinin sahip olduğu değeri bulmak için aşağıdaki gibi bir yol izlenir her biti ters çevir ekle = 16+32=48 Assembler programları ayıları ondalık formda (işaretli ya da işaretsiz) girmenize isin verir ve kendiliğinden bütün dönüşümleri yapar. Bununla birlikte bu dönüşümleri kendiniz yapabilecekseniz bellekte ya da bir saklayıcının içinde saklanmış bir negatif sayının açıklamasını yapmak isteyebilirsiniz. 1.2.HEXADESİMAL (ONDALIK) SAYILAR: Gerçi, ikilik sayı sitemi, belleğin içine gönderilmiş sayıları göstermek için işe yarar bir yoldur. Yalnız birinin stringi ve sıfırlarla çalışmak çok zordur. Bunlar zaten hataya meyillidir. Çünkü gibi bir sayı, kötü tip tanımlamak için aşırı derecede kolaydır. Yıllar önce, programcılar genel olarak bitlerin gruplarıyla işlem yapmanın tek bitlerle işlem yapmaktan daha iyi olduğunu buldular. En başlangıçtaki mikroişlemciler 4-bit aygıtlardı (bir anda dört bit bilgi işlenirdi). Bu nedenle mantıksal alternatif olan ikilik bitleri dördün grupları olarak numaralayan bir sistemdi. Bildiğiniz gibi, dört bit ikilik değerleri 0000 ile 1111 arasında (ondalık 0 ile 15 değerleri arasına eşittir), 16 olası olası kombinasyonun bir toplamı olarak gösterir. Eğer sayma sistemi bu 16 kombinasyonda gösterirse, 16 rakama sahip olmalıdır. Bu da bir taban 16 sistemi olmalı Eğer taban 2 sayılıysa binary ve taban 10 sayılıysa desimal denir. Peki bir taban 16 sitemi için hangi terim uygundur? Evet herkes taban 16 sistemini bir Yunan sözcüğü olan hex (6 için) ile bir Latin sözcüğü olan decem (10 için) birleşimiyle oluşan hexadecimal 7

8 (hexadesimal) ismiyle isimlendirdi. Bu sayede taban 16 sistemine hexadesimal (onaltılı) sayı sistemi dendi. Hexadesimal sayı sistemindeki 16 rakamın ilk 10 u 0 ile 9 arasındadır. (ondalık 0 ile 9 arasındaki değerler) ve son altısı A ile F arasında (ondalık 10 ile 15 arası değerler) etiketlendi. Tablo 0-2 her hexadesimal rakamın ikilik ve ondalık değerini listeler. Tablo.1.2. Hexadesimal Sayı Sistemi: Hexadesimal Rakam Binary Değeri Ondalık Değeri Hexadesimal Rakam Binary Değeri Ondalık Değeri A B C D E F İkilik rakamlar ve ondalık rakamlar gibi her hexadesimal rakamda kendi tabanının bazı katlarında bir ağırlığa sahiptir. 16 tabanlı hexadesimal sayı sisteminde her rakam ağırlığı bir sağındaki bir sağındaki rakamdan daha büyüktür. Bu 16 defa sürer. En sağdaki rakam bir 16 0 ın ağırlığındadır. Yanındaki 16 1 ağırlığında, ve böyle devam eder.örneğin: Onaltılı 3AF değeri ondalık 943 değerine sahiptir. Çünkü: (3*16 2 ) + (A*16 1 ) + (F*16 0 ) ondalık formda (3*256) + (10*16) + (15*1) = Hexadesimal Sayıları Kullanma BASIC ve diğer yüksek-düzeyli diller genellikle sayıları ondalık formda gösterirken, assembler dili genellikle sayıları hexadesimal formda gösterir. Bu adresleri, talimat kodlarını ve bellek bölgesiyle saklayıcılarının içeriğini kapsar. Böylelikle programınızdan en yüksek verimi almanız için hexadesimal düşünmeyi deneyin. Bu ilk başta zordur, ancak bu daha fazla deneyim kazanmanızı kolaylaştırır. 8

9 1.3.ASCII / BINARY KOD DÖNÜŞÜMLERİ Bilgisayar her zaman klavye karakterlerini ASCII ye çevirir. Girdi bir sayı sunarsa, işlemci onu işletmeden önce binary ye ya da BCD ye dönüştürmelisiniz.. Aynı şekilde önce bir sayı yazdırabilir ya da bunu ekran üzerinde gösterebilirsiniz. Bunu ASCII forma sokmanız gerekir. Biz her problemi bu bölümde adresleyeceğiz: ASCII sayıdan binary ye ve binary sayıdan ASCII ye nasıl dönüştürülür. (ASCII ve BCD arasındaki dönüşüm benzer prosedür gerektirir. Bu alıştırma okuyucuya bırakılmıştır.) ASCII Strigleri Binary ye Dönüştürme: Tablo, ile 9 arasındaki rakamlar için ASCII kodlarını gösterir. Görebileceğiniz gibi değer aralığı 30H dan 39H2a kadardır. Zaten ondalık rakamın binary eşiti basitçe ASCII kodun düşük dört biti olduğu not edilmiştir. Tablo.1.3. Ondalık Rakamlar İçin ASCII kodları ASCII Değer (Hex) Ondalık Rakam(Dec) Daha önce söylediğimiz gibi ondalık sayılar 10 un kuvvetleriyle çarpılmış rakamları dizisiyle açıklanmıştır. Örneğin: 237 = (7*1) + (3*10) + (2*100) ya da 237 = (7*10 0 ) + (3*10 1 ) + (2*10 2 ) Bir anda bir rakam olarak sayıları girmemizden beri, bir ASCII-tabanlı ondalıktan ikiliğe dönüşüm yordamı ondalık ağırlıkları için hesap yapmalı. Bu yordam bir ya da daha çok 10 ile çarpma işlemi içermeli anlamına gelir. Örneğin: operatör tipleri 93 ise, siz 3 eklemeden önce 9 ile 10 u çarpmalısınız. Genelde, dönüşüm süreci bu düzende işler. 9

10 Dönüşüm yordamı ilk (en belirgin) rakamı ASCII kodun dört yüksek-düzende biti olarak parçalara ayırarak binary ye çevirmelidir. Sonra binary değerini kısmi sonuca kaydeder. Yordam birkaç alt dizi rakamlarını binary ye dönüştürmelidir., bir önceki kısmi sonucu 10 la çarpmalı, sonra yeni rakamı çarpıma (bu yeni bir kısmi sonuç üretir) eklemelidir. 1.4.ASCII den Binary ye Dönüşüm Algoritması Siz genellikle negatif sayıları pozitif sayılar kadar iyi dönüştürmeye ihtiyaç duyarsınız. Ve sayılar bir ondalık ayıracı içerir, böylece dönüşüm programınız eksi (-) ve nokra (.) karakterlerini de hesaplamalı. Şekil 6-3 bellek içindeki bir ASCII stringi ikinin bileşeni (işaretli) binary sayıya çeviren bir algoritma için akış diyagramıdır. Sayıların 16-bite sığdığını varsayarız, böylece sayıların limiti ile dir. Başlamak için, sonuç ve ondalık sayaç (ondalık ayıracının sağındaki rakamların sayısı) sıfırlanır ve program geçen öndeki blokları tarar. Bu noktadan program sayının negatif ya da pozitif olup olmamasına bakarak iki yoldan birini alır. Bu yollar benzerdir. Dönüştürülmüş negatif negatif sayıların hariç tutulması bir pozitif sayı 32,767 ye karşı denetlenmişken negatif sayı 32,768 e karşı denetlenmiştir. Ve tümlenmiş olmalıdır. Şekil 6-3A da güncel dönüşümü yapan CONV_AB adlı prosedürün akış diyagramı verilmiştir. CONV_AB prosedürü sonraki string karakterinin ondalık ayıracı olup olmadığını denetleyerek başlar. Eğer ayıraç varsa, CONV_AB kalan karakter sayısını ondalık sayaç olarak kaydeder, sonra string göstergesini ilerletir. Eğer sonraki karakter ondalık ayıracı değilse CONV_AB onun ondalık rakam olup olmadığını denetler. Eğer bu karakter bir rakam değilse CONV_AB bunun geçersiz olduğunu bildirir ve bir hata göstergesi ayarlar. Sonra çağrılan programa geri döner. Geçerli bir rakam karakteri bulma üzerine CONV_AB güncel kısmı sonucu 10 la çarpar. Sonra ASCII karakteri bir rakama çevirir ve sonra bunu sonuca ekler. Eğer toplama elde üretirse, CONV_AB bir hata göstergeci ayarlar ve döner. Başka şekilde bu ayıracı arttırır ve ondalık ayıraç denetleme talimatlarına geri döner. Tüm string dönüştürüldüğünde, CONV_AB çağrılan programa geri döner Ascıı den Bınary ye Dönüşüm Programı Örnek.1.1. bunu gerçekleştiren bir prosedür ve ondan önce algoritmasını gösteriyor. Bu prosedür (ASCII_BIN) data segment teki (-belki de bir READ_KEYS prosedürüyle girilmiş Örnek 6-4 -) bir ASCII stringi bir 16-bit işaretli sayıya dönüştürür. ASCII_BIN stringin başlangıç adresini DS:DX ten, karakter sayacını (en yüksek 7) CX ten alır. Rastlantısız olarak bunlar READ_KEYS prosedürü parametreleri ASCII_BIN 16-bit değeri AX in içine döndürür. Rakamların sayısı ondalık ayıracından sonra DX in içindedir ve DI nın içindeki ilk dönüştürülemez karakterin adresidir. 10

11 BAŞLA SONUÇ=0 ONDALIK SAYAÇ = 0 BAŞLANGIÇ BOŞLUKLARINI YOKSAY HAYIR EKSİ İŞARETİ Mİ (-)? HAYIR ARTI İŞARETİ Mİ (+)? POZİTİF VARSAY GÖSTERGEC = GÖSTERGEC + 1 GÖSTERGEC = GÖSTERGEC + 1 CONV_AB (STRING DÖNÜŞTÜR) CONV_AB (STRING DÖNÜŞTÜR) EVET EVET DÖNÜŞÜM HATASI DÖNÜŞÜM HATASI HAYIR HAYIR EVET EVET SONUÇ < ? HAYIR SONUÇ < ? HAYIR SONUÇU TÜMLE HATA GÖSTERGECİNİ AYARLA BİTİR Şekil.1.3. Bir ASCII stringi binary ye çeviren algoritma 11

12 CONV_AB ONDALIK AYIRAÇ? HAYIR EVET ONDALIK SAYACI KAYDET GÖSTERGEÇ = GÖSTERGEÇ + 1 KARAKTER BİR RAKAM MI? HAYIR KISMİ SONUÇU 10 LA ÇARP EVET ASCII KODU BINARY RAKAMA DONUŞTUR SONUÇ = SONUÇ + RAKAM SONUÇ ÇOK MU BÜYÜK? EVET HAYIR GÖSTERGEÇ = GÖSTERGEÇ + 1 DAHA KARAKTER VAR MI? HAYIR HATA GÖSTERGEÇİNİ AYARLA GERİ DÖN Şekil.1.4. Klavyeden bir string okuyan prosedür. 12

13 TITLE READKEYS 50 tuş darbesini okur ; Bu prosedür 50 tuşu okur ; Girdi:Yok ; Sonuçlar: DS:DX = String adresi ; CX = Karakter sayacı ; ; Assemble with: MASM READKEYS; ; Link with: LINK callprog+readkeys; PUBLIC READ_KEYS DSEG SEGMENT PARA PUBLIC DATA USER_STRING DB 51,51 DUP(?) DSEG ENDS CSEG SEGMENT PARA PUBLIC CODE ASSUME CS:CSEG,DS:DSEG READ_KEYS PROC FAR PUSH AX MOV AX,DSEG ; DS yi başlangıç durumuna getir MOV DS,AX LEA DX,USER_STRING ; String oku MOV AH,0AH INT 21H SUB CH,CH ; CX ten karakter sayacını oku MOV CL,USER_STRING+1 ADD DX,2 ; DX noktasını text yap POP AX ; AX i yerine koy RET ; Ana programa geri dön READ_KEYS ENDP CSEG ENDS END 13

14 Örnek.1.1..ASCII stringi binary ye dönüştüren prosedür. TITLE ASC_BIN ASCII den binary ye dönüştürür ; bir ASCII stringi onun 16-bit, ikinin bileşeni ; binary eşitine dönüştürür. ; Girdiler: DS:DX = Stringin başlangıç adresi ; CX = Karakter sayacı ; Sonuçlar: CF = 0 hata olmadığını bildirir ; AX = ikilik değer ; DX = Ondalık ayıracından sonra sayaç ; rakamları ; DI = 0FFH ; CF = 1 hata bildirir DS:DI = dönüştürülemez karakterin adresi ; DX ve CX meyilsiz ; ; Assemble with: MASM ASC_BIN ; Link with: LINK callprog+asc_bin PUBLIC ASCII_BIN.286C CSEG SEGMENT PARA CODE ASSUME CS:CSEG ASCII_BIN PROC FAR PUSH BX ; BX ve CX i kaydet PUSH CX MOV BX,DX ; BX in içine ofseti koy SUB AX,AX ; Başla, sonuç = 0 SUB DX,DX ; ondalık sayaç = 0 MOV DI,00FH ; hatalı karakter olmadığını varsay CMP CX,7 ; String çok uzun mu? JA NO_GOOD ; Öyleyse, CF yi CF yi ayarlamaya 14

15 ; git ve çık BLANKS: CMP BYTE_PTR [BX], ; Geçmiş önceki boşlukları ; tara JNE CHK_NEG INC BX LOOP BLANKS CHK_NEG: CMP BYTE PTR [BX], - ; Negatif sayı mi? JNE CHK_POS INC BX ; Öyleyse, göstergeci arttır DEC CX ; sayacı azalt, CALL CONV_AB ; stringi dönüştür JC THRU CMP AX, ; sayı çok mu küçük? JA NO_GOOD NEG AX ; Hayır. Sonucu tamamla JS GOOD CHK_POS: CMP BYTE_PTR [BX], + ; Pozitif sayı mi? JNE GO_CONV INC BX ; Öyleyse göstergeci arttır DEC CX ; sayacı azalt GO_CONV: CALL CONV_AB ; Stringi dönüştür JC THRU CMP AX,32767 ; sayı çok mu büyük? JA NO_GOOD GOOD: CLC JNC THRU NO_GOOD: STC ; öyleyse, Elde Bayrağını ayarla THRU: POP CX ; register ları yerine koy POP BX RET ; ve çık ASCII_BIN ENDP ; Bu prosedür asıl dönüşümü gerçekleştirir. 15

16 CONV_AB PROC PUSH BP ; gelişi güzel register ları PUSH BX ; kaydeder MOV BP,BX ; BP nin içine göstergeci koy SUB BX,BX ; ve BX i temizle CHK_PT: CMP DX,0 ; Ondalık ayıracı bulunmuş mu? JNZ RANGE ; öyleyse, izleyen denetimi atla CMP BYTE PTR DS:[BP],. : Ondalık ayıracı mi? JNE RANGE DEC CX ; öyleyse, sayacı azalt, MOV DX,CX ; ve sayacı DX in içine kaydet JZ END_CONV ; CX=0 sa çık INC BP ; göstergeci arttır RANGE: CMP BYTE PTR DS:[BP], 0 ; Karakter bir rakam JB NON_DIG ; değilse... CMP BYTE PTR DS:[BP], 9 JBE DIGIT NON_DIG: MOV DI,BP ; adresini DI nın içine koy STC ; Elde Bayrağını ayarla JC END_CONV ; ve çık NON_DIGIT: IMUL AX,10 ; AX in içindeki rakamı 10 la çarp MOV BL,DS:[BP] ; ASCII kodunu çıkar AND BX,0FH ; yalnızca yüksek bitleri kaydet, ADD AX,BX ; kısmi Sonucu güncelle JC END_CONV ; sonuç çok büyükse çık INC BP ; aksi halde, BP yi arttır LOOP CHK_PT ; ve devam et CLC ; bittiğinde, Elde Bayrağını temizle END_CONV: POP BX ; register ları yerine koy POP BP RET ; ana programa geri don CONV_AB ENDP CSEG ENDS END 16

17 DX in içindeki değer sonucun büyüklüğünü gösterir. Bu size karışık boyutlarda dönüştürülmüş sayıları işletirseniz hangi ölçek etkeni ni uygulayacağınızı söyler. DX in içeriği 0 (sonuç bir tamsayı) ile 5 (sonuç bir basit kesir) arasında olabilir. Örneğin: AX 1000H (ondalık 4096) içerir ve DX 2 içerirse, sonucunuz ondalık 40,96 değerini gösterir. Bu Sonucu DX in içinden 3 olarak dönen önceki değer olan sonuca eklemek için, bir önceki Sonucu öncelikle 10 a bölmeniz gerekiyor. Benzer bir şekilde yı DX in içinden 0 olarak dönen bir önceki sonuca eklemek için yeni değeri öncelikle 100 e bölmeniz gerekir. Elde Bayrağı (Carry Flag - CF) dönüşüm sırasında hata meydana gelip gelmediğini gösterir. Eğer CF 0 sa, sonuçlar geçerli, eğer CF 1 se ASCII_BIN aşağıdaki hatalardan birini bulmuştur. String yedi karakterden büyükse (CX>7) AX ve DX 0 tutar ve DI 00FFH tutar. ASCII_BIN geçersiz karakter buldu, DI bunun ofset değerini tutar. Sayı aralığın dışındaysa ( den daha küçük, den daha büyük) AX sıfırsızdır ve DI 00FFH ı tutar. Yanıtın geçerliliğini denetlemek için ASCII_BIN i bu yazımda çağırın... CALL ASCII_BIN ; Dönüşüm prosedürünü çağır JNC VALID ; yanıt geçerli mi? OR DI,DI ; hayır. Hata durumu bulundu JNZ INV_CHAR OR AX,AX JNZ RANGE_ER.. ; string çok büyüktü.. RANGE_ER:.. ; sayı aralık dışında.. INV_CHAR:.. ; geçersiz karakter.. VALID:.. : yanıt geçerli.. 17

18 1.4.2.Binary Sayıları Stringe Çevirmek Bir sonuç yazdırmak ya da bunu ekranda göstermek için, onu ASCII ye çevirmeniz gerekir. İyi ki, bunu yapmak kolay. Bir 16-bit binary sayıyı ASCII ye dönüştürmek için sayının içerdiği 1, 10, 100,1000, leri bildiren ve bu sayaçların her birini bir ASCII karaktere dönüştüren bir programa ihtiyacınız var. ASCII karakterleri hesaplandığı gibi çıktı verebilir ya da onları bellekte bir string olarak saklayabilir ve başka bir programla daha sonra çıktı olarak verebilirsiniz. Örnek 6.6 AX içindeki bir 16 bit binary sayıyı bellekte bir ASCII stringe çeviren BIN_ASCII adında bir prosedürdür. Çeşitli sayaçlar türetmek için, BIN_ASCII AX in içeriğini ardı sıra 10 a böler ve her bölme işleminin kalanını string inşa etmek için kullanır. BIN_ASCII dönüştürülmüş stringlerin adresini DS:DX2in içine ve karakter sayacını CX in içine geri döndürür. Örnek.1.2. Binary sayıyı stringe çevirme TITLE BIN_ASC Binary yi ASCII ye çevirme ; Data segmentteki Işaretli binary sayıyı altı-byte li ASCII ; stringe (artı işaretli dört rakam) çevirir. ; Girdiler: AX = Dönüştürülmüş sayı ; DS:DX = string tamponunun başlangıç adresi ; Sonuçlar: DS:DX = stringin başlangıç adresi CX = Karakter sayacı ; Diğer register lar saklı. ; Assemble with: MASM BIN_ASC; ; Link with: LINK callprog+bin_asc; PUBLIC BIN_ASCII CSEG SEGMENT PARA PUBLIC CODE ASSUME CS:CSEG BIN_ASCII PROC FAR PUSH DX ; ana programın register larini sakla PUSH BX PUSH SI 18

19 PUSH AX MOV BX,DX ; ofseti BX in içine koy MOV CX,6 ; tamponu boşluklarla doldur FILL_BUFF: MOV BYTE PTR [BX], INC BX LOOP FILL_BUFF MOV SI,10 ; hazırla -*- 10 a bol OR AX,AX ; i değeri negatifse, JNS CLR_DVD NEG AX ; sayıyı pozitif yap CLR_DVD: SUB DX,DX ; bölümün üst yarısını temizle DIV SI ; AX i 10 a böl ADD DX, 0 ; kalanı ASCII rakamına dönüştür DEC BX ; buffer yardımıyla yedekle MOV [BX],DL ; karakteri stringin içine sakla INC CX ; dönüştürülen karakterleri say OR AX,AX ; hepsi bitti mi? JNZ CLR_DVD ; değilse, yeni rakamı al POP AX ; evet, asıl değeri al OR AX,AX ; negatif miydi? JNS NO_MORE DEC BX ; evet. İşaretini sakla MOV BYTE PTR [BX], - INC CX ; ve karakter sayacını arttır NO_MORE: POP SI ; register ları yerine koy POP BX POP DX RET ; ve çık BIN_ASCII ENDP CSEG ENDS END 19

20 2.ADRESLEME MODLARI 2.BÖLÜM /8088 Hafıza Mimarisi Lojik ve Fiziksel Hafızalar 8086/8088 mikroişlemcisi 20-bit Adres Yolu ile toplam (1M) byte hafıza hücresi adresleyebilmeye karşın, her iki işlemcinin fiziksel hafıza yapıları farklıdır. Bununla beraber bu işlemcilerin lojik hafızaları Şekil 4.13 te görüldüğü gibi aynıdır. Lojik hafıza, yazılım tarafından programcıya görülen hafızaya verilen isimdir. Bu hafıza, donanım tasarımcısı tarafından görülen, gerçek hafıza yapısını oluşturan fiziksel hafızadan farklı olabilir ve 8086 mikroişlemcilerin lojik hafızası 0000h tan başlayıp FFFFh a kadar uzanır. Lojik hafıza genişliği bir byte (8-bit) olup bu adreslerin uzunluğu 1M byte hafıza bloğu belirtir. Mikroişlemci tarafından adreslenen 16-bit hafıza kelimesi, her herhangi bir byte adresinden başlar ve peş peşe 2 byte işgal eder. FFFFFh 1M byte 00000h Şekil /8088 lojik hafıza haritası ve 8086 fiziksel haritaları genişlik olarak birbirinden farklıdır hafızası 8-bit, 8086 hafızası ise 16-bit genişliğindedir. Programcı için hafıza her zaman 8-bit genişliğinde olmasına rağmen, fark sadece tasarımcısı için bulunur. 20

21 Şekil mikroişlemcisinin hafıza alanını göstermektedir. Bu hafıza haritası Şekil 4.13 te verilen lojik hafıza haritası ile aynıdır in hafıza arabirimi 8085A işlemecisine benzemektedir. FFFFFh 00000h Şekil fiziksel hafıza haritası mikroişlemcisinin fiziksel hafıza haritası Şekil 4.15 te görülmektedir den farklı olarak iki ayrı hafıza bloğu içermektedir. Tek blok (yüksek hafıza) ve çift blok (düşük hafıza). Her 8086 bloğu 512K*8 olup toplam adreslenebilir, 8086, byte veya kelime (16-bit, Word) verisini doğrudan adresleyebilmektedir. Bundan dolayı, 8086, 16 bit bir kelimeyi bir işlemde okuyup yazabilmektedir (verinin adresinin çift olması sağlandığında). Buna karşın, 8088, 16-bit veri aktarımı için 2 okuma veya yazmaya gerek duyar yazılımı daha hızlı çalışır. Çünkü, 8086 bir çok komutu ve 16-bit veriye 8086 in iki katı hızında erişir. Tek Blok Çift Blok FFFFFh FFFFEh 512 K 512 K byte byte 00005h h 00001h h 00002h 00000h Yüksek Hafıza Düşük Hafıza Şekil fiziksel (donanım) hafıza haritası Segment li Hafıza Yapısı 8086/8088 mikroişlemcilerinde hafızaya erişim segment saklayıcıları yoluyla yapılır. Her bir segment bloğu 64K byte tır. Şekil 4.16 da segment saklayıcıları ile adreslenen bir hafıza 21

22 haritası örneği görülmektedir. Hafıza alanının aynı anda 4 farklı segment bulunabilmektedir. Bunlar kod segment (CS), veri segment (DS), ekstra segment (ES), ve yığın segment (SS). AFFFFh SS Yığın A000 Segment A0000h ES 8FFFFh Ekstra 8000 Segment 80000h DS 3FFFFh Veri 3000 Segment 30000h 1FFFFh CS Kod 1000 Segment 10000h Şekil.2.4. Segment saklayıcıları ile adreslenen bir hafıza haritası Her segment saklayıcısı, 20-bit adresin 16-bit kısmını tutar. Segment saklayıcıda bulunan 16-bit adresin düşük değerli bölümüne, 0h (0000h) eklenir. Ayrıca bir ofset (indis) bu adresle toplanarak, donanım tarafından otomatik olarak, 20-bit adres elde edilir. Bu işleme lojik adresin fiziksel adrese çevrilmesi denir. Segment saklayıcılarına göre, aşağıda açıklanacağı gibi, ofset, değişik saklayıcılardan gelir. Eğer bir 8086/8088 sistemi sadece 64K byte hafıza içeriyorsa, bütün 4 segment saklayıcısı 0000h ile yüklenir ve segment ler üst üste çakışır. Bu durumda adres aralığı X0000h XFFFFh arasında değişir. (X herhangi bir 16-lı rakamdır.) Her bir segment saklayıcısı, özel bir fonksiyona sahiptir ve bir veya daha çok indis veya işaretçi saklayıcısı ile ilişkilidir. Bir hafıza adresi üretmek için, bir segment saklayıcısının içeriği, bir ofset adres tutan bir indis veya işaretçi saklayıcısına eklenir. 22

23 Şekil 4.17 de bir komut tarafından adreslenen bir verinin, fiziksel adresinin üretimi görülmektedir. Bu örnekte, veri segment saklayıcısı DS 1000h içermekte, yeni veri segment 10000h fiziksel adresinden itibaren başlamaktadır. Taban saklayıcısı BX te ofset adres 0020h bulunmakta, ve böylece fiziksel adres 10020h veya 1000h*10h+0020h olmaktadır. BX 10020h 0020 ofset 10003h 10002h DS 10001h 10000h 1000 Şekil.2.5. Veri segment inde bulunana bir hafıza hücresine erişim Kod segment CS, program ve veri alanı olarak kullanılabilmesine rağmen genelde kodlarının bulunduğu alandır. 8086/8088 tarafından yürütülecek bir sonraki komutun adresi, komut işaretçisi IP ye CS * 10h içeriğinin toplanmasıyla elde edilir. Veri segment i DS, bir çok komut ve adresleme modu tarafından erişilen program verilerini tutar. Hafızadaki verinin adresi, BX,SI veya DI saklayıcılarından birine DS * 10h içeriğinin toplanmasıyla elde edilir. Yığın (stack) segment i SS, LIFO (Last In First Out) tarzında çalışmaktadır. Bir yığın hücresinin adresi, SP nin içeriği artı SS *10h tır. BP tarafından adreslenen veri de normal yığın segment inde bulunur. 23

24 ES string komutlarından kullanılan veri alanıdır. Bir string komutu yürütüldüğünde, hedef adres DI ES * 10h, kaynak veri adresi ise, SI artı ES * 10 tır. Aşağıda Tablo 4.5 te 8086/8088 mikroişlemcisinin değişik işlemleri ve bunlarda otomatik olarak kullanılan saklayıcılar görülmektedir. Tablo 3.1. İşlemlere göre değişik segment adres kaynakları. İşlem Çeşidi Segment Alternatif Segment Ofset Komut okuma CS yok IP Yığın işlemi SS yok SP Veri İşlemi (aşağıdakiler hariç) DS CS,ES veya SS çeşitli String kaynak DS CS,ES veya SS SI String hedef ES yok DI BP taban saklayıcı olarak kullanıldığında SS CS,ES veya SS çeşitli Segment li Hafıza Yapısının Avantajları Yukarıda anlatılan segment li hafıza yapısı, ilk bakışta şaşırtıcı ve zor görülebilir. Bu hafıza yapısı için hatırlanması gerekenler özetle şunlarlar. Program işlem kodları CS alanından okunmakta, program verileri DS ve ES alanlarında saklanmaktadır. Yığın işlemleri ise, SP ve BP saklayıcılarını kullanarak SS üzerinde işlem yapar. Ayrı kod ve veri alanlarının olmasının ilk avantajı, bir programın, farklı veri blokları üzerinde çalışabilmesidir. Bu işlem, DS saklayıcısına farklı bir bloğa işaret eden yeni bir adresin yüklenmesiyle yapılır. Segment li hafıza yapısının en büyük avantajı, lojik adresler üreten x86 programlarının hafızanın herhangi bir yerine yüklenip çalıştırabilmesidir. Bunun nedeni, lojik adreslerin, her zaman, CS taban adresinden bağımsız olarak, 0000h ile FFFFh arasında değişmesidir. Çok-görevli (multi-tasking) x86 tabanlı bir ortamı veya Windows 95/98/NT işletim sistemini düşünelim. Bir çalışan aktif programın geçici olarak sabit diskte saklandığını ve onun yerine, yeni bir programın getirildiğini farz edelim. Bu çeşit programla, hafızanın herhangi bir yerinde çalışacakları için, tekrar yerleştirilebilir (relocatable) olarak adlandırılır. Programların bu şekilde çalışabilmesi, segment saklayıcıları yoluyla olmaktadır. Segment saklayıcılarının yani program, veri ve yığın saklayıcılarının taban adresinin değiştirilmesiyle programlar hafızanın herhangi bir yerinde çalışabilmektedir. 24

25 8085A ve benzeri birçok 8-bit mikroişlemci ve mikro denetleyicide, bu şekilde bir hafıza adres üretimi olmadığı için, programların tekrar yerleştirilebilirliği mümkün değildir. Yani, bir 8085A işlemcisi için, program ve verilerin başlangıç adresleri, ORG (Origin) gibi assembler ifadeleri ile belirlenip kod üretimi yapıldıktan sonra, bu adreslere, program ve veriler yüklenmelidir. Bu şekilde, program ve veriler, bir bakıma, hafızaya kök salar ve başka yere taşınamaz. Program ve verileri başka bir adrese yükleyebilmek için, ORG ifadesindeki adresler değiştirilir, sonra tekrar derleme yapılır ve yeni ikili kod üretilir. Bu sayede yeni adres yerleşimi için kod elde edilir Adresleme Modları (Kısa 286) işletmek üzere sizin programınızın operand larını oluşturmak için yolların çeşitliğini destekler. 286 bunları bir tutucudan oluşturabilir., kendisi bir direktifle, ya da bellek konumundan ya da bir I/O kapısından. Hepsi için adresleme kiplerini 7 gruba ayırabilirsiniz. 1) Saklayıcı adresleme 2) Kesin adresleme 3) Doğrudan adresleme 4) Saklayıcı dolaylı adresleme 5) Tabana dayalı adresleme 6) Doğrudan dizilmiş adresleme 7)Taban dizili adresleme Mikroişlemci direktifin içindeki bir mod alanı nın içeriğini sınayarak. Bu yedi adresleme modunu kullanmak için belirtir. Assembler mod alanını kaynak programdaki operandlarının görünüşlerinin tabanında ayarlar. Örnek olarak bunu girerseniz. MOV AX, BX Assembler her iki operandı (AX ve BX) saklayıcı adresleme modu için kodlar. Bununla beraber, eğer kaynak operandın başına ve sonuna köşeli parantez koyarsanız ve girerseniz. MOV AX, [BX] Assembler kaynak operandını (BX) saklayıcı dolaylı adresleme modu için kodlar. 25

26 Tablo 3-1 asembler formatını gösterir ve 286 nın 7 operand adresleme kipi için hangi segment tutucusu fiziksel adresini hesaplamak için kullanıldı. Not: Bütün kipler data segmentin içindeki verinin bu durumda yığın segmentin varsaydığı başvurmayı üstlenir. (DS segment saklayıcısıdır). BP saklayıcısının kapsadığını hariç tutar. (SS segment saklayıcısıdır.) Not: 286 nın string direktifleri DI noktalarının ekstra segmentteki yerleşimi data segmentdekinden daha iyidir. Tablo Adresleme Modları: Adresleme Modu Operand Biçimi Segment Tutucu Tutucu reg Yok En yakın data Yok Doğrudan disp DS label DS Dolaylı saklayıcı [BX] DS [BP] [DI] [SI] SS DS DS Göreceli taban [BX]+disp DS [BP]+disp SS Doğrudan dizilmiş [DI]+disp DS [SI]+disp DS Taban dizilmiş [BX][SI]+disp DS [BX][DI]+disp DS 26

27 [BP][SI]+disp [BP][DI]+disp SS SS Notlar:1) disp taban izilmiş adresleme için seçimliktir. 2) reg her 8 veya 16-bit saklayıcı olabilir., IP hariç 3) data bir 8 veya 16-bit sabit değerinde olabilir. 4) disp bir 8 veya 16-bit işaretlenmiş ayırma değerinde olabilir. ES segment saklayıcısı gibi kullanıldı. Bütün diğer talimatlar Tablo 3-1 de atanmış olarak gösterildi. Bu bölümün devamında, her zaman tanımladığımız bir adresleme kipini, bir örnekte kullanımını sergileyeceğiz. Genellikle, biz 286 larda MOV (Move) talimatını bunu sergilemek için kullanırız Saklayıcı ve Kesin Adresleme Tutucu adreslemede, 286 operandı tutucudan (ya da içine yüklenenden) gidip getir. (Swap) Örneğin: MOV AX, CX 16-bit içerikli sayaç tutucusunu (CX), akümülatör tutucusuna (AX) taşır. CX saklayıcısının içeriğini değiştirmez. Burada, 286 adresleme saklayıcısını kaynak operandı CX den almak ve AX hedef saklayıcısının içine yükler. Kesin adresleme size 8 veya 16-bit sabit değeri kaynak operand gibi belirtmenize izin verir. Bu sabit talimat içindedir. (assembler ın koymuş olduğu) ve tutucu ya da bellek erişiminden daha iyidir. Örneğin: MOV CX, 500 Ondalık değer olan 500 ü CX tutucusuna yükler ve MOV CL, değerini CL tutucusuna yükler. 27

28 Yakın operand zaten EQU direktifiyle tanımlanmış bir simge olabilir.bunun gibi bir form geçerlidir. K EQU MOV CX,K Sorunlardan sakınmak için, 8 bit 127 (7FH) tan 128 (80H) a kadar ve 16-bit (7FFFH) tan (8000H) a kadar. İşaretli numaralandırır. Eğer bunlar işaretsizse en yüksek 8 ve 16 bit değerler.sırasıyla 255 (0FFH) ve (0FFFFH) tır. Kesin Değerler İşaretli Uzatılmıştır: Assembler her zaman hedefin içindeki kesin değerleri işaretli uzatır. Bu bütün hedefin 8 veya 16 bitlerine kaynağın en belirgin bit ini kopyalar. Örneğin: MOV CX, 500 ; girerseniz assember kaynak değerini (ondalık 500) 10-bit ikilik modelde gibi görür. Bu değer 16-bit hedef saklayıcıya yüklendiğinde (CX), bu modeli işaretli bit değerlerinin (0) sekiz kopyasını başa getirerek uzatır. Böylelikle CX, sonunda ikilik değerini içerir. İkinci örnekte; 286: 8 bit ikilik modelini 30 ( ) için CL nin içine yüklüyor. Bellek Adresleme Modları: Erişim Belleği 286 nın Yürütme Birimi (Execution Unit (EU)) ve Yol birimi (Bus Un it (BU)) tarafından ek bir çaba gerektirir. EU biriminin bir bellek operandı okuması ya da yazması gerektiğinde EU ofset değerini BU ya verir. BU, bu ofseti bir 20-bit fiziksel adres üretmek için ( dört 0 ekleyerek) segment tutucusunun içeriğine ekler, sonra bu adresi operanda erişmek için kullanır. Efektif Adres: Ofset Yürütme Biriminin hesapladığı, bellek operandı için çağrılan, efektif adrestir (EA). EA segmentin başlangıcından operandın yerine kadar olan byte ların uzaklığıdır. 16-bit işaretsiz değerin oluşu, EA segmentin içinde nerede yanlış olduğuna başvurabilir. Bu 65,535 (64K) byte üzerinde segmentin başlangıcını geçmiştir. 28

29 Zamanın miktarı Yürütme Birimi hesaplamak için aldığı EA talimatını yürütmek için almasında uzunluğun belirlenmesi ilk etkendir. Kullandığınız adresleme kipine bağlı olması, EA nın bazı şeyleri gerektirebilmesi biraz basitçe talimatın içinden bir ayrıma gidip getirmesiyle (swap) oluşmakta. Sonra tekrar; ayırma ekleme, taban tutucusu ve bir dizin tutucu gibi bazı çok uzun hesaplamalar gerektirebilir. Yürütme Zamanına aldırmamak programınızda kritik bir durumdur. Adresleme mov tanımından sonra, BU, bu zaman etkenlerini takdir etmelisiniz Doğrudan Adresleme Doğrudan adreslemede, EA kesin veri değerlerinin direktiflerde bulunduğu, direktiflerin içinde bulunur. 286 operand ın fiziksel adresini üretmek için EA yı (değişmiş) Data Segment saklayıcısına ekler. Doğrudan adresleme operandı genellikle etikettir. Örneğin direktif: MOV AX, TABLE şeklindeyse TABLE bellek bölgesinin içeriğini AX tutucusuna yükler. Şekil 3-1 talimatın nasıl çalıştığını gösteriyor. DATA SEGMENT MOV AX,TABLE BB TABLE AX AABB 0002 AA 0003 TABLE Şekil.2.6. Sayfa 108 Doğrudan Adresleme 29

30 Not: 286 veriyi siz hariç tutmak isterseniz zıt düzen içinde bellekte depolar. Bu düşük düzen byte ından sonra yüksek-düzen byte ını koyar. Verinin yüksek (en belirgin) parçası, en yüksek bellek adresinin içindedir Saklayıcı Dolaylı Adresleme Saklayıcı Dolaylı adreslemeyle, operandın etkin adresi ya Bx saklayıcı tabanı, ya BP taban işaretçisi (ya da bir dizin tutucusu (SI ya da DI)) içindedir. Dolaylı saklayıcı operandını saklayıcı operandından ayırmak için köşeli parantezle kapatmalısınız. Örneğin: MOV AX, [BX] bu talimat BX le adreslenmiş bellek bölgesinin içeriğini AX saklayıcısının içine yükler. Şekil 3-2 bu örneği resimliyor. BX in içine bellek adresine OFFSET öneki girebilmek için bir ofset koymanın bir yolu vardır. Örneğin: AX içinde TABLE bölgesinde bir sözcük yüklemek için, bu diziyi kullanın. MOV BX, OFFSET TABLE MOV AX, [BX] Bu iki talimatla aynı işi yapmak için MOV AX, TABLE BX in önceki önceki içeriğini yok etmesi hariç tutulur. Eğer bir yalnız bellek bölgesine (burada TABLE ın içeriği) erişmek istiyorsanız bu tek talimat daha duyarlı yaklaşım gösterir. Bununla birlikte, bazı taban adresleriyle başlayan, birkaç bölgeye ulaşmak için saklayıcının içinde etkin adres bulunması daha iyidir. Neden böyle? Çünkü her zaman tutucunun içeriklerini getir-götür adressiz üretebilirsiniz Göreceli Taban Adresleme Göreceli taban adreslemeyle assembler etkin adresini BX yada BP tutucusuna bir ayırma değeri ekleyerek hesaplar. BX formu belleğin farklı bölümünde yerleşmiş veri yapısına erişmenin uygun yolunu verir. Bunu yapmak için, yapının taban adresini saklayıcı tabanının içine koyun tabanda ayrılması ile yapının öğelerine başvurun. Bundan sonra, taban saklayıcıda basit değişiklikler yaparak, yapının içinde değişik kayıtlara ulaşabilirsiniz. Örneğin: Diskten bazı personel kayıtlarını okuduğunuzu varsayın, bulunan her kayıt işçinin kimlik numarasını, bölüm numarasını, bölge numarasını, yaşını, maaşını vb içerir. Eğer böyle numarası kaydın 5. ve 6. byte larında saklıysa, kaydın adresi BX le başlıyorsa, direktif böyledir. MOV AX, [BX]

31 DATA SEGMENT MOV AX,[BX] BX BB TABLE 0002 AA AX AABB 0003 TABLE Şekil.2.7. Dolaylı Register Adresleme DATA SEGMENT MOV AX,[BX] BX 001A A EMP_50 001B AX AABB 001C 001D 001E 001F BB AA 0020 Şekil.2.8. Göreceli Taban Adresleme 31

32 Bu talimat işçinin bölge numarasını AX in içine yükler. (Ayırmada 4 değeri 5 ten daha iyidir, çünkü ilk byte 0 dır) Şekil 3-3 bu örneği sergiler. Macro Assembler göreceli taban operandı belirlemede üç değişik yola izin verir. Eşdeğer 3 direktif: MOV AX, [BP]+4 MOV AX, 4[BP] MOV AX, [BP+4] ; Bu standart formdur, fakat kullanabilirsiniz. ; ilk ayırmayı koyar ; ya da köşeli parantezle birlikte Doğrudan Dizli Adresleme Doğrudan dizili adreslemeyle, etkin adres ayırma ve dizin saklayıcısının toplamıdır, DI ya da SI dan biri. Bu adresleme tipi bir tablonun içindeki öğelere erişim için uygundur. Ayırma noktaları tablonun başlangıcına ve dizin saklayıcı noktaları öğenin içinedir. Örneğin : B_TABLE isminde bir byte tablomuz var. Direktif dizisi şöyledir. MOV DI, 2 MOV AL, B_TABLE [DI] Direktif AL saklayıcısının içine 3. öğeyi yükler. 32

33 DATA SEGMENT MOV AX,TABLE[DI] 0001 TABLE DI TABLE + 2 AX AABB BB AA TABLE + 4 Şekil.2.8. Doğrudan Dizili Adresleme Bir sözcük tablosu içinde, öğeler bağımsız 2 byte tır. Böylece dizin değeri olarak çift öğe numaranız olur. TABLE isimli Word tablosuyla talimat dizisi şöyledir. MOV DI, 4 MOV AX, TABLE [DI] Bu direktif dizisi üçüncü öğeyi AX saklayıcısının içine yükler. Şekil 3-4 bu örneği sergiler Taban Dizili Adresleme Taban dizili adreslemede, EA bir taban saklayıcı, bir index saklayıcı ve (seçimlik olarak) ayırmanın toplamıdır. Çünkü iki ayrı ofset kabul eder. Bu mod iki boyutlu dizilere erişimde yararlıdır. Burada ayırma ve dizin saklayıcısı sıra ve sütun ofsetini sağlarken taban saklayıcı dizinin başlangıç adresini tutar. 33

34 Örneğin: bir kimyasal işlem fabrikasında bilgisayarınızın monitöründe altı basınç sübabı var varsayalım. Bu her yarım saatte sübab ayarını okur ve bunları belleğe kaydeder. Birinci hafta içinde bu okuma formu her alt öğe için 336 bloktur. (7 günde her gün için 48 okuma) veri değeri toplamıdır. Eğer dizinin başlangıç adresi BX ise, blok ayırması (okuma numarası zamanları 12) DI nın içindedir; ve sübab numarası ayrımı VALUE değişkeni ile tanımlanmıştır. Bu direktifi kullanabiliriz. MOV AX, VALUE [BX] [DI] Bu direktif bazı seçilmiş basınç sübaplarını AX içinden okur. Şekil 3-5 te bu talimat data segmentin 100h ofset adresine sahip bir diziden subab-4 (2.okuma) ün üç okumasını özetler. Burada taban dizili adresleme operandları için bazı diğer geçerli biçimleri verilmiştir. MOV AX, [BX+2+DI] ; bütün üç terimi bir köşeli paranteze koyabilirsiniz. MOV AX, [DI+BX+2] ; herhangi düzende MOV AX, [BX+2] [DI] ; ya da ayırmayı birleştirebilirsiniz MOV AX, [BX] [DI+2] ; başka saklayıcıya 34

35 MOV AX,VALVE[BX][DI] 100 OKUMA 0 BX OKUMA 1 DI (VALVE 0) (VALVE 1) VALVE = 8 (VALVE 2) (VALVE 3) OKUMA 2 AX AABB 120 BB AA (VALVE 5) Şekil.2.9. Bir iki boyutlu diziden veri değerini çıkarır. 35

36 3. ASSEMBLER-DİLİ YAPISI 3.BÖLÜM 3.1.Giriş: Her assembler dili yapısı bir kaynak program içinde birbirini izleyen [label:](etiket),mnemonic,[operand],[;comment] (yorum) isimli 4 alandan oluşur. Bunların içinde yalnızca mnemonic alanı daima gereklidir. Etiket ve yorum alanları daima seçimliktir. Operand alanı operand gereken yapılarda uygulanır. Aksi halde atlamalısınız. (Biz etiket, operand ve yorum alanlarının seçimlik olarak belirtmeniz için boşluklarla göstereceğiz.) Bu alanları çizgi üzerinde herhangi bir yerde girebilirsiniz. Ancak en az bir boşluk (ya da tab) ile ayırmalısınız. Bir assembler-dili yapısında bütün dört alan böyle kullanılır. GETCOUNT: MOV CX, DI ; sayacı başlatır 3.2.Etiket Alanı: Etiket alanı assembler-dili yapısında bir isimle var olur. Bu yapı program içindeki diğer yapılarak kaynak teşkil eder. Böylece etiketler assembler-dili programı içinde aynı amaçlı ve çizgi numarası belirli temel programlara sunumu gerçekleştirir. Bir etiket yapısı en fazla 31 karakterden uzunluğunda olabilir ve iki nokta ile sonlanmalıdır. Böyle oluşabilir: A dan Z ye harfler (veya a dan z ye, assembler de küçük harf büyük harf ayrımı yoktur) 0 dan 9 arasında sayısal değerler. Özel karakterler _ $ Herhangi bir karakterle etikete başlayabilirsiniz. Ancak siz bir periyod kullandıysanız (.) ilk karakteri olmalı. AH, AL, AX, BH, BL, BP, CH, CL, CX, CS, DH, DL, DX, DI, DS, ES, SI, SP ve ST saklayıcı isimleridir. Bunları kullanamazsınız. Etiket içinde boşluk kullanamazsınız. Fakat aynı etiketi alt çizgi karakteri ile (_) sağlayabilirsiniz. Örneğin; önceki örnek yapı gibi yazabilirsiniz. GET_COUNT : MOV CX, DI ; sayacı başlatır. Açıkça, GET_COUNT, GETCOUNT ta olabilir. 36

37 3.2.1.Etiket İsmi Seçme: Çünkü assembler harflerin, basamakların, simgelerin değişken durumlarını girmenize izin verir. Hemen hemen bütün etiketler kabul edilebilir olarak düşünebilirsiniz. Zaten biz etiket seçme için yorumlar öneriyoruz. Kısa ve olası isim yapma, mantıklı olabilmeli. Böylece, MPH MILES_PER_HOUR için tercih edilebilir. CUR_YR, CURRENT_YEAR için mantıklı bir kısaltmalıdır. Hatasız tipte isim yapma. Her zamanki tipleme sorunu birkaç özdeş harfin bir sırada (HHHH gibi) ve benzer karakterin ( O harfi ile 0 sıfır, I harfiyle 1 sayısı, S harfi ile 5 sayısı gibi ) Burada tanımlama hatası çağırmasının hiçbir mantığı yoktur, hepimiz için bunları başka yolla yapmak yeterlidir. Etiketleri karıştırabileceğiniz diğerleri ile birlikte kullanmayın. Örneğin, bunun gibi şeyleri kullanmaktan kaçının XXXX ve XXYX 3.3.Mnemonic Alanı: Mnemonic alan (mnemonic in başı m harfi sessiz ) 2 den 7 ye kadarki harfler yapı için kısaltmadır. Örneğin: MOV move yapısı için kısaltmadır. ADD add yapısı için kısaltmadır. Assembler her sayısal eşitliklerin içindeki mnemonic yapıyı çevirirken içsel tablolar kullanır. Mnemonic e ek, bazı yapılar gerektiriyor ki bir ya da iki operand tanımlanması (Örneğin : bir ADD yapısı eklemek için iki terim bilmek gerektiriyor.) Mnemonic assembler a kaç tane operand, hangi tip, operand alanında ele geçirmeyi söyler. 3.4.Operand Alanı: Operand alanı ya işlenen veriyi nerede bulabileceğini söyler. Bu bazı yapılar için gereklidir ve diğerleriyle engellenmiştir. Eğer hazırsa, operand alanı 8 tane 1 veya 2 operand içerir. Mnemonic ten en az bir boşluk ya da tablo ayırmıştır. Eğer iki operand gerekliyse, aralarına bir virgül koymalısınız. İki operandlı yapılarda, ilki hedef operand ve ikincisi kaynak operandtır. Kaynak operand mikroişlemcinin hedef operandın içine ekleyeceği, çıkartacağı, karşılaştıracağı veya depolayacağı değeri belirtir. Örneğin : Bu move talimatında MOV CX, DX CX, DX deki : Kaynak operantının içindeki Dx register ının içeriğini hedef operandının içindeki CX register ına taşır. Belki de tahmin ediyorsunuzdur. Hedef operand hemen hemen her zaman değiştirilirken; kaynak operand asla işlemle değiştirilmedi. 37

38 3.5.Yorum Alanı: BASIC teki REM e benzer bir ifade, kaynak programın içinde seçimlik tanımlama ifadesidir; programı daha kolay anlaşılır yapar. Yorumdan önce noktalı virgül (;) gelmelidir. Bu alandan önce en az bir boşluk ya da tabla ayırmak iyi fikir, ancak bunu yapamazsınız. Assembler yorumları yok sayar., ancak programı listeleyeceğiniz zaman yazar. Yorum alanına istediğiniz herhangi bir şeyi yazabilirsiniz., ama yararlı alabilecek, programda ne olduğunu açıklayan yorumlar yapmalısınız. talimatı yeniden vermeyin Örneğin: 1) MOV CX, 0 ; sayaç tutucusunu temizler 2) MOV CX, 0 ; CX in içine 0 ı taşır. 1. açıklama ikinci açıklamadan daha anlamlıdır Yalnız Yorumlar: Tanım bloğu içinde talimatın kendisi tarafından bir yorum tanımlayabilirsiniz. Bunu yapmak için çizginin başına bir noktalı virgül girin; assembler yorum çizgisini tanımlayacaktır ve isleyen her şeyi yok sayar. 38

39 4.BÖLÜM 4.ASSEMBLER KOMUTLARI 4.1.Veri Transfer Komutları: Adres Yükleme Komutları: Bu komutlar, bir saklayıcıya veya bir saklayıcı ile bir segment saklayıcısına bir adres yüklemede kullanılmaktadır. Tablo.4.1.de komutların 3 değişik şeklini göstermektedir LEA (Load Effective Address): LEA komutu, bir saklayıcıya operand ile belirtilen adresi yükler. Tablo.4.1 de birinci örnekte, AX saklayıcısı, operand SUBADR içeriği ile değil (yani bu adresteki veri ile değil) SUBADR adresiyle yüklenmektedir. Tablo.4.1.Adres yükleme komutlarının değişik kullanımları Asembly Dili LEA AX,SUBADR LDS DI,LIST LES BX,VEC1 Yapılan İşlem AX SUBADR adresiyle yüklenir DI ve DS LIST teki adres ile yüklenir BX ve ES VEC1 deki adres ile yüklenir LDS ve LES: LDS ve LES komutları, bir 16-bit saklayıcıya bir ofset adres ve DS (LDS ile) veya ES (LES ile) segment saklayıcısına 6yeni bir segment adresi yükler. Bu komutlar, yeni ofset ve segment numarasını seçmede, değişik geçerli adresleme modlarından herhangi birisi kullanılır. Bu komutlardan her birinde hafızadan mikroişlemciye iki tane 16-bit kelime, yani toplam 4-byte veri transferi olur. LDS ve LES komutları ile, bir program içinde farklı bir DS ve ES alanlarına işaret edilirken, ofset saklayıcılara da yeni ofset yüklenir. Şekil.4.1 de LDS BX,[SI] komutu ile SI ile işaretli hafıza alanından bir 32-bit sayı BX ve DS saklayıcılarına kopyalanmaktadır. 39

40 4.2. Dizi (String) Komutları: Üç çeşit dizi (string) veri transfer komutu vardır. Bunlar: LODS, STOS ve MOVS. Bu komutlar, mikroişlemci ile hafıza arasında, bir blok veya tek bir byte veya kelime transferinde kullanılır. Bu komutları tanıtmadan, aşağıda önce, bu komutların kullanımında önemli olan, yön (direction) bayrağı (D) ve dizi işlemlerinde kullanılan DI ve SI saklayıcılarının fonksiyonları anlatılacaktır. DS Hafıza LDS BX,[SI] (DS) AX BX SP BP SI DI CS DS FFFF Şekil.4.1 LDS BX,[SI] komutu yürütülürken bellek saklayıcılarının durumları Yön Bayrağı (D): Yön bayrağı dizi işlemleri sırasında, DI ve SI saklayıcıları için otomatik-arttırma (D = 0) veya otomatik-azalma (D = 1) çalışma modunu seçer. D bayrağı CLD komutu ile 0 lanır ve STD komutu ile 1 lenir. Yani CLD otomatik-arttırmayı ve STD otomatik-azalmayı seçer. Bir dizi komutu ile yapılan veri transferinden sonra, D bayrağıyla seçilen çalışma moduna göre, eğer veri 1-byte ise DI ve/veya SI 1 arttırılır veya azaltılır. Benzeri şekilde, transfer edilen veri 2 byte ise, bu kez DI ve/veya SI 2 arttırılır ya da azaltılır.di ve SI Bir dizi komutunda DI, SI veya her ikisi kullanılabilir. Normalde SI, DS için ve DI, ES için ofset adres olmaktadır. SI için segment atanması, bir segment ön eki (override prefix) ile değiştirilebilir. Bununla beraber DI segment ataması her zaman ES tir bu atama değiştirilemez. 40

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar Adresleme Modları 1 Adresleme Modları İşlenenin nerede olacağını belirtmek için kullanılırlar. Kod çözme aşamasında adresleme yöntemi belirlenir ve işlenenin nerede bulunacağı hesaplanır. Mikroişlemcide

Detaylı

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN Bahar Dönemi Öğr.Gör. Vedat MARTTİN 8086/8088 MİKROİŞLEMCİSİ İÇ MİMARİSİ Şekilde x86 ailesinin 16-bit çekirdek mimarisinin basitleştirilmiş bir gösterimi verilmiştir. Mikroişlemci temel iki ayrı çalışma

Detaylı

8086 Mikroişlemcisi Komut Seti

8086 Mikroişlemcisi Komut Seti 8086 Mikroişlemcisi Komut Seti X86 tabanlı mikroişlemcilerin icra ettiği makine kodları sabit olmasına rağmen, programlama dillerinin komut ve ifadeleri farklı olabilir. Assembly programlama dilininde

Detaylı

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta SAKARYA ÜNİVERSİTESİ Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Bölümü Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta Doç.Dr. Ahmet Turan ÖZCERİT Doç.Dr. Cüneyt BAYILMIŞ Yrd.Doç.Dr.

Detaylı

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR GÖMÜLÜ PROGRAMLAMA Selçuk Üniversitesi Bilgisayar Mühendisliği Bölümü 2012-2013 Bahar Dönemi Doç.Dr.Erkan ÜLKER 1 İçerik 1. Adresleme Modları 2. İskelet Program

Detaylı

MTM 305 MİKROİŞLEMCİLER

MTM 305 MİKROİŞLEMCİLER KARABÜK ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MTM 305 MİKROİŞLEMCİLER Arş. Gör. Emel SOYLU Arş. Gör. Kadriye ÖZ Alt Programlar (Procedure) Büyük programları tek bir kod bloğu

Detaylı

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA Aritmetik işlemler onlu sayı sisteminde yapılabileceği gibi diğer sayı sistemleri

Detaylı

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1 Program Kontrol Komutları Mikroişlemciler ve Mikrobilgisayarlar 1 Bu başlık, altında incelenecek olan komutlar program akışını oluşan bazı koşullara göre değiştirmektedirler Program akışında meydana gelen

Detaylı

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes Bölüm 3: Adresleme Modları Chapter 3: Addressing Modes 3 1 Veri Adresleme Modları MOV komutu veriyi bir bellek satırından diğer bellek satırına yada yazaca kopyalar Kaynak (source) verilin okunacağı belleğin

Detaylı

3.3. İki Tabanlı Sayı Sisteminde Dört İşlem

3.3. İki Tabanlı Sayı Sisteminde Dört İşlem 3.3. İki Tabanlı Sayı Sisteminde Dört İşlem A + B = 2 0 2 1 (Elde) A * B = Sonuç A B = 2 0 2 1 (Borç) A / B = Sonuç 0 + 0 = 0 0 0 * 0 = 0 0 0 = 0 0 0 / 0 = 0 0 + 1 = 1 0 0 * 1 = 0 0 1 = 1 1 0 / 1 = 0 1

Detaylı

JZ TEST3 (7/3) 1 makine çevrimi süresi

JZ TEST3 (7/3) 1 makine çevrimi süresi Bu programda DC motorun devir sayısı hesabı motor diski ile birlikte çalışan optokuplör yardımıyla bulunuyor.motordan geribildirim sinyali optik alıcı ve verici arasına yerleştirilmiş diskin çıkışından

Detaylı

MTM 305 MİKROİŞLEMCİLER

MTM 305 MİKROİŞLEMCİLER KARABÜK ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MTM 305 MİKROİŞLEMCİLER Arş. Gör. Emel SOYLU Arş. Gör. Kadriye ÖZ Ekran ve Klavye İşlemleri EKRAN İŞLEMLERİ Ekrana yazdırma işlemleri

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ KONTROL KOMUTLARI Program Kontrol Komutları Program akıģını bir

Detaylı

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler.

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler. ADRESLEME MODLARI Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler. Ayrıca CPU tüm giriş çıkış işlemlerini de hafızaya erişerek

Detaylı

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı SAYISAL ELEKTRONİK Ege Ü. Ege MYO Mekatronik Programı BÖLÜM 2 Sayı Sistemleri İkilik, Onaltılık ve İKO Sayılar İkilik Sayı Sistemi 3 Çoğu dijital sistemler 8, 16, 32, ve 64 bit gibi, 2 nin çift kuvvetleri

Detaylı

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri Öğrenci No Ad-Soyad Puan Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri S1) 8086 mikroişlemcisi bitlik adres yoluna ve.. bitlik veri yoluna sahip bir işlemcidir. S2) 8086 Mikroişlemci mimarisinde paralel

Detaylı

MTM 305 MİKROİŞLEMCİLER

MTM 305 MİKROİŞLEMCİLER KARABÜK ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MTM 305 MİKROİŞLEMCİLER Arş. Gör. Emel SOYLU Arş. Gör. Kadriye ÖZ Basit Giriş/Çıkış Teknikleri IN ve OUT komutları X86 komut kümesi

Detaylı

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SİSTEMLERİ VE KODLAR Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri 2. Kayan Noktalı Sayı Sistemleri 2.1. Sabit Noktalı Sayı Sistemleri 2.1.1. Ondalık Sayı Sistemi Günlük

Detaylı

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI 23.02.2015 Yrd.Doç.Dr. Dilşad Engin PLC Ders Notları 2 PROGRAMLANABİLİR DENETLEYİCİLER NÜMERİK İŞLEME 23.02.2015 Yrd.Doç.Dr. Dilşad Engin PLC Ders Notları 3

Detaylı

BIL 362 Mikroilemciler Dersi Arasınav Cevapları 3 Temmuz 2007

BIL 362 Mikroilemciler Dersi Arasınav Cevapları 3 Temmuz 2007 1. mov [0100h],'1' mov [0101h],'4' mov [0102h],'2' mov [0103h],'8' mov [0104h],'7' mov [0105h],'3' mov [0106h],'5' mov [0107h],'9' mov [0108h],'2' mov [0109h],'6' call ekranayazdir ; baslangic durumunu

Detaylı

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI 10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI Sayısal Sistemler Sayısal sistem, sayıları temsil eden simgeler için bir yazma sistemi yani matematiksel bir gösterim sistemidir.

Detaylı

Aritmetiksel Komutlar

Aritmetiksel Komutlar Aritmetiksel Komutlar 80x86 programcıya toplama, çıkarma, çarpma, bölme gibi temel aritmetiksel işlemlerin yanı sıra elde edilen sonuçları değişik biçimlerde saklama olanağı sağlar. Aritmetiksel komutların

Detaylı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Adresleme modları Pentium ve PowerPC adresleme modları Komut formatları 1 Adresleme modları

Detaylı

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR: KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR: 1) Etkilenen Bayraklar (E.B.) : Bazı komutlar koşturulurken PSW saklayacısındaki bayrakların değeri değişebilir. Herbir komut için etkilenen bayraklar belirtilmiştir.

Detaylı

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Şekil. 64 Kelimelik Yığıtın Blok Şeması 1 YIĞIT (STACK) KURULUMU Çoğu bilgisayarın MİB de yığıt veya LIFO (Last In First Out) bulunur. Yığıt bir bellek parçasıdır ve son depolanan bilgi ilk geri dönen bilgi olur. Yığıta aktarılan son bilgi yığıtın

Detaylı

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

Fatih University- Faculty of Engineering- Electric and Electronic Dept. SAYISAL DEVRE TASARIMI EEM122 Ref. Morris MANO & Michael D. CILETTI SAYISAL TASARIM 4. Baskı Fatih University- Faculty of Engineering- Electric and Electronic Dept. SAYISAL DEVRE NEDİR? Mühendisler, elektronik

Detaylı

2. SAYI SİSTEMLERİ VE KODLAR

2. SAYI SİSTEMLERİ VE KODLAR 2. SAYI SİSTEMLERİ VE KODLAR 2.1. Sabit Noktalı Sayı Sistemleri 2.1.1. Ondalık Sayı Sistemi Günlük yaşantımızda kullandığımız sayı sistemi ondalık (decimal) sayı sistemidir. Ayrıca 10 tabanlı sistem olarak

Detaylı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı MIKRODENETLEYICILER Ege Üniversitesi Ege MYO Mekatronik Programı BÖLÜM 3 MSC-51 Ailesi Mikrodenetleyicilerin Komut Kümesi Mikroişlemci Programlama Mikroişlemci ikilik komutlar kabul eder ve sonuçlarını

Detaylı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

8086 Mikroişlemcisi Komut Seti

8086 Mikroişlemcisi Komut Seti 8086 Mikroişlemcisi Komut Seti SUB ve SBB komutları: SUB (Subtract) yani çıkartma SBB ise borç ile çıkart (SuBtract with Borrow) anlamına gelir. Her iki çıkartma işlemi bir çıkartma sonucu üretmenin yanında

Detaylı

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme Giriş MİKROİŞLEMCİ SİSTEMLERİ Bilgisayar teknolojisindeki gelişme Elektronik öncesi kuşak Elektronik kuşak Mikroişlemci kuşağı Yrd. Doç. Dr. Şule Gündüz Öğüdücü 1 Bilgisayar Tarihi Elektronik Öncesi Kuşak

Detaylı

Bölüm 4 Veri Aktarma Komutları

Bölüm 4 Veri Aktarma Komutları Bölüm 4 Veri Aktarma Komutları 4.1. Giriş Veri aktarma komutları genel olarak MOV olarak adlandırılmıştır. Bunun dışında sayı yüklendiğinde LOAD, Yığın kullandığında POP, PUSH, I/O birimlerinden veri aktarmada

Detaylı

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek 8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek kullanımını tanımlamak. Korumalı modda belleğe erişim yöntemlerini

Detaylı

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir.

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir. İşaretli Tamsayı Gösterimi 1. İşaretli Büyüklük Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir. Örnek

Detaylı

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma Özet DERS 5 Çarpma, Bölme ve Dallanmalar Öğr. Gör. Eren ERENER AİBÜ/DMYO Neredeyiz Çarpma Bölme Karşılaştırma Jump komutları Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma Kaydediciler ve bellek

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Veri Hiyerarşisi Dosyalara Giriş

Detaylı

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir. 2. Sayı Sistemleri Bilgisayar elektronik bir cihaz olduğu için elektrik akımının geçirilmesi (1) yada geçirilmemesi (0) durumlarını işleyebilir. Bu nedenle ikili sayı sistemini temel alarak veri işler

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ 2 8086 Mimarisi 8086 da bulunan tüm iç register lar ve veri yolları

Detaylı

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir. Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir. Bunun için X86 PC Assembly dili, Power PC Assembly dili veya 8051 Assembly

Detaylı

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SĐSTEMLERĐ VE KODLAR

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SĐSTEMLERĐ VE KODLAR .1. Sabit Noktalı Sayı Sistemleri. SAYI SĐSTEMLERĐ VE KODLAR Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. Kayan Noktalı Sayı Sistemleri.1.1. Sayı Sistemi Günlük yaşantımızda

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Mantıksal Komutlar AND OR XOR NOT TEST And Komutu Yapı olarak AND

Detaylı

C Konsol Giriş Çıkış Fonksiyonları

C Konsol Giriş Çıkış Fonksiyonları C Konsol Giriş Çıkış Fonksiyonları Öğr. Gör. M. Ozan AKI Rev 1.0 Stringlerde Özel Karakterler \n : Bir sonraki satırın ilk sütununa git \b : Backspace (önceki karakteri sil) \a : Bip sesi \\ : Ters bölü

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

27.10.2011 HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

27.10.2011 HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK Mikroişlemci HAFTA 1 HAFIZA BİRİMLERİ Program Kodları ve verinin saklandığı bölüm Kalıcı Hafıza ROM PROM EPROM EEPROM FLASH UÇUCU SRAM DRAM DRRAM... ALU Saklayıcılar Kod Çözücüler... GİRİŞ/ÇIKIŞ G/Ç I/O

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Assembly Dili Assembly programlama dili, kullanılan bilgisayar

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde

Detaylı

Mikrobilgisayar Donanımı

Mikrobilgisayar Donanımı KARADENĠZ TEKNĠK ÜNĠVERSĠTESĠ BĠLGĠSAYAR MÜHENDĠSLĠĞĠ BÖLÜMÜ MĠKROĠġLEMCĠ LABORATUARI Mikrobilgisayar Donanımı 1. GiriĢ Bu deneyde 16 bit işlemci mimarisine dayalı 80286 mikroişlemcisini kullanan DIGIAC

Detaylı

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar

Detaylı

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER BÖLÜM 3 INTEL AİLESİNİN 16 BİTLİK MİKROİŞLEMCİLERİ 3.1 8086/8088 MİKROİŞLEMCİSİ 3.1.1 İÇ MİMARİSİ Şekil 3.1 de x86 ailesinin 16-bit çekirdek mimarisinin basitleştirilmiş bir gösterimi verilmiştir. Mikroişlemci

Detaylı

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar;

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar; I. SAYI SİSTEMLERİ Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar; i) İkili(Binary) Sayı Sistemi ii) Onlu(Decimal) Sayı Sistemi iii) Onaltılı(Heksadecimal) Sayı Sistemi iv) Sekizli(Oktal)

Detaylı

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir. 2. Sayı Sistemleri Bilgisayar elektronik bir cihaz olduğu için elektrik akımının geçirilmesi (1) yada geçirilmemesi (0) durumlarını işleyebilir. Bu nedenle ikili sayı sistemini temel alarak veri işler

Detaylı

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları 1. MACRO YAZDIR HEXSAYI MOV AX,HEXSAYI ; sayi 10 a bolunerek her seferinde kalan MOV DL,10 ; alinmistir. MOV CL,0 DONGU: DIV DL MOV BL,AH XOR AH,AH PUSH BX ; stack'a once birler basamagi atilir CMP AL,10

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER BÖLÜM 2 INTEL AİLESİNİN 8 BİTLİK MİKROİŞLEMCİLERİ 2.1 8080 MİKROİŞLEMCİSİ Intel 8080, I4004, I4040 ve I8008 in ardından üretilmiştir ve 8 bitlik mikroişlemcilerin ilkidir ve 1974 te kullanıma sunulmuştur.

Detaylı

Mikrobilgisayar Mimarisi ve Programlama

Mikrobilgisayar Mimarisi ve Programlama Mikrobilgisayar Mimarisi ve Programlama 2. Hafta Bellek Birimleri ve Programlamaya Giriş Doç. Dr. Akif KUTLU Ders web sitesi: http://www.8051turk.com/ http://microlab.sdu.edu.tr Bellekler Bellekler 0 veya

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir. Bilgisayar Mimarisi İkilik Kodlama ve Mantık Devreleri Yrd.Doç.Dr. Celal Murat KANDEMİR ESOGÜ Eğitim Fakültesi - BÖTE twitter.com/cmkandemir Kodlama Kodlama (Coding) : Bir nesneler kümesinin bir dizgi

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

SAYI SİSTEMLERİ. Sayı Sistemleri için Genel Tanım

SAYI SİSTEMLERİ. Sayı Sistemleri için Genel Tanım SAYI SİSTEMLERİ Algoritmalar ve Programlama dersi ile alakalı olarak temel düzeyde ve bazı pratik hesaplamalar dahilinde ikilik, onluk, sekizlik ve onaltılık sayı sistemleri üzerinde duracağız. Özellikle

Detaylı

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe Bit, Byte ve Integer BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe Ders kitabına ait sunum dosyalarından adapte edilmiştir: http://csapp.cs.cmu.edu/ Adapted from slides

Detaylı

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR Toplama (Addition) Toplama (ADD) belirtilen iki yazaç veya yazaç ile belleğin içeriğini toplar ve kullanılan adresleme moduna göre sonucu belirtilen yazaca

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar x86 Ailesi 1 8085A,8088 ve 8086 2 Temel Mikroişlemci Özellikleri Mikroişlemcinin bir defade işleyebileceği kelime uzunluğu Mikroişlemcinin tek bir komutu işleme hızı Mikroişlemcinin doğrudan adresleyebileceği

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

Detaylı

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ İçerik Mikroişlemci Sistem Mimarisi Mikroişlemcinin yürüttüğü işlemler Mikroişlemci Yol (Bus) Yapısı Mikroişlemci İç Veri İşlemleri Çevresel Cihazlarca Yürütülen İşlemler

Detaylı

2. SAYI SİSTEMLERİ. M.İLKUÇAR - imuammer@yahoo.com

2. SAYI SİSTEMLERİ. M.İLKUÇAR - imuammer@yahoo.com Sayı Sistemleri İşlemci elektrik sinyalleri ile çalışır, bu elektrik sinyallerini 1/0 şeklinde yorumlayarak işlemcide olup bitenler anlaşılabilir hale getirilir. Böylece gerçek hayattaki bilgileri 1/0

Detaylı

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller ÖZT Ders 3 Hafıza Hakkında Hafızayı adresleme Veri (data) tipleri MOV komutu dresleme modları Komut formatı Öğr. Gör. ren RNR İBÜ/DMYO Temeller x işlemcilerin hafıza yapısı byte adreslenebilir şeklindedir.

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı MIKRODENETLEYICILER Ege Üniversitesi Ege MYO Mekatronik Programı BÖLÜM 3 Assembler Programlama ve Program Geliştirme Program Geliştirme Problem Tanımlama Bağlantı Şekli Algoritma Akış Diyagramı Kaynak

Detaylı

Diziler İndisli Değişkenler

Diziler İndisli Değişkenler Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın

Detaylı

Bilgisayarların Gelişimi

Bilgisayarların Gelişimi Bilgisayarların Gelişimi Joseph Jacquard (1810) Bilgisayar tabanlı halı dokuma makinesi Delikli Kart (Punch Card) Algoritma ve Programlama 6 Bilgisayar Sistemi 1. Donanım fiziksel aygıtlardır. 2. Yazılım

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka

Detaylı

Mikrobilgisayar Mimarisi ve Programlama

Mikrobilgisayar Mimarisi ve Programlama Mikrobilgisayar Mimarisi ve Programlama 8085 Adresleme ve Komutlar Doç.Dr. Cüneyt BAYILMIŞ Doç.Dr. Murat ÇAKIROĞLU Prof.Dr. Hüseyin EKİZ Assembly Formatı Assembly komut satırı biçimi Etiket İşlem Kodu

Detaylı

Her bir kapının girişine sinyal verilmesi zamanı ile çıkışın alınması zamanı arasında çok kısa da olsa fark bulunmaktadır -> kapı gecikmesi

Her bir kapının girişine sinyal verilmesi zamanı ile çıkışın alınması zamanı arasında çok kısa da olsa fark bulunmaktadır -> kapı gecikmesi Kapılardaki gecikme Her bir kapının girişine sinyal verilmesi zamanı ile çıkışın alınması zamanı arasında çok kısa da olsa fark bulunmaktadır -> kapı gecikmesi Kapılardaki gecikme miktarının hesaplanması

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

Detaylı

2011 Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

2011 Bahar Dönemi. Öğr.Gör. Vedat MARTTİN 2011 Bahar Dönemi Öğr.Gör. Vedat MARTTİN ADRESLEME YÖNTEMLERİ Komut yazımında en önemli konulardan biri, adresleme yöntemidir. Adresleme yöntemi, işlenenin nerede bulunacağını belirtmek için kullanılan

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Aritmetik İşlemler Aritmetik iģlemler toplama, çıkartma, çarpma

Detaylı

Microsoft Office Excel 2007

Microsoft Office Excel 2007 2014 Microsoft Office Excel 2007 Öğr. Gör. Serkan KORKMAZ Harran Üniversitesi Birecik Meslek Yüksekokulu İçindekiler MİCROSOFT OFFİCE EXCEL 2007... 4 EXCEL ORTAMINDA ÇALIŞMAK... 4 EXCEL ÇALIŞMA SAYFASI...

Detaylı

Mikrobilgisayarda Aritmetik

Mikrobilgisayarda Aritmetik 14 Mikrobilgisayarda Aritmetik SAYITLAMA DİZGELERİ Sayıları göstermek (temsil etmek) için tarih boyunca türlü simgeler kullanılmıştır. Konumuz bu tarihi gelişimi incelemek değildir. Kullanılan sayıtlama

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu MİKROBİLGİSAYAR SİSTEMLERİ Teknik Bilimler Meslek Yüksekokulu Dersin Amacı Mikroişlemciler Mikrodenetleyiciler PIC Mikrodenetleyiciler Micro BASIC Programlama Kullanılacak Programlar MSDOS DEBUG PROTEUS

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ 1. Giriş Analog işaretler analog donanım kullanılarak işlenebilir. Ama analog

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER) Mikroişlemci içinde yapılan işlemlerin durumlarını programcıya bildiren bir kaydedici mevcuttur. Tüm karar alma mekanizmaları bu kaydedicide gösterilen sonuçlar baz alınarak yapılır. İŞLEMCİ DURUM KAYDEDİCİSİ

Detaylı

Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR

Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR Sayılar; insanların ilk çağlardan beri ihtiyaç duyduğu bir gereksinim olmuştur; sayılar teorisi de matematiğin en eski alanlarından birisidir. Sayılar teorisi,

Detaylı

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. DAO İLE SQL KOMUTLARI Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. SQL-1 SELECT En basit SQL cümleciği oluşturmak için SELECT sözcüğü

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Bellek Yönetim Birimi Bilgisayar İşletim Sistemleri BLG 312 Bellek Yönetimi - 1 bellek kritik bir kaynaktır etkin kullanılmalı paylaşılmalı bellek yönetim birimi var Bellek Yönetim Biriminin Temel Amaçları

Detaylı

Genel Programlama I

Genel Programlama I Genel Programlama I 30.09.2010 1 Genel Programlama I Ders İçeriği Programlamaya giriş ve algoritma kavramları Basit ve karmaşık veri tipleri Program kontrol komutları (Döngü ve şart yapıları) Diziler ve

Detaylı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi 1 BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Operand türleri Assembly dili 2 İşlemcinin yapacağı iş makine komutlarıyla belirlenir. İşlemcinin

Detaylı

SAYISAL ELEKTRONİK DERS NOTLARI:

SAYISAL ELEKTRONİK DERS NOTLARI: SAYISAL ELEKTRONİK DERS NOTLARI: SAYISAL (DİJİTAL) ELEKTRONİK Günümüz Elektroniği Analog ve Sayısal olmak üzere iki temel türde incelenebilir. Analog büyüklükler sonsuz sayıda değeri içermesine rağmen

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

b) Aritmetik İşlem Komutları

b) Aritmetik İşlem Komutları b) Aritmetik İşlem Komutları Toplama ve Toplama İle İlgili Komutlar Komut. Format İşlem ADD (ADDition) elde CF ADD D, S (D)+(S) (D); ADC (Add with Carry) elde CF ADC D, S (D)+(S)+CF (D); yeni INC (INCrement

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar 1 Sayısal Bilgisayarın Tarihsel Gelişim Süreci Babage in analitik makinası (1833) Vakumlu lambanın bulunuşu (1910) İlk elektronik sayısal bilgisayar (1946) Transistörün bulunuşu (1947) İlk transistörlü

Detaylı