80x86 Assembly Dili, Tasarım ve Çevre Birimler Kavram – Tasarım – Uygulama  Dr. Ahmet Tevfik İnan, Dr. Erkan Uslu, Furkan Çakmak  - Kitap

80x86 Assembly Dili, Tasarım ve Çevre Birimler

Kavram – Tasarım – Uygulama

1. Baskı, 
Ocak 2021
Kitabın Detayları
Dili:
Türkçe
Ebat:
18x24
Sayfa:
566
Barkod:
9789750265112
Kapak Türü:
Karton Kapaklı
Fiyatı:
670,00
24 saat içerisinde temin edilir.
Kitabın Açıklaması
Bilgisayar sistemlerinin kullanıcıya bakan yüzü yazılım katmanı olsa da, onun üstünde yer aldığı donanım katmanı ve çevre birimleri ile olan ilişkileri de iyi anlaşılması gereken konulardır.
Kitabımızda, farklı platformlarda çalışma ortamlarının nasıl hazırlanabileceği, assembly dilinin yüksek seviyeli diller ile birleştirilmek kaydı ile elde edilebilecek avantajlar vurgulanmış, örnek çeşitliliği ile açıklamalar arttırılarak okuyanların deneyerek, değiştirip geliştirerek konuları ve kullanımı daha rahat anlamalarına olanak sağlanmıştır.
Programlama mantığının geliştirilmesine yardımcı olabilmek amacıyla ekler bölümünde verilen örnekler akış diyagramları ile desteklenerek hangi değişkenlerin hangi yazmaçlar ile kontrol edilecekleri de gösterilmiştir.
Kitapta yer alan örnek programlar ve devre şemaları s://github.com/80x86adtcebi veya s://www.seckin.com.tr adreslerinde paylaşılarak olabilecek eklemelere/katkılara imkân sağlanarak bilginin canlı tutulması amaçlanmıştır.
Bu kapsamı ile kitabımız 80x86 Assembly (gerçek kipte) programlama dışında, Bilgisayar Mühendisliği eğitimi içerisinde yer alan Mikro İşlemciler, Programlama, Derleyici Tasarımı hatta İşletim Sistemleri derslerini bile belirli noktalarda destekleyecek Türkçe kaynak niteliğindedir.
Kitabın Konu Başlıkları
.
80x86 Mikroişlemciler, Komut Kümesi, Sözde Komutlar
.
EXE ve COM Tipindeki Programlar
.
Yordam ve Makro Kullanımı, Parametre Aktarımı
.
Kesme Mekanizması
.
Yüksek Seviyeli Diller ile Bağlantı
.
8086 Donanım Özellikleri, Temel Çevre Birimleri
.
PPI, UART, PIT, ADC
.
DAC, PIC, DMA, Bellek Arayüzlerine ait Devre Şemaları
.
Çalışma Ortamının Hazırlanması, DEBUG Komutları
.
Akış Diyagramları ve Örnekler Kodlar
Yorumlar
Kitabın İçindekileri
Teşekkür 
5
Önsöz 
7
Ş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.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