-

assembly(pic 16f877a) programlama’da ardışık adreslere veri yazma

şöyle bir problemimiz var:20h  adresinden başlayarak 24h’e kadar   sırasıyla 11h,22h,33h,44h,55h adreslerini yazma,indirect adressing kullanacaz:
11h,22h,33h,44h,55h verilerini sırasıyla 20hdan başlayarak 24he kadar olan adreslere yaz

list p=16F877A                                   ;her  programın başında  yazılmalı

include “p16F877A.inc”                             ;her programın başında yazılmalı

movlw 0×20

movwf FSR              ;fsrnin içine  20hex i attım

movlw 0×11

movwf INDF               ;  11h’i 20 hex adresine yazdım

incf FSR                 ;fsrnin içini  1 arttır  yani 21hex adresine gel

movlw 0×22

movwf INDF          ;22 h’i 21 hex adresine yazdım

incf FSR                ;fsrnin içini 1 arttır yani 22hex adresine gel

movlw 0×33

movwf INDF            ;33 hexi 22 hex adresine yazdım

incf FSR                    ;fsrnin içini 1 arttır yani 23hex adresine gel

movlw 0×44

movwf INDF           ;44 hex verisini  23 hexdresine yazdım

incf FSR                    ;fsrnin içini 1 arttır yani 24hex adresine gel

movlw 0×55

movwf INDF         ;55  hex verisini  24 hex adresine yaz

end                         ;programı sonlandır

DERYA GÜNDÜZ

assembly(pic 16f877a) programlama’da adresleme çeşitleri

assembly programlama’da  3 çeşit adresleme vardır

  • immidiate adressing
  • direct adressing
  • indirect adressing

immidiate adressing:bu adresleme  türünde working egisterın içine doğrudan değişken atanabilir veya içeriğinde değişiklik yapılabilir,bu adresleme sadece  working reg ile ilgili adres atamalarında kullanılır, çünkü  başka  bir  adrese veri atacaksak mutlaka onu önce  working registera  ordan başka bir yere aktarmamız  gerekir.
movlw 0×20;working registerın içine 20hex verisini atmış olduk
sublw 0×10;istersek bu atılan veride  değişiklik de yapabiliriz

direct adressing:bu adresleme program yazarken en sık kullanılan adresleme  türüdür,bu adresleme  türünde bir veriyi  bir adrese yazmak isterken onu önce  working reg’e  taşırız,ondan da  istediğimiz yere.
movf    0×50,w             ;50 hex verisini  working  reg’e atıyorum
movwf     0×20;              ;working reg’in içindekini, yani 50hex verisini  20hex adresine atıyorum
böylece  veriyi istediğim bir adrese atmış oluyorum.

indirect adressing:dolaylı adresleme  diğer adresleme  türlerine  göre biraz daha karışk ve hata oranı daha fazladır.bu adresleme  türünde veri yazmak istediğimiz adresi  başka bir registerın içine yazıyoruz,bu exra  registera yazdığımız adrese de  başka bir  register yardımıyla veri  yazarız.

bu adresleme türünde yardımcı olarak kullandığımız iki extra  register vardır:fsr ve indf registerları.
fsr  register:veri aktarmak istediğimiz  adresin taşındığı registerdır.
indf  register:fsrnin  adreslediği yere karşılık geliyor,ram bellekte adresi buluna  fiziksel bir register değildir.
indf registerını kullanan bir komut  geldiğinde fsr’nin  gösterdiği registerın içindeki veriye ulaşmak için kullanılır.
şimdi indirect  adresleme  yolu ile   0×20 verisini  0×50 adresine atalım:

movlw  0×50         ;w rege  50 adresini attım
movwf  fsr            ;w regindeki 50 hex adresini fsrnin içine   attım
movlw  0×20         ;w regine  20 hex verisini attım
movwf   indf          ;workingdeki  20 hex verisini  indf’nin  içine attım,yani  fsr’nin  tuttuğu 50 hex adresine  20
;hex verisini yazmış oldum

neden indirect adresleme kullanma  gereği  duyarız???
indirect  adresleme  türünü daha  çok ardıiık adreslerde işlem yapmak için  kullanırız,
incf  fsr     diyerk  bir sonraki adrese  kolaylıkla  geçmiş olruz.

DERYA GÜNDÜZ

DUYURU!!!!!

