İÇİNDEKİLER
İçindekiler
Teşekkür 5
Önsöz 7
İçindekiler 9
Şekil Listesi 19
Tablo Listesi 25
Kısaltmalar 31
Sembol Listesi 39
1. ASSEMBLY DİLİNİN YERİ 43
1.1 Assembly Dili Hakkındaki Yanlışlar ve Doğrular 44
2. SAYI SİSTEMLERİ 47
2.1 İkili (Binary) Sayı Düzeni 47
2.2 Sekizli (Octal) Sayı Düzeni 50
2.3 On Altılı (Hexadecimal) Sayı Düzeni 50
3. SİSTEM ORGANİZASYONU 53
3.1 FSB (Front Side Bus) 54
3.2 Bellek Bağlantı Yolları 55
3.3 Giriş/Çıkış Yolları 61
4. GENEL BİLGİLER VE 80X86 AİLESİ 69
4.1 İntel Mikroişlemcileri 69
4.2 Matematik Yardımcı İşlemciler 78
4.3 Kişisel Bilgisayarlarda Bellek Kullanımı ve Büyüklüğü 79
4.4 8086 Mikroişlemcisinin İçyapısı 83
4.5 Kesim (Segment) Yapısı 83
4.6 Yazmaç (Register) 86
4.7 Bayraklar (Flags) 90
4.8 32 Bit Mikroişlemci Yazmaçları 91
4.9 64 Bit Mikroişlemci Yazmaçları 95
4.10 16 / 32 / 64 Mikroişlemcilerin Çalışma Kipleri 96
4.11 Belleğe Erişim 98
4.12 Mikroişlemcinin Komutları Adım Adım Çalıştırması 104
5. 80X86 KOMUTLARI (MNEMONIC) VE KOMUT YAPISI 105
5.1 Veri Aktarım Komutları 106
MOV 107
MOVSX 108
MOVZX 108
LEA 109
LDS 109
LES 110
XCHG 110
XLAT / XLATB 111
5.2 Aritmetik Komutlar 111
ADD 111
ADC 112
XADD 112
SUB 112
SBB 113
INC 113
DEC 113
NEG 114
CMP 114
CMPXCHG 115
MUL 115
IMUL 116
DIV 116
IDIV 117
5.3 Dallanma Komutları 117
JZ / JE 118
JNZ / JNE 118
JS 118
JNS 119
JO 119
JNO 119
JP / JPE 119
JNP / JPO 119
JB / JNAE / JC 120
JA / JNBE 120
JAE / JNB / JNC 120
JBE / JNA 120
JL / JNGE 121
JNL / JGE 121
JLE / JNG 121
JG / JNLE 121
JMP 123
JMP FAR PTR 124
CALL 126
CALL FAR PTR 126
INT 127
INTO 127
RET 128
RETF 128
IRET 129
5.4 Döngü Komutları 129
LOOP 129
LOOPZ / LOOPE 130
LOOPNZ / LOOPNE 130
JCXZ 130
5.5 Bayraklar ile İlgili Komutlar 136
CLC 136
CMC 136
STC 137
CLD 137
STD 137
STI 137
CLI 138
LAHF 138
SAHF 138
5.6 Mantıksal Komutlar 138
NOT 139
OR 139
AND 139
XOR 140
TEST 140
SETxxx 141
BT 141
BTC 142
BTR 142
BTS 143
5.7 Öteleme ve Döndürme Komutları 143
SHL 144
SHLD 144
SAL 145
SHR 145
SHRD 145
SAR 146
RCL 146
RCR 147
ROL 147
ROR 148
5.8 Dizgi (String) Komutları 148
MOVSB 149
MOVSW 149
MOVSD 150
CMPSB 150
CMPSW 150
CMPSD 151
SCASB 151
SCASW 152
SCASD 152
LODSB 152
LODSW 153
LODSD 153
STOSB 153
STOSW 154
STOSD 154
CBW 154
CWD 155
CWDE 155
CDQ 155
BSWAP 155
5.9 Ön Ekler 156
REP 156
REPE / REPZ 156
REPNE / REPNZ 157
LOCK 157
5.10 Yığın Komutları 157
POP 158
POPA 158
POPAD 159
POPF 159
POPFD 159
PUSH 160
PUSHA 160
PUSHAD 161
PUSHF 161
PUSHFD 161
5.11 Giriş/Çıkış Komutları 162
IN 162
INSB 162
INSW 163
INSD 163
OUT 163
OUTSB 164
OUTSW 164
OUTSD 164
5.12 Durdurma ve Bekletme Komutları 164
HLT 165
NOP 165
WAIT 165
5.13 BCD Düzenleme İçin Kullanılan Komutlar 165
AAA 166
AAD 167
AAM 167
AAS 168
DAA 168
DAS 169
5.14 Diğer Komutlar 169
6. 80X86 AİLESİNDE ADRESLEME KİPLERİ 171
6.1 Veri Adresleme Kipleri 171
6.2 Program Belleği Adresleme Kipleri 176
6.3 Yığın Belleği Adresleme 177
6.4 İskele (Port) Adresleme 177
7. SÖZDE (PSEUDO) KOMUTLAR/İŞLEMLER 179
7.1 Genel Amaçlı Sözde Komutlar 179
PAGE 179
TITLE 179
SEGMENT / ENDS 180
ORG (Origine) 181
ASSUME 181
DB (Define Byte) 182
DW (Define Word) 182
DD (Define Doubleword) 183
DQ (Define Quadword) 183
DT (Define Ten Bytes) 183
EQU (Equal) 183
DUP (Duplication Factor) 184
REAL4, REAL8, REAL10 184
TYPEDEF 184
PTR (Pointer) 185
LABEL 185
PROC (Procedure) / ENDP (End of procedure) 186
EXTRN 186
PUBLIC 187
MACRO (Macro) / ENDM (End of macro) 187
188
LOCAL 188
EXITM 188
LENGTH 189
TYPE 189
SIZE 189
OFFSET 189
SEG (Segment) 190
REPT (Repetition) 190
IRP (Indefinite Repeat) 190
IRPC (Indefinite Repeat Character) 190
END 191
7.2 Koşullu Sözde Komutlar 191
IF 191
IFE 191
IF1 191
IF2 191
IFDEF 192
IFNDEF 192
IFB 192
IFNB 192
IFDIF 192
IFIDN 193
8. ASSEMBLY DİLİNDE PROGRAM YAZMAK İÇİN NELER GEREKLİDİR? 195
9. ASSEMBLY PROGRAM TİPLERİ 199
9.1 EXE Tipindeki Assembly Programların Genel Özellikleri 199
9.2 COM Yapısındaki Assembly Programların Genel Özellikleri 213
9.3 COM ve EXE Programlar Arasındaki Farklılıklar 222
10. ASSEMBLY PROGRAMIN TEMEL TAŞLARI: YORDAM VE MAKRO 225
10.1 Yordam Özellikleri 225
10.2 Makro Özellikleri 240
10.3 Yordam ve Makro Karşılaştırılması 248
11. ANA VE ALT PROGRAMLARDAKİ KESİMLERİN BİRLEŞTİRİLMESİ 249
11.1 Birleştirilmiş (Combined) Kod Kesimi Kullanımı 249
11.2 Birleştirilmiş (Combined) Veri Kesimi Kullanımı 259
12. YORDAMLAR VE PARAMETRE AKTARMA YÖNTEMLERİ 269
12.1 Yazmaç Üzerinden Parametre Aktarma 269
12.2 Yığın Üzerinden Parametre Aktarma 269
12.3 EXTRN/PUBLIC Kullanımı ile Parametre Aktarımı 275
13. SİSTEMİN ÇALIŞMAYA BAŞLAMASI (START UP) 277
13.1 DOS Bellek Haritası 279
14. KESME (INTERRUPT) NEDİR? NE AMAÇLA KULLANILIR? 281
14.1 Kesme Çeşitleri 284
14.2 Vektör Tablosunun Görevi ve Komumu 286
14.3 DOS ve BIOS Arayüzleri 290
15. YÜKSEK SEVİYELİ DİLLER VE ASSEMBLY BAĞLANTISI 293
15.1 Turbo Pascal’dan Assembly Yordam Çağırma 293
15.2 Assembly’den Turbo Pascal Yordam Çağırma 296
15.3 Turbo Pascal ve Assembly Kullanımında Dikkat Edilmesi Gerekenler 300
15.4 Turbo C’den Assembly Yordam Çağırılması 301
15.5 Assembly’den Turbo C Yordam Çağırma 302
15.6 Turbo C ve Assembly Kullanımında Dikkat Edilmesi Gerekenler 304
15.7 Linux Ortamımda GCC ve NASM Kullanımı 305
15.8 MS Visual Studio Kullanılarak C Programı İçerisinden Assembly Yordamı Çağırma 308
15.9 MS Visual Studio Ortamında C Dosyası İçerisinde Inline Assembly Kod Bloğu 312
16. 8086 DONANIM ÖZELLİKLERİ 315
16.1 İşlemcilere Yönelik Tanımlar/Kavramlar 315
16.2 8086 Mikroişlemci Genel Özellikleri 317
16.3 8086 İçyapısı 317
16.4 8086 Güç Gereksinimi 318
16.5 8086 Uç Tanımları 319
16.6 8086 Yardımcı Devreleri 323
17. TEMEL ÇEVRE BİRİMLER 331
17.1 Çevre Birimi, Çevresel Arayüz, Giriş/Çıkış Birimi 331
17.2 G/Ç Assembly Komutları 332
17.3 G/Ç Haritalama Yöntemleri 333
17.4 Adres Çözümleme Devresi 334
17.5 Temel G/Ç Birimleri 335
18. 8255 PPI (PROGRAMMABLE PERIPHERAL INTERFACE) 345
18.1 8255 Uç Tanımları 345
18.2 8255 İç Yapısı 346
18.3 8255 Kipleri 346
18.4 8255 Örnek Uygulamaları 354
19. 8251 USART (UNIVERSAL SYNCHRONOUS/ASYNCHRONOUS
RECEIVER/TRANSMITTER)
373
19.1 8251 Uç Tanımları 373
19.2 8251 İç Yapısı 373
19.3 8251 Yamaçları ve Görevleri 374
19.4 8251 Örnek Uygulamaları 378
20. 8254 PIT (PROGRAMMABLE INTERVAL TIMER) 383
20.1 8254 Uç Tanımları 383
20.2 8254 İç Yapısı 384
20.3 8254 Kontrol Yazmacı 384
20.4 8254 Kipleri 385
20.5 8254 Sayıcı Tutma Komutu 388
20.6 8254 Geri Okuma Komutu 388
20.7 8254 Durum Yazmacı 389
20.8 8254 Örnek Uygulamaları 389
21. ADC0804 VE DAC0830 397
21.1 ADC0804 402
21.2 DAC0830 402
21.3 Örnek ADC Uygulaması 403
21.4 Örnek DAC Uygulaması 405
22. 8259 PIC (PROGRAMMABLE INTERRUPT CONTROLLER) 407
22.1 Kesme Kaynakları 407
22.2 Kesme Vektör Tablosu 407
22.3 Kesme Yürütme Süreci 408
22.4 Donanımsal Kesmeler 408
22.5 8259 Uç Tanımlar 411
22.6 8259 İç Yapısı 413
22.7 8259 Kontrol ve Ayar Yazmaçları 414
22.8 PC–XT ve PC–AT Bilgisayarlarda 8259 Kullanımı 418
22.9 Örnek Uygulamalar 420
23. 8237 DMA (DIRECT MEMORY ACCESS) 437
23.1 8237 Uç Tanımları 437
23.2 8237 İç Yapısı 439
23.3 8237 Yazmaçları 440
23.4 8237 Veri Transfer Kipleri 445
23.5 8237 Programlama 446
24. BELLEK ARAYÜZÜ 449
24.1 Bellek Cihazları 449
24.2 8086 Adres Uzayı ve Bellek Arayüzü 451
24.3 Bellek Birimleri için Adres Çözümleme 453
24.4 Bellek Elemanlarında Birlikte Kullanım ile Kapasite Genişletme 455
25. EKLER 459
25.1 80x86 Ailesi Mikroişlemcilerinin Teknik Özellikleri 459
25.2 Çalışma Ortamının Kurulması 482
25.3 Debug Komutları 494
25.4 Linux’te GDB ile Debug 503
25.5 ASCII Karakter Tablosu 506
25.6 BIOS Kesme Listesi 507
25.7 DOS Kesme Listesi 511
25.8 Ek Örnek Kodlar 515
Kaynaklar 555
Türkçe İngilizce Terimler Dizini 559
Özgeçmiş 565 |