X86 Assembly Register, Kod Yapısı

Narisca

Katılımcı Üye
11 Mar 2021
421
198
Londra
Assembly Kod Yapısı
------------------------------------------------------------------------------------------------
Y2ltEi.jpg

------------------------------------------------------------------------------------------------

Data Bölümü (Veri Bölümü)=
Veri bölümü, başlatılan verileri veya sabitleri bildirmek için kullanılır. Bu veriler çalışma zamanında değişmez. Çeşitli sabit değerleri, dosya adlarını veya arabellek boyutunu vb. bildirebilirsiniz.

Veri bildirme sözdizimi aşağıdaki gibidir =
section.data

Bss Bölümü =
BSS bölümü değişkenleri bildirmek için kullanılır.

BSS bölümünü bildirmek için sözdizimi aşşağıdaki gibidir =
section.bss

Text Bölümü (Metin Bölümü) =
Metin bölümü gerçek kodu tutmak için kullanılır. Bu bölüm, çekirdeğe programın yürütülmesinin nerede başladığını bildiren global _start bildirimiyle başlamalıdır.

Metin bölümünün bildirilmesi için sözdizimi =
section.text
global _start
_start:


-------------------------------------------------------------------------------------------------------------------
Assembly Registers

İşlemci işlemleri çoğunlukla veri işlemeyi içerir. Bu veriler bellekte saklanabilir ve oradan erişilebilir. Bununla birlikte, verileri bellekten okumak ve belleğe depolamak, işlemciyi yavaşlatır, çünkü veri isteğini kontrol veriyolu üzerinden ve bellek depolama birimine göndermek ve verileri aynı kanaldan almak için karmaşık işlemleri içerir.

İşlemci işlemlerini hızlandırmak için işlemci, kayıtlar adı verilen bazı dahili bellek depolama konumlarını içerir.

Kayıtlar, belleğe erişmek zorunda kalmadan veri öğelerini işlemek için depolar. İşlemci çipine sınırlı sayıda kayıt yerleştirilmiştir.

Processor Register (İşlemci Kayıtları)=

IA-32 mimarisinde on adet 32 bit ve altı adet 16 bit işlemci kaydı vardır.

Kayıtlar üç kategoriye ayrılır =

1- General Registers (Genel Kayıtlar)
2- Control Registers (Kontrol Kayıtları)
3- Segment registers. (Segment Kayıtları)


Genel kayıtlar ayrıca aşağıdaki gruplara ayrılmıştır =

1- Data Registers (Veri Kayıtları)
2- Pointer Registers (İşaretçi kayıtları)
3- İndex Registers (Dizin Kayıtları)

------------------------------------------------------------------------------------------------
Data Registers (Veri Kayıtları) =
Aritmetik, mantıksal ve diğer işlemler için dört adet 32 bit veri kaydı kullanılır.

Bu 32-bit kayıtları üç şekilde kullanılabilir =
1- Tam 32-bit veri kayıtları olarak: EAX, EBX, ECX, EDX.
2- 32-bit kayıtların alt yarısı dört 16-bit veri kaydı olarak kullanılabilir: AX, BX, CX ve DX.
3- Yukarıda belirtilen dört 16 bit kaydın daha düşük ve daha yüksek yarısı sekiz 8 bit veri kaydı olarak kullanılabilir: AH, AL, BH, BL, CH, CL, DH ve DL.

ch4kGs.jpg


Bu veri kayıtlarının bazıları aritmetik işlemlerde özel bir kullanıma sahiptir.

AX birincil akümülatör; giriş/çıkış ve çoğu aritmetik talimatta kullanılır. Örneğin, çarpma işleminde, bir işlenen işlenenin boyutuna göre EAX veya AX veya AL kaydında saklanır.

BX temel kayıt olarak bilinir, dizinlenmiş adreslemede kullanılabileceği gibi.

CX, sayım kaydı olarak bilinir, ECX olarak, CX kayıtları döngü sayısını yinelemeli işlemlerde saklar.

DX is known as the data register. Giriş / çıkış işlemlerinde de kullanılır. Ayrıca, büyük değerleri içeren çarpma ve bölme işlemleri için DX ile birlikte AX kaydı ile birlikte kullanılır.
------------------------------------------------------------------------------------------------
Pointer Registers (İşaretçi Kayıtları) =
Işaretçi kayıtları 32-bit EIP, ESP ve EBP kayıtları ve karşılık gelen 16-bit sağ bölümleri IP, SP ve BP vardır.

İşaretçi kayıtlarının üç kategorisi vardır =

1- Instruction Pointer (IP) (Talimat işaretçisi) = 16 bit IP kaydı, yürütülecek sonraki talimatın mahsup adresini saklar. CS kaydı ile birlikte IP (CS: IP olarak), kod segmentindeki geçerli talimatın tam adresini verir.

2- Stack Pointer (SP) (Yığın işaretçisi) = 16 bit SP kaydı, program yığını içindeki mahsup değerini sağlar. SS kaydı (SS:SP) ile bağlantılı olarak SP, program yığınındaki verilerin veya adresin mevcut konumunu ifade eder.

3- Base Pointer (BP) (Temel İşaretçi) = 16-bit BP kaydı esas olarak bir alt yordama geçirilen parametre değişkenlerine başvurmaya yardımcı olur. SS kaydındaki Adres, parametrenin konumunu almak için bp'deki ofset ile birleştirilir. BP, özel adresleme için temel kayıt olarak DI ve sı ile de birleştirilebilir.



-------------------------------------------------------------------------------------------------------------------

Index Registers (Dizin Kayıtları) =
32-bit Yönerge işaretçisi kaydı ve 32-bit bayrak kaydı birleştirilmiş denetim kayıtları olarak kabul edilir.

Birçok talimat karşılaştırmalar ve matematiksel hesaplamalar içerir ve bayrakların durumunu değiştirir ve diğer bazı koşullu talimatlar, kontrol akışını başka bir yere taşımak için bu durum bayraklarının değerini test eder.

Ortak bayrak bitleri şunlardır:

Owerflow Flag (OF) (Taşma bayrağı) = İmzalı bir aritmetik işlemden sonra yüksek mertebeden bir bitin (en soldaki bit) veri taşmasını gösterir.

Direction Flag (DF) (Yön bayrağı) = Dize verilerini taşımak veya karşılaştırmak için sol veya sağ yönü belirler. DF değeri 0 olduğunda, dize işlemi soldan sağa doğru yön alır ve değer 1 olarak ayarlandığında, dize işlemi sağdan sola doğru yön alır.

Interrupt Flag (IF) (Kesme bayrağı)= Harici kesmelerin klavye girişi vb.gibi olup olmadığını belirler., göz ardı edilecek veya işlenecektir. Değer 0 olduğunda harici kesintiyi devre dışı bırakır ve 1 olarak ayarlandığında kesmeleri etkinleştirir.

Trap Flag (TF) (Tuzak bayrağı) = İşlemcinin çalışmasını tek adımlı modda ayarlamanıza izin verir. Kullandığımız hata ayıklama programı tuzak bayrağını ayarlar, böylece bir seferde bir komut yürütmeyi adım atabiliriz.

Sign Flag (SF) (İşaret bayrağı) = Bir aritmetik işlemin sonucunun işaretini gösterir. Bu bayrak, aritmetik işlemi izleyen bir veri öğesinin işaretine göre ayarlanır. İşaret, en soldaki bitin yüksek sırası ile gösterilir. Pozitif sonuç, SF değerini 0'a temizler ve negatif sonuç 1'e ayarlar.

Zero Flag (ZF) (Sıfır bayrak) = Bir aritmetik veya karşılaştırma işleminin sonucunu gösterir. Sıfır olmayan bir sonuç sıfır bayrağını 0 olarak temizler ve sıfır sonucu 1 olarak ayarlar.

Auxiliary Carry Flag (AF) (Yardımcı taşıma bayrağı) = Aritmetik işlemden sonra bit 3'ten bit 4'e taşıma içerir; özel aritmetik için kullanılır. AF, 1 baytlık bir aritmetik işlem bit 3'ten bit 4'e taşınmasına neden olduğunda ayarlanır.

Parity Flag (PF) (Parite bayrağı) = Bir aritmetik işlemden elde edilen sonuçtaki Toplam 1 bit sayısını gösterir. Çift sayıda 1-bit, eşlik bayrağını 0'a temizler ve tek sayıda 1-bit, eşlik bayrağını 1'e ayarlar.

Carry Flag (CF) (Taşıma bayrağı) = Bir aritmetik işlemden sonra yüksek mertebeden bir bitten (en soldaki) 0 veya 1'in taşınmasını içerir. Ayrıca, bir kaydırma veya döndürme işleminin son bitinin içeriğini de saklar.
------------------------------------------------------------------------------------------------

Segment Registers (Segment Kayıtları) =
Segmentler, veri, kod ve yığın içeren bir programda tanımlanan belirli alanlardır.

Üç ana bölüm vardır =

1- Code Segment (Kod Segmenti) = Yürütülecek tüm talimatları içerir. 16 bit kod segmenti kaydı veya CS kaydı, kod segmentinin başlangıç adresini depolar.
2- Data Segment (Veri Segmenti) = Veri, sabitler ve çalışma alanları içerir. 16-bit veri segmenti kaydı veya DS kaydı, veri segmentinin başlangıç adresini depolar.
3- Stack Segment (Yığın Segmenti) = Yordamların veya alt yordamların verilerini ve dönüş adreslerini içerir. Bir 'yığın' veri yapısı olarak uygulanır. Yığın Kesimi kaydı veya SS kaydı, yığının başlangıç adresini depolar.

DS, CS ve SS kayıtlarının yanı sıra, verileri depolamak için ek segmentler sağlayan ES (ekstra segment), FS ve GS gibi başka ekstra segment kayıtları da vardır.Derleme programlamada, bir programın bellek konumlarına erişmesi gerekir. Bir segment içindeki tüm bellek konumları, segmentin başlangıç adresine göredir. Bir segment, 16 veya onaltılık 10 ile eşit olarak bölünebilen bir adreste başlar. Bu nedenle, tüm bu bellek adreslerindeki en sağdaki onaltılık rakam, genellikle segment kayıtlarında saklanmayan 0'dır. Segment kayıtları, bir segmentin başlangıç adreslerini saklar. Bir segment içindeki verilerin veya talimatların tam yerini almak için bir ofset değeri (veya yer değiştirme) gereklidir. Bir segmentteki herhangi bir bellek konumuna başvurmak için işlemci, segment kaydındaki segment adresini konumun uzaklık değeriyle birleştirir.​
 

Cyberdown

Üye
21 Haz 2020
154
5
Merhaba,

Ellerinize sağlık devamını bekleriz blue team ailesi ve diğer değerli üstlerimden, devrelerimden değerli insanlardan ...

Oldukça güzel bir konu. Çalışılması ve makine kodları da dahil olmak üzere üstünde durulması gereken bir dil.

[ + ] Saygılarımla.
* Sağlıcakla Kalın.
 

v for vandet

Katılımcı Üye
26 Kas 2020
261
103
bin\debug\
şimdikilerde kendilerine yazılımcı desin :sırıtan 1961'deki ilk Apollo görevindeki mekiğin yazılımı bir kadın tarafından Assembly kullanılarak yapıldı. :)
 

AXPA

Kıdemli Üye
13 Ocak 2018
2,343
150
New World
şimdikilerde kendilerine yazılımcı desin :sırıtan 1961'deki ilk Apollo görevindeki mekiğin yazılımı bir kadın tarafından Assembly kullanılarak yapıldı. :)

Merhaba,

Eksik Bilgi... Doğrusu ==> Apollo 11 Mekiğini Ay'a götüren yazılımı yazan Margaret Hamilton yazdı ancak yazılımı dönüş yolculuğunda çöktü. Mekiği dünyaya döndüren yazılımı çok kısa bir sürede yazan ve asıl başarıya imza atan Türk Yazılımcı ve Fizik Mühendisi İsmail Akbay'dır.

Bilginize,
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.