arkadaşlar esogü bilgisayar  mühendisliği olarak google group oluşturduk,bölümdeki bütün arkadaşlar üye olsun,bölümümüz içi  iletişim ve  duyuruları  bu grubumuzdan takip edebilirz……….

linki  burda,gruba girip üye olabilirsiniz:
http://groups.google.com/group/esogu_ceng
DERYA GÜNDÜZ

assembly programlama/iki adresteki verinin yer değiştirmesi

iki tane  registerımız olsun;
reg1
reg2
reg1 ve reg2nin içindeki verileri değiştirmek istiyorum.
assembly  programlamada essas olarak bir veriyi bir adrese taşıma istiyorsam o veriyi önce  working registera orda istenilen adrese taşımalıyım,iki registerın içini yer değiştirmek istiyorsam da hem working reg hem arada geçici kullanacağım bi reg kullanmalıyım,bu reg temp olsun.
değiştirme kodlar;:

movf reg1,w           ;reg1in içini w rege  at
movwf temp             ;wnin içeriğini  tempe at
movf reg2,w       ;reg2yi w ye at
movwf reg1         ;wnin içinde  reg2 vardı bunu  reg1e atıyorum
movf temp,w     ;tempin içini wye atıyorum,içinde reg1(içeriği) vardı
movwf reg2       ;wnin içini  yani tempten gelen reg1i de  reg2 ye attım

böylece temp geçici registrı ve  working registerı sayesinde reg1 ve reg2nin içini değştirmiş olduk
DERYA GÜNDÜZ

uzun zamandır yazamıyorum

