• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

8085 Assembly Programlama ile Dizi Kopyalama

Herkese merhaba arkadaşlar bu yazımda 8085 mikroişlemci assembly'si ile bellekte ardışıl şekilde bulunan bir diziyi,yine farklı bir bellek adresinden itibaren kopyalayan programı yapacağım.İlk d

29.06.2012

Yazar: Batuhan Düzgün (Google+)

Kategori: 8085 Assembly

3367

 Herkese merhaba arkadaşlar  bu yazımda  8085 mikroişlemci  assembly'si ile bellekte ardışıl şekilde bulunan bir diziyi,yine farklı bir bellek adresinden itibaren kopyalayan programı  yapacağım.İlk dizimizin bellek adresi C060 adresinden başlayıp 10 eleman içermektedir.Biz bu dizimizi yine belleğimizdeki farklı bir alan olan C070 'dan itibaren kopyalacağız.Algoritma açısından baktığımızda aslında basit bir for döngüsüyle herşey sorunsuz ilerlemektedir.Assembly kodu yazarken en büyük sıkıntılardan biride dizi sınırını detaylı bir şekilde bizlerin düşünmesidir. Bir eksik veya fazla döndürmek gibi küçük hatalar doğaldır.Bunları tecrübe edine edine rahatlıkla oturtabilirsiniz.Şimdi düşündüklerimizi faaliyete geçirelim. :)

İlk olarak 8085 simülatörümüzü açıyoruz.Ardından yeni bir dosya açıp  aşağıda görülen kodu yazıyoruz. 

 

LXI H,C060  ; Kaynak dizinin başlangıç adresi

LXI B,C070  ;Kopyalanacak bellek adresinin başlangıç değeri

dongu:  

MOV A,M  ; ilk elemanı MOV A,M ile akümülatöre alıyoruz.

STAX B    ; STAX komutuyla B-C kaydedici çiftinin gösterdiği yere kopyalıyoruz

INX B       ; Kaydediciyi bir arttırıyoruz bir sonraki alanı göstermek için

INX H    ; Kaynak diziden bir sonraki elemanı almak için 1 arttırdık

MOV A,L ; L kaydecisindeki değeri akümülatöre aldık.

CPI 6A    ; 6A dğerine eşitmi diye kontrol ettik

JNZ dongu  ; eğer sonuç sıfır değilse değerler birbirine eşit değildir.

HLT ; Ve programı sonlandırma komutu.

 

Şimdi yazdıklarımızı biraz inceleyelim.LXI komutu genelde indisli işlemlerde yani dizi işlemlerinde kullanılır.Bir bir arttırarak dizinin her elemanına erişiyoruz.Ardından diziyi kopyalacağımız hedef adresin başlangıç değerini veriyoruz.Her kopyalama işleminden sonra bu adresi bir arttırıp,bir sonraki bellek gözünü işaret ediyoruz.

Ardından "dongu" adlı bir etiketimiz var.Bu nereye dallanma yapacağımızı belirtiyor.Aslında bu etiketin değeri ,MOV A,M komutunun  bellekte bulunan adresidir.MOV A,M komutu H-L kaydedici çiftinin gösterdiği bellek adresinin içindeki değeri akümülatöre taşıyor.M belleği temsil ediyor,sadece H-L kaydedici çiftine bağlı olarak çalışan özel bir yapı.Diğer B-C ve D-E  kaydedici çiftleri M'yi kullanamaz.INX komutu B-C kaydedici çiftini bir arttırıyor.Aynı şekilde INX H-L 'yi arttırıyor.MOV A,L komutu ile sadece L kaydedicisindeki değeri alıyoruz.Bunu niçin yaptık çünkü dizimizin sınırını kontrol edeceğiz.Eğer L kaydedicisi 6A değerine ulaşmışsa demekki biz C06A adresine geldik ve döngünün sonlanması gerekli.CPI komutu direkt bir veriyi karşılaştırmak için kullanılır.Kaydediciler arası karşılaştırma için CMP komutu kullanılır.CPI komutu ivedi adresleme yöntemine girmektedir.

JNZ komutu eğer karşılaştırma sonucu sıfır (zero) bayrağı set edilmemiş,yani 1 olmamışsa, yani sıfırsa "dongu" etiketine dallanma yapar."dongu" etikerti ise MOV A,M komutunun adresine eşittir.Programımız kısaca bu şekilde şimdi aşağıda görülen assemble tuşuna basıp derleme yapınız.

Not: Assembly simülatöründe açıklama satırı yazmak için cümle başına noktalı virgül koymanız gerekmektedir. 

Ardından derleme işlemi sonucu aşağıdaki ekran görüntüsünü elde etmeniz gerekiyor.

Komutların yanındaki her tik işareti komutunuz doğru yazıldığını belirtiyor.Eğer herhangi bir komutun yanında "X" işareti görürseniz ilgili satırla bir sorununuz var demektir.

Bu işlemden sonra artık verilerimizi gireceğiz.Verilerimizi C060'dan itibaren sırayla elle giriyoruz.Aşağıda benim girdiğim değerleri görebilirsiniz.

Bu işlemden sonra "step by step"  tuşuyla her adımı tek tek işletip Akümülatör,B-C,D-E gibi kaydedicilerin ve durum bayraklarının nasıl değiştiğini kontrol edebilirsiniz.

Ve son olarak adım adım çalıştırdıktan sonra aşağıdaki ekran görüntüsünü almanız gerekiyor.

Görüldüğü üzere C060'dan başlayan dizimizi C070'dan itibaren kopyalamayı başardık.Umarım zevkle okuyacağınız bir makale olmuştur.Her türlü sorunuz için bana ulaşabilirsiniz.Bir sonraki makalemde görüşmek dileğiyle ...

Batuhan Düzgün

Bilgisayar Mühendisi

Endüstri Mühendisi

Yazar Hakkında

Batuhan Düzgün

Batuhan Düzgün

www.batuhanduzgun.net

1988 Akhisar doğumludur. Sakarya Üniversitesi Bilgisayar Mühendisliği ve Endüstri Mühendisliği bölümlerinden 2011 yılında mezun olmuştur. Eskisehir OsmanGazi Universitesi'nde Endustri Muhendisligi Tezli Yuksek Lisansi programinda ogrenim yasantisina devam etmektedir. 1 senedir aktif çalışma hayatı içindedir. Mobil Teknolojiler, GSM Ağları, Bilgisayar Ağları, TCP/IP, Ethernet, HTTP, SMPP protokolleri, .NET ile yazılım geliştirme, veritabanı yönetim sistemleri ve Java gibi bir çok konuda çalışma ve proje gerçekleştirmiştir. Son zamanlarda özellikle Kurumsal Java konusuna çalışmaktadır.

Sosyal Medya

ORANLAR

  • 3367izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120152
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65269
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48392
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