80x86 Assembly Dili (Örnekler ile 125 Komut, 42 Sözde Komut ve 14 Debug Komutu) Yrd. Doç. Dr. Ahmet Tevfik İnan  - Kitap

80x86 Assembly Dili

(Örnekler ile 125 Komut, 42 Sözde Komut ve 14 Debug Komutu)

2. Baskı, 
Ağustos 2013
Kitabın Detayları
Dili:
Türkçe
Ebat:
18x23
Sayfa:
327
Barkod:
9789750224966
Kapak Türü:
Karton Kapaklı
Baskısı tükenmiştir.
Kitabın Açıklaması
Bu kitap, Bilgisayar Mühendisliği bölümlerinde okutulan Assembly Dili dersi kapsamında, 80x86 işlemci ailesinin gerçek kipte programlanması konusunda duyulan Türkçe ders kitabı eksikliğini bir ölçüde giderebilmek amacıyla hazırlanmıştır. Amacımız karmaşık algoritmaların Assembly dili ile kodlanmanın ötesinde, problemleri mümkün olduğunca basit tutarak okuyucunun programlamada dikkat etmesi gereken noktalara odaklanmasını sağlamaktır.
2. baskısını yapan kitap, gözden geçirilmiş, bilgiler güncellenmiş, gerçek kipte kullanılan 125 komut, 42 sözde komut ile 14 Debug komutunun kullanım özellikleri örnekler ile açıklanmış, kullanılan 111 tablo, 27 şekil, 189 dipnot, 110 İngilizce kısalma, 131 İngilizce-Türkçe terim ile anlatımı güçlendirilmiş ve ayrıntılı olarak açıklanan 42 örnek çözüm ile içerik genişletilmiştir.
Kitabın Konu Başlıkları
.
Assembly Dili Hakkındaki Doğru ve Yanlışlar
.
PC Mimarisi ve 80x86 Ailesi İşlemciler
.
Örnekler ile Desteklenmiş Komut Kümesi
.
Adresleme Kipleri
.
Örnekler ile Desteklenmiş 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ı
.
Çalışma Ortamının Hazırlanması ve DEBUG Komutları
Kitabın İçindekileri
Teşekkür 
5
Önsöz 
7
2. Baskının Önsözü 
9
Tablo Listesi 
25
Kısaltmalar Dizini 
29
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.SAYI SİSTEMLERİ 
37
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.4IEEE 1394 
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.1Ana İşlemciler 
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.5.4Ek (Extra) Kesim 
73
4.6Yazmaç (Register) 
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.7Bayraklar (Flags) 
77
4.7.1CF: Carry Flag 
77
4.7.2PF: Parity Flag 
77
4.7.3AF: Auxilary Carry Flag 
77
4.7.4ZF: Zero Flag 
77
4.7.5SF: Sign Flag 
77
4.7.6TF: Trap Flag 
78
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.10Belleğe Erişim 
83
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
MOV 
91
MOVSX 
92
MOVZX 
92
LEA 
93
LDS 
93
LES 
94
XCHG 
94
XLAT / XLATB 
95
5.2Aritmetik Komutlar 
95
ADD 
95
ADC 
96
XADD 
96
SUB 
96
SBB 
97
INC 
97
DEC 
97
NEG 
98
CMP 
98
CMPXCHG 
99
MUL 
99
IMUL 
100
DIV 
100
IDIV 
101
5.3Dallanma Komutları 
101
5.3.1Koşullu Dallanma Komutları 
101
5.3.1.1Basit Koşullu Dallanma Komutları 
102
JZ / JE 
102
JNZ / JNE 
102
JS 
102
JNS 
103
JO 
103
JNO 
103
JP / JPE 
103
JNP / JPO 
103
5.3.1.2İşaretsiz Sayı İşlemlerine Ait Koşullu Dallanma Komutları 
103
JB / JNAE / JC 
104
JA / JNBE 
104
JAE / JNB / JNC 
104
JBE / JNA 
104
5.3.1.3İşaretli Sayı İşlemlerine Ait Koşullu Dallanma Komutları 
105
JL / JNGE 
105
JNL / JGE 
105
JLE / JNG 
105
JG / JNLE 
105
5.3.2Koşulsuz Dallanma Komutları 
106
JMP 
106
JMP FAR PTR 
107
5.3.3Çağırma Komutları 
108
CALL 
109
CALL FAR PTR 
109
INT 
110
INTO 
110
5.3.4Dönüş Komutları 
110
RET 
111
RETF 
111
IRET 
112
5.4Döngü Komutları 
112
LOOP 
112
LOOPZ / LOOPE 
113
LOOPNZ / LOOPNE 
113
JCXZ 
113
5.5Bayraklar ile İlgili Komutlar 
119
CLC 
119
CMC 
119
STC 
120
CLD 
120
STD 
120
STI 
120
CLI 
121
LAHF 
121
SAHF 
121
5.6Mantıksal Komutlar 
121
NOT 
122
OR 
122
AND 
122
XOR 
123
TEST 
123
SETxxx 
124
BT 
124
BTC 
125
BTR 
125
BTS 
126
5.7Öteleme ve Döndürme Komutları 
126
SHL 
127
SHLD 
127
SAL 
128
SHR 
128
SHRD 
128
SAR 
129
RCL 
129
RCR 
130
ROL 
130
ROR 
131
5.8Dizgi (String) Komutları 
131
MOVSB 
132
MOVSW 
132
MOVSD 
133
CMPSB 
133
CMPSW 
133
CMPSD 
134
SCASB 
134
SCASW 
135
SCASD 
135
LODSB 
135
LODSW 
136
LODSD 
136
STOSB 
136
STOSW 
137
STOSD 
137
CBW 
137
CWD 
138
CWDE 
138
CDQ 
138
BSWAP 
138
5.9Ön Ekler 
139
REP 
139
REPE / REPZ 
139
REPNE / REPNZ 
140
LOCK 
140
5.10Yığın Komutları 
140
POP 
141
POPA 
141
POPAD 
142
POPF 
142
POPFD 
142
PUSH 
143
PUSHA 
143
PUSHAD 
144
PUSHF 
144
PUSHFD 
144
5.11Giriş/Çıkış Komutları 
145
IN 
145
INSB 
145
INSW 
146
INSD 
146
OUT 
146
OUTSB 
147
OUTSW 
147
OUTSD 
147
5.12Durdurma ve Bekletme Komutları 
147
HLT 
148
NOP 
148
WAIT 
148
5.13BCD Düzenleme İçin Kullanılan Komutlar 
148
AAA 
149
AAD 
150
AAM 
150
AAS 
151
DAA 
151
DAS 
152
5.14Diğer Komutlar 
152
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
PAGE 
163
TITLE 
163
8.1.2Kesim Düzenlemede Kullanılan Sözde Komutlar 
164
SEGMENT / ENDS 
164
ORG (Origine) 
165
ASSUME 
165
8.1.3Veri Tanımlamada Kullanılan Sözde Komutlar 
166
DB (Define Byte) 
166
DW (Define Word) 
166
DD (Define Doubleword) 
167
DQ (Define Quadword) 
167
DT (Define Ten Bytes) 
167
EQU (Equal) 
167
DUP (Duplication Factor) 
168
REAL4, REAL8, REAL10 
168
TYPEDEF 
168
PTR (Pointer) 
169
LABEL 
169
8.1.4Yordam Düzenlemede Kullanılan Sözde Komutlar 
169
PROC (Procedure) / ENDP (End of procedure) 
170
EXTRN 
170
PUBLIC 
171
8.1.5Makro Düzenlemede Kullanılan Sözde Komutlar 
171
MACRO (Macro) / ENDM (End of macro) 
171
INCLUDE 
171
LOCAL 
172
EXITM 
172
8.1.6Diğer Sözde Komutlar 
172
LENGTH 
172
TYPE 
173
SIZE 
173
OFFSET 
173
SEG (Segment ) 
173
REPT (Repetition) 
174
IRP (Indefinite Repeat) 
174
IRPC (Indefinite Repeat Character) 
174
END 
174
8.2Koşullu Sözde Komutlar 
175
IF 
175
IFE 
175
IF1 
175
IF2 
175
IFDEF 
175
IFNDEF 
176
IFB 
176
IFNB 
176
IFIDN 
176
IFDIF 
176
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.1Kesme Çeşitleri 
264
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.EKLER 
287
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.2.1Windows 9x 
289
16.1.2.2Windows XP 
290
16.1.2.3Windows 7 
290
16.1.3Linux İçin Çalışma Ortamını Oluşturma 
291
16.1.4Emülatör Kullanımı 
292
16.2Debug Komutları 
292
16.2.1R (Register-Yazmaç) 
294
16.2.2D (Dump / Display – Döküm / Görüntüleme) 
295
16.2.3A (Assembly) 
296
16.2.4T (Trace / İzleme) 
296
16.2.5U (Unassembly) 
297
16.2.6E (Edit / Düzenle) 
298
16.2.7F (Fill / Doldurma) 
298
16.2.8C (Compare / Karşılaştırma) 
299
16.2.9G (Go / Git) 
300
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.6Ek Örnek Kodlar 
311
16.6.1Sıralı Dizide Arama 
311
16.6.2Dizi İşlemleri 
313
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
Kaynaklar 
321
Türkçe İngilizce Terimler Dizini 
323