ne kötüdür ki yazmak istiyorum ama yazamıyorum,yazmak istediğim çok şey var aslında ama  maalesef zaman  bulamıyorum,çalışırken ya da  yeni bişey öğrendiğimde hep diyorum ki bunu da yaarım blogum ama izim yok,okdar yoğun geçiyor ki,vizeler geliyor yine,vizeler yetmiyormuş gibi bi de quiz haftası yaptılar başımıza,bu hafta  3  quizim var,yrn da assembly var,çok uykum var ama  yatamıyorum,çünkü daha çalışmam gerkiyor,
bazen diyorum ki nerden geldim bu bölüme……..çok zor gerçekten adaman  gerekiyor kendini,okuldan bu kadar kasmasalar  gereksiz yere,bişeyler yapacaz da ama  abartıyorlar  gerçekten:(
kendimi  bloguma karşı  sorumlu hissettiğimden  bikaç  cümle yazma  zorunluluğu hissettim özür mahiyetinde,

DERYA GÜNDÜZ

c#’da hata oluşturup bi yerde çağırmak(catch’de olduğu gib)

bilindiği gibi c#da try-catch olayı vardır;hata olmadığı durumlarda try,hata olduğu zaman  catch çalışır.
peki kendimiz bir hata oluşturmak istersek?????:

  • 1. yol:

//exception sınıfından oluşturulan hata

Exception hata = new Exception(“Bu benim hatam”);

//oluşan hatayı nesnenin hata mimarisi içine fırlatma.

throw hata;//burda hata verir
//program throw kısmına gelince hata verir ve hata ekranında “bu benim hatam”,yazar

  • 2.yol:class kullanarak yapalım

class KendiHatamiz : Exception

{
public KendiHatamiz()

: base(“derya’nın hatası”)

{}
}
int main()
{
KendiHatamiz kndHata = new KendiHatamiz();

throw kndHata;//burda da hata verir
//throw’a geldiğinde program durur ve hata alanında “derya’nın hatası “,yazar.
}

DERYA GÜNDÜZ

c#da property kavramı

c#da classın içine yazdığımız değişkenler için get ve set değerlerinin beraber kullanıldığı  formatına property deniyor.

class sınıf

{
public int yas;
private string öğrenciadı;

private string ad
{

get { return öğrenciadı; }

set { öğrenciadı = value; }
}
public int Yas
{

get
{return yas;}
set
{if (value >= 0)

yas = value;}
}
{
public void Yaz()
{
Console.WriteLine( öğrenciadı+ ”  ” + yas);
}
static void Main(string[] args){

sınıf f = new sınıf();

f.yas=22;

f.öğrenciadı=”derya”;
f.yaz();
}}

OUTPUT
derya 22

  • property tanımlamasında parantez kullanılmaz
  • get bloğu değişkenin değerinin okunması sırasında hangi değerin döndürülecegini belirtir. bu nedenle içerisinde return kullanılmalıdır.
  • set bloğu değişkene değer atanırken çalışacak olan kodu belirtir.
  • value anahtar kelimesi ise değişkene o sırada atanmak istenen değeri temsil eder.
  • get veya set blokları en az biri property içerisinde bulunacak şekilde herhengi bir kombinasyonda kullanılabilirler. ancak belirtilen formatı izlemelidir.

DERYA GÜNDÜZ

LİNUX GÜNLERİ-1. gün/DEVRİM GÜNDÜZ

bugün yine “aa bugün nekadar çok şey  öğrendim”,dediğim günlerden birtanesi:
klübümüz BBTK‘nın etkinliği olarak gerçekleşen “LİNUX GÜNLERİ” etkinliğine   katıldım bugün.İyiki de katılmışım dediğim bir seminerdi.
LKD(linux kullanıcıları derneği) adına DEVRİM GÜNDÜZ konuşmacı olarak katıldı.
Devrim gündüz kimdir?
kendisi  şuan markafoni adlı özel alışveriş klübünün IT departmanında çalışıyor,50 ay Canada’da çalışmış,Amerika’da çalışmış ayrıca postgresql’in (özgür yazılım olan ve sql standart sorgu dilini destekleyen veritabanı yönetim sistemi)  geliştiricisidir ve koyu bir linuxçu’dur.
sunumu müthişti,gözlerimizi ondan alamadık,1.5 saat  geçiyordu ama kimse  zamanın nasıl geçtiğinin farkında olmuyordu,kendi hayatından ve tecrübelerinden anektodlar alarak sunusunu çok eğlenceli bir hale getirmeyi başardı.sunum iki  oturumdan oluşuyordu:
  • özgür yazılım, linux nedir?
  • linuxta sunucu,veritabanı ve ağ sistemleri
daha önce de özgür yazılımla ilgili konferanslara katılmıştım ama hiçbirinden bukadar zevk almamıştım(çoğunlukla pardüs seminerleri).
şimdi oturumlar boyunca ladığım notları sizlerle paylaşmak istiyorum:
  • linuxun en önemli özelliği tüm bileşenlerin kaynak kodlarının kamuya açık olmasıdır,
  • linux esasen işletim sisteminin çekirdeğidir,yani biz “linux kullanıyorum”,derken aslında yanlış kullanıyormuşuz;ubuntu,pardüs,fedora… kullanıyorum demeliyiz,bunlar da linuxun dağıtımlarıdır,
  • 1991′de linuxun ilk sürümü duyruluyor,linux 0.02,sonrasında 0.04,0.06….1.0,…..2.0……2.6 çıkmış ,
  • minix ve linus torvals linux çekirdekli çok basit işletim sitemleridir,
  • linuxta kullanıcıların akıllı olduğu düşünülür,örneğin birşey  silinecekse windowsta olduğu gibi “emin misiniz”,sonra  geri  dönüşüm kutusuna,  gibi şeyler  yokmuş,
  • pidgin:aynı anda yahoo,msn,,,’den birden fazla oturum açmak için kullanılan prog,
  • linux’ta dil paketlerinin hepsi yüklüymüş,böylece istediğiniz dili kullanabiliyormuşsunuz,
  • mono:c#’da kod yazmak için kullanılan prog.,
  • evolution,pine:mail okumak için prog.,
  • programlama için eclipse,anjuta,glade  programları kullanılabiliyormuş,
  • çokluortam için mplayer,grid kullanılabiliyormuş,
  • .net uygulamalarını mono ile çalıştırabilirmişiz,
bugün için aldığım notlar buşekildeydi,katılmayan arkadaşlar bi göz atabilir,
buarada katılmayan demişken,katılım çok azdı,insanları anlayamıyorum böyle fırsatları nasıl kaçırabiliyorlar,etkinlik yapıyoruz zahmet edip gelmiyorlar,bilinçsiz okadar çok insan var ki………
bir de benim için çok önemli olan bir konudan da bahsetmek istiyorum,uzun zamandır bilgisayarıma ubuntu kurmayı düşünüyordum,ama  bir türlü cesaret edip kuramamıştım.zaten şuan için windowsun yanına kuracam,takdir edersiniz ki windowstan vazgeçilmez(şuan için öyle düşünüyorum tabi ki belki de ubuntu kullandıktan sonra fikrim değişir),yrn kesin olarak kuracam,özgür yazılıma ilk adımları atacam……..
                                 işte  bugünden hatıra kalan  güzel bir kare……….
DERYA GÜNDÜZ