Assembly X86 hakkında Yardım

Başlatan Asm06, 30 Ocak 2015, 12:52:25

Asm06

Merhaba,

Öncelikle Alt ve ya Üst seviyeli programlama dilleri hakkında bilgim yoktur. Programlamaya Assembly ile merhaba dedim.

Kullandığım kaynaklar (80x86 Assembly Dili - Ahmet Tevfik İNAN ve x86 Tabanlı Mikroişlemci Mimarisi ve Assembly Dili - Nurettin TOPALOĞLU)

Belirttiğim kitaplardan ve internetten edindiğim bilgilere dayanarak bu dili öğrenmek istiyorum. Fakat kitaplar oldukça kafa karıştırıcı ( Biliyorum, Assembly başlangıç için çok yanlış bir tercih ama ben yanlışta olsa bu dili öğrenmek istiyorum.)

ve internette türkçe kaynak (Bol Bol Uygulama, Geniş Açıklama) mevcut değil.

Bu başlık altında anlamadığım, merak edipte cevabını bulamadığım sorularım olacak! bu konu hakkında tecrübesi olan arkadaşlar bu başlık altında bana yardımcı olmalarını dilerim. Teşekkürler.


Asm dilini bilmek kadar önemli olan diğer konu programcının kullandığı sistemin donanım bilgisine sahip olması...

Anlamaya çalıştığım bir konu,


İşlemcideki Adres yolu ve Veriyolunu detaylı olarak açıklarmısınız ?

Yazmaç büyüklüğü: İşlemcide kullanabileceğimiz yazmaç tipleri 8/16 veya 32 bit'i ifade eder.(Yanlış anlamadıysam.)

Adres yolu bit : ?

Veriyolu bit : ?


Teşekkür ederim.

Windows 8.1 de yazdığım (bilinçsizce olsada :) ) Assembly .COM tipindeki uygulamalar neden çalışmyor ?

Bu arada Kullandığım Sistem:

İşlemci: Intel Core i3-4010u
Ram Bellek: 4 GB
İşletim Sistemi: Windows 8.1 X64
Kullandığım Assembler: EMU80x86 4.08 ; Oldukça Ergonomik...


Kabil ATICI

Fiziksel olarak işlemciler kendi başlarına kullanılmazlar, ram, rom ile  uart, port  gibi çevre birimler ile birlikte kullanılırlar.

Çevre birileri bir kenara bırakırsak, ram veya rom'da herhangi bir bilgiye nasıl ulaşır. işte buradaki asıl soru budur?

Ram veya rom'daki bir bilgiye önce aletin adres hatlarından bilginin bulunduğu gözeyi seçeriz, sonra aletin çip seçme ucunu aktifleriz bu o gözedeki veriyi veri hatlarına alınmasını sağlar. İşlemci işte bu işleri kontrol eder.

İşlemci yürüttüğü komutları kullanarak gerekli adresleme işlerini yürütür ve aynı zamanda gereken veri hareketlerini kontrol eder.

Bir tek bilginin bulunduğu hücreye bit diyoruz ve sadece 2 değeri vardır: sıfır ve bir. Biz hücrelerin hareketlerini anlayabilmek için ( 1001101010 gibi bir ifade bizim için bir anlam ifade etmiyor) bitleri gruplamışız ve buna 8 tane bitin oluşturduğu gruba bayt demişiz.
8bit=1 bayt

veri hatları tek bir seferde 8 bitlik veri işleyebilen işlemcilere 8 bitlik işlemci diyoruz.(örneğin Z80 gibi) Eğer bu işlemci tek bir seferde en fazla 16 bit işleyebilseydi bu 16 bitlik işlemci olurdu. Dolayısı ile veri hatları tek bir seferde en fazla 32 bit işleyebilseydi 32 bitlik işlemci olurdu.

Adres yolu bu işlemcinin çevre birimlere ulaşmak için (kendi içindekiler dahil) kullandığı hatlardır. Ram'deki bir veriyi okumak veya yazmak gibi veya rom'daki bir veriyi okumak gibi. ama sadece o verinin buluduğu yeri erişmek içindir ki o yüzden adres deniyor.

Veri yolu o adresdeki veriyi işlemciye alma veya o adrese göndermek için kullanılan hatlardır.
ambar7

ceyhanan

Kontrol lojiği konularını araştırırsan sorularının cevabını bulabilirsin.

İşlemcide adres yolunun genişliği ambar7 hocamın da dediği gibi gösterebileceği göze sayısını değiştirir, kabaca 8bit adres yoluna sahip bir işlemci 256 farklı gözeyi gösterebilir. Burada kontrol lojiği devreye giriyor, adres yolu aslında bir dekoderin ya da mux un adres seçme uçlarına gider. Adres yolunda hangi sayı varsa bu göze okuma yazma işlemlerine aktifleştirilmiş demektir.
Veri yolu da aynı şekilde işlemci içerisinde taşınan verinin hacmini belirler, 16 bitlik bir işlemcinin 8 bitlik bir işlemciden daha performanslı olmasının sebebi de budur. Bir yazmaçta 500 değeri var diyelim, bu değeri 8 bitlik işlemcide okurken 2 parça halinde okuman gerekir ama 16 bitlik bir işlemcide tek seferde okuyabilirsin.

Yazmaç büyüklüğü de veriyolu genişliğiyle aynıdır, diğer türlü bir anlamı olmaz.

Daha detaylı öğrenmek istersen, lojik tasarım kitaplarını, kontrol lojiği konularını karıştır ve binary sayı sistemini iyi öğren.

Daha da ileri gitmek istersen belirttiğim konulara hakim olduktan sonra, fpga üzerinde kendi işlemcini tasarlamayı deneyebilirsin.

Kolay gelsin.

z

#3
Yazmaç genişliği (bitsayısı) ile veriyolu genişliğinin aynı olması çok iyi bir şey fakat şart değil. (Örneğin Intel 8088)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com