1.ASSEMBLY DİLİNİN YERİ
33
1.1Assembly Dili Hakkındaki Yanlışlar ve Doğrular
34
1.1.1Assembly Dili Hakkındaki Yanlışlar
34
1.1.2Assembly Dili Hakkındaki Doğrular
36
1.1.3Neden 80x86 Assembly Dili?
36
2.1İkili (Binary) Sayı Düzeni
37
2.2Sekizli (Octal) Sayı Düzeni
40
2.3On Altılı (Hexadecimal) Sayı Düzeni
40
3.SİSTEM ORGANİZASYONU
43
3.1FSB (Front Side Bus)
44
3.2Bellek Bağlantı Yolları
44
3.2.1SDRAM (Synchronous Dynamic Random Access Memory)
45
3.2.2DDR-SDRAM (Dual Data Rate SDRAM)
46
3.2.3DDR2-SDRAM (Dual Data Rate 2 – SDRAM)
47
3.2.1DDR3-SDRAM (Dual Data Rate 3 – SDRAM)
48
3.2.2DDR4-SDRAM (Dual Data Rate 4 – SDRAM)
49
3.2.3RDRAM (Rambus Dynamic Random Access Memory)
50
3.3Giriş/Çıkış Yolları
50
3.3.1Yüksek Hızlı Giriş/Çıkış Yolları
51
3.3.1.1Grafik Birim Bağlantısı
51
3.3.1.2İkincil Bellek Birim Bağlantısı
52
3.3.1.3Diğer Çevre Birim Bağlantıları
54
3.3.1.5PCMCIA (Personal Computer Memory Card International Association)
55
3.3.1.6USB (Universial Serial Bus)
55
3.3.2Düşük Hızlı Giriş/Çıkış Yolları
56
3.3.2.1Paralel (Eşanlı) İskele
56
3.3.2.2Seri (Dizisel) İskele
56
4.GENEL BİLGİLER VE 80X86 AİLESİ
57
4.2Matematik İşlemciler
62
4.3Kişisel Bilgisayarlarda Bellek Kullanımı ve Büyüklüğü
67
4.3.1Genişletilmiş (Expanded) Bellek
68
4.3.2Uzatılmış (Extended) Bellek
68
4.48086 İşlemcisinin İçyapısı
70
4.5Kesim (Segment) Yapısı
70
4.5.1Kod (Code) Kesimi
71
4.5.2Yığın (Stack) Kesimi
72
4.5.3Veri (Data) Kesimi
73
4.6.1Veri Grubu Yazmaçları
73
4.6.1.1AX: Accumulator
74
4.6.1.2BX: Base Register
74
4.6.1.3CX: Count Register
74
4.6.1.4DX: Data Register
75
4.6.2İşaret Grubu Yazmaçları
75
4.6.2.1SP: Stack Pointer
75
4.6.2.2BP: Base Pointer
75
4.6.2.3IP: Instruction Pointer
75
4.6.3Sıra Grubu Yazmaçları
76
4.6.3.1SI: Source Index
76
4.6.3.2DI: Destination Index
76
4.6.4Kesim Grubu Yazmaçları
76
4.7.3AF: Auxilary Carry Flag
77
4.7.7IF: Interrupt Flag
78
4.7.8DF: Direction Flag
78
4.7.9OF: Overflow Flag
78
4.816 / 32 Bitlik İşlemciler Arasındaki Farklılıklar
78
4.8.132 Bitlik İşlemcideki Diğer Bayraklar
80
4.8.1.1AC: Alignment Check
80
4.8.1.2VM: Virtual 8086 Mode
80
4.8.1.3RF: Resume Flag
80
4.8.1.4NT: Nested Task
80
4.8.1.5IOPL: I/O - Privilege Level
80
4.8.2Kontrol Yazmaçları
81
4.8.2.1CR0: Control Register 0
81
4.8.2.2CR1: Control Register 1
82
4.8.2.3CR2: Control Register 2
82
4.8.2.4CR3: Control Register 3
82
4.8.2.5Debug ve Test Yazmaçları
82
4.964 Bit İşlemci Yazmaçları
82
4.10.1Gerçek Kipte Fiziksel Adres Hesabı
84
4.10.2Korumalı Kipte Fiziksel Adres Hesabı
85
4.10.2.116 Bit Korumalı Kip
85
4.10.2.232 Bit Korumalı Kip
85
4.10.2.3Sanal (Virtual) 8086 Kipi
86
4.11Çalışma Kipleri Arasındaki Farklar
86
4.12İşletim Sistemleri Açısında Çalışma Kipleri
87
4.13İşlemcinin Komutları Adım Adım Çalıştırması
87
5.80X86 KOMUTLARI (MNEMONIC) VE KOMUT YAPISI
89
5.1Veri Aktarım Komutları
90
5.3Dallanma Komutları
101
5.3.1Koşullu Dallanma Komutları
101
5.3.1.1Basit Koşullu Dallanma Komutları
102
5.3.1.2İşaretsiz Sayı İşlemlerine Ait Koşullu Dallanma Komutları
103
5.3.1.3İşaretli Sayı İşlemlerine Ait Koşullu Dallanma Komutları
105
5.3.2Koşulsuz Dallanma Komutları
106
5.3.3Çağırma Komutları
108
5.5Bayraklar ile İlgili Komutlar
119
5.6Mantıksal Komutlar
121
5.7Öteleme ve Döndürme Komutları
126
5.8Dizgi (String) Komutları
131
5.11Giriş/Çıkış Komutları
145
5.12Durdurma ve Bekletme Komutları
147
5.13BCD Düzenleme İçin Kullanılan Komutlar
148
6.80X86 AİLESİNDE ADRESLEME KİPLERİ
153
6.1Anlık (Immediate) Adresleme
153
6.2Yazmaç (Register) Adresleme
153
6.3Doğrudan (Direct) Adresleme
153
6.4Yazmaç Dolaylı (Register Indirect) Adresleme
154
6.5Baz Göreli (Base Relative) Adresleme
154
6.6Doğrudan İndisli (Direct Index) Adresleme
155
6.7Dizgi (String) Adresleme
157
6.8İskele (Port) Adresleme
158
6.8.1Doğrudan İskele Adresleme
158
6.8.2Dolaylı İskeleme Adresleme
158
7.ASSEMBLY DİLİNDE PROGRAM YAZMAK İÇİN NELER GEREKLİDİR?
159
8.SÖZDE (PSEUDO) KOMUTLAR/İŞLEMLER
163
8.1Genel Amaçlı Sözde Komutlar
163
8.1.1Dosya Düzenlemede Kullanılan Sözde Komutlar
163
8.1.2Kesim Düzenlemede Kullanılan Sözde Komutlar
164
8.1.3Veri Tanımlamada Kullanılan Sözde Komutlar
166
DD (Define Doubleword)
167
DT (Define Ten Bytes)
167
DUP (Duplication Factor)
168
8.1.4Yordam Düzenlemede Kullanılan Sözde Komutlar
169
PROC (Procedure) / ENDP (End of procedure)
170
8.1.5Makro Düzenlemede Kullanılan Sözde Komutlar
171
MACRO (Macro) / ENDM (End of macro)
171
8.1.6Diğer Sözde Komutlar
172
IRP (Indefinite Repeat)
174
IRPC (Indefinite Repeat Character)
174
8.2Koşullu Sözde Komutlar
175
9.ASSEMBLY PROGRAM TİPLERİ
177
9.1.1Örnek EXE Programlar
180
9.2COM Yapısındaki Assembly Programların Genel Özellikleri
191
9.2.1Örnek COM Programlar
194
9.3COM ve EXE Programlar Arasındaki Farklılıklar
200
10.ASSEMBLY PROGRAMIN TEMEL TAŞLARI: YORDAM VE MAKRO
203
10.1Yordam Özellikleri
203
10.1.1Kesim İçi Yordam Kullanımı
203
10.1.2Kesimler Arası Yordam Kullanımı
209
10.2Makro Özellikleri
218
10.2.1Makro Örnekleri
221
10.3Yordam ve Makro Karşılaştırılması
226
11.ANA VE ALT PROGRAMLARDAKİ KESİMLERİN BİRLEŞTİRİLMESİ
227
11.1Birleştirilmiş (Combined) Kod Kesimi Kullanımı
227
11.2Birleştirilmiş (Combined) Veri Kesimi Kullanımı
237
12.YORDAMLAR VE PARAMETRE AKTARMA YÖNTEMLERİ
247
12.1Yazmaç Üzerinden Parametre Aktarma
247
12.2Yığın Üzerinden Parametre Aktarma
247
12.3EXTRN/PUBLIC Kullanımı ile Parametre Aktarımı
253
13.SİSTEMİN ÇALIŞMAYA BAŞLAMASI (START UP)
257
13.1DOS Bellek Haritası
259
14.KESME (INTERRUPT) NEDİR? NE AMAÇLA KULLANILIR?
261
14.1.1Dâhili Kesmeler
264
14.1.2Harici Kesmeler
264
14.1.2.1Maskelenemez Kesmeler (NMI)
265
14.1.2.2Maskelenebilir Kesmeler (INTR)
265
14.1.3Kesme Öncelikleri
265
14.1.4Kesme Oluştuğunda Yapılan İşlemler
268
14.2Vektör Tablosunun Görevi ve Komumu
269
14.2.1Vektör Tablosunda Değişiklik Neden ve Nasıl Yapılır?
269
14.2.2Interrupt Servis Programı Yazarken Nelere Dikkat Edilmelidir?
271
14.2.3Vektöre Tablosunun Eski Haline Getirilmesi
272
14.3DOS ve BIOS Ara Yüzleri
272
14.3.1BIOS (Basic Input Output System) Kesme Fonksiyonları
273
14.3.2DOS Kesme Fonksiyonları
274
15.YÜKSEK SEVİYELİ DİLLER VE ASSEMBLY BAĞLANTISI
275
15.1Turbo Pascal’dan Assembly Yordam Çağırma
275
15.2Assembly’den Turbo Pascal Yordam Çağırma
278
15.3Turbo Pascal ve Assembly Kullanımında Dikkat Edilmesi Gerekenler
282
15.4Turbo C’den Assembly Yordam Çağırılması
283
15.5Assembly’den Turbo C Yordam Çağırma
284
15.6Turbo C ve Assembly Kullanımında Dikkat Edilmesi Gerekenler
286
16.1Çalışma Ortamının Kurulması
287
16.1.1Mevcut İşletim Sistemini Kullanmadan Çalışma Ortamının Kurulması
288
16.1.2Microsoft İşletim Sistemlerinde Çalışma Ortamının Oluşturulması
289
16.1.3Linux İçin Çalışma Ortamını Oluşturma
291
16.1.4Emülatör Kullanımı
292
16.2.1R (Register-Yazmaç)
294
16.2.2D (Dump / Display – Döküm / Görüntüleme)
295
16.2.4T (Trace / İzleme)
296
16.2.6E (Edit / Düzenle)
298
16.2.7F (Fill / Doldurma)
298
16.2.8C (Compare / Karşılaştırma)
299
16.2.10H (Hex Calculator / On Altılı Hesaplayıcı)
301
16.2.11L (Load / Yükle)
301
16.2.12M (Move / Aktar)
301
16.2.13P (Proceed / Devam Etmek)
301
16.2.14Q (Quit / Çıkış)
302
16.3ASCII Karakter Tablosu
302
16.4BIOS Kesme Listesi
303
16.5DOS Kesme Listesi
307
16.6.1Sıralı Dizide Arama
311
16.6.3Dizi Elemanları Üzerinden Bit İşlemleri
314
16.6.4Karekök Hesabı – SQROOT (Harici Yordam)
315
16.6.5Harici Karekök (SQROOT) Yordamını Kullanmak
316
16.6.6Klavyeden Okuma, Hesaplama ve Ekrana Yazdırma İşlemleri
317
Türkçe İngilizce Terimler Dizini
323