Kitob mundarijasi
Muqaddima 7
Kitob tuzilishi 9
Kitobdagi shartli belgilar 9
Aloqalar 9
I bob. Dastlabki tushunchalar
1.1. Assembler nima uchun kerak? 11
1.2. NASM nima? 12
1.3. Operatsion tizim nima? 13
1.3.1. Linux tizimi 14
1.3.2. Windows tizimi 16
1.3.3. Mac OS X tizimi 16
II bob. Tarixiy ma’lumotlar
2.1. Birinchi hisob mashinalari 17
2.2. Charls Bebbij tajribalari 17
2.3. Birinchi avlod EHMlari: elektron lampalar va elektr o’zgartiruvchi
devorchalar 18
2.4. Ikkinchi avlod EHMlari: tranzistorlar va to’plamli qayta ishlash tizimlari 18
2.5. Uchinchi avlod EHMlari: ko’p vazifalik 19
2.6. To’rtinchi avlod EHMlari: shaxsiy kompyuterlar 20
III bob. Sanoq tizimlari
3.1. Ikkilik sanoq tizimi 21
3.2. Sakkizlik sanoq tizimi 22
3.3. O’nlik sanoq tizimi 22
3.4. O’n oltilik sanoq tizimi 22
3.5. Bir sanoq tizimidan ikkinchisiga o’tish usullari 23
3.5.1. O’nlik sanoq tizimiga o’tish 24
3.5.2. Ikkilik sanoq tizimiga o’tish 24
3.5.3. Sakkizlik sanoq tizimiga o’tish 25
3.5.4. O’n oltilik sanoq tizimiga o’tish 26
3.6. Har xil sanoq tizimlarida kasr sonlar 26
IV bob. Kompyuter tuzilishi
4.1. Markaziy protsessor 28
4.2. Xotira 29
4.3. O’quv/yozuv moslamalari 32
4.4. Axborot tashish kanallari 34
4.5. Intel protsessor turkumlari 36
4.6. Markaziy protsessor registrlari 37
4.6.1. 16 bitli registrlar 37
4.6.2. 32 bitli registrlar 38
4.7. Sonli qo’shma protsessor registrlari 40
4.8. Xotirani manzillash usullari 40
4.8.1. Haqiqiy usul 41
4.8.2. 16 bitli himoyalangan usul 42
4.8.3. 32 bitli himoyalangan usul 43
4.9. Markaziy protsessorda uzilishlar tushunchasi 43
V bob. Assembler tilida dasturlash
5.1. Mashina tili 45
5.2. Assembler tili 45
5.3. O’zgaruvchilarni e’lon qilish 46
5.4. O’zgarmaslar, ifodalar va direktivalar 49
5.5. Asosiy amallar va ular qabul qiladigan qiymatlar 54
5.6. Assemblerda o’quv/yozuv 58
5.7. Birinchi dastur 61
5.8. Dasturni kompilyator orqali yig’ish 63
5.9. Obyekt fayllarni ulash 64
5.10. Buyruqlar qatorida NASM buyrug’i kalitlari 65
VI bob. Assembler tili asoslari
6.1. Ishorali va ishorasiz butun sonlar 69
6.2. Butun sonlar ustida arifmetik amallar 71
6.2.1. Qo’shish va ayirish 71
6.2.2. Ko’paytirish va bo’lish 74
6.3. Qiymatlar o’lchamini kattalashtirish va kichiklashtirish 77
6.4. Boshqaruv buyruqlari 79
6.4.1. Taqqoslash buyrug’i 80
6.4.2. Tarmoqlash buyruqlari 80
6.4.3. LOOP buyrug’i 85
6.5. Amaliy dastur: Tub sonlarni topish 86
VII bob. Mantiqiy amallar va bitlarni siljitish buyruqlari
7.1. Bitlarni siljitish buyruqlari 89
7.1.1. Mantiqiy siljitish 90
7.1.2. Arifmetik siljitish 90
7.1.3. Halqasimon siljitish 91
7.2. Dasturlashda siljitish buyruqlaridan foydalanish 93
7.3. Bitlar ustida mantiqiy amallar 94
7.3.1. AND amali 94
7.3.2. OR amali 95
7.3.3. XOR amali 96
7.3.4. NOT amali 96
7.3.5. TEST buyrug’i 97
7.4. Mavzular yuzasidan mashqlar 97
VIII bob. Qismli dasturlash
8.1. Vositali manzillash 101
8.2. Qismli dastur tuzish 102
8.3. Stack 107
8.4. CALL va RET buyruqlari 109
8.5. Mahalliy nishonlar 110
8.6. Stack orqali qiymatlar jo’natish 112
8.7. ENTER va LEAVE buyruqlari 117
8.8. LEA buyrug’i 119
8.9. Assembler va C dasturlarini bog’lash 124
8.10. Qism dasturlarida qayta kirish va o’z-o’zini chaqirish tushunchalari 128
8.11. Chuqur o’rganuvchilar uchun amaliy dastur 132
IX bob. Makro vositalar
9.1. Bir satrli makrolar 136
9.1.1. %DEFINE makro direktivasi: Umumiy uslub 136
9.1.2. %XDEFINE makro direktivasi: Kengaytirilgan uslub 139
9.1.3. %UNDEF makro direktivasi: Aniqlangan makrolarni bekor qilish 140
9.1.4. %ASSIGN direktivasi: Makro o’zgaruvchilar 140
9.1.5. %DEFSTR, %STRLEN va %SUBSTR makro direktivalari: Qatorli o’zgarmaslar bilan ishlash 140
9.1.6. %INCLUDE makro direktivasi: Boshlang’ich fayllarni dasturga
qo’shish 141
9.2. Makro takrorlanish 141
9.3. Ko’p satrli makrolar 143
9.3.1. Qiymat berish va qabul qilish usullari 145
9.3.2. %ROTATE makro direktivasi 147
9.3.3. Makrolarda mahalliy nishonlar 149
9.4. Dasturni shartli yig’ish 151
9.4.1. Makroni aniqlanganligini tekshirish 153
9.4.2. Matn tengligini tekshirish 154
9.4.3. Qiymat turlarini tekshirish 155
9.5. Mezoniy makrolar 156
9.6. Amaliy dastur: Lotindan kirillga 159
X bob. Assemblerda qoliplar va jadvallar
10.1. Qoliplarni e’lon qilish 164
10.2. Qolip kataklariga murojaat etish 165
10.3. Jadvallar 167
10.4. Jadvallarni e’lon qilish 170
10.5. Jadval kataklariga murojaat qilish 171
10.6. Qoliplapga mo’ljallangan buyruqlar 173
10.7. Amaliy dasturlar: Saralash 179
XI bob. O’nli kasrlar
11.1. Sonli qo’shma protsessor 183
11.2. O’nli kasr sonlar andozasi 183
11.3. Sonli qo’shma protsessor registrlari 185
11.4. Sonli qo’shma protsessor asosiy buyruqlari 187
11.4.1. Qiymatni yuklash va o’qish buyruqlari 187
11.4.2. Qo’shish va ayirish buyruqlari 189
11.4.3. Ko’paytirish va bo’lish buyruqlari 190
11.4.4. Taqqoslash buyruqlari 192
11.5. Qo’shimcha buyruqlar 193
11.6. Amaliy dastur: Kvadrat ildiz 195
XII bob. Fayllar bilan ishlash
12.1. Operatsion tizimda fayllar tushunchasi 198
12.2. Tizim chaqiriqlari 202
12.3. Fayllar bilan assemblerda ishlash 204
12.3.1. Xususiy holat: Linux 205
12.3.2. Xususiy holat: Windows 212
12.4. Amaliy dastur: Lotindan kirillga 217
Ilova A. Buyruqlar qatorida ishlash
A.1. Buyruqlar umumiy ro’yxati 222
A.2. Linux tizim buyruqlari 223
A.2. Windows tizim buyruqlari 225
Ilova B. Nasmni o’rnatish
B.1. NASMni Linuxda o’rnatish 228
B.1.1. Debian yoki Ubuntu foydalanuvchilari uchun 228
B.1.2. Fedora, SUSE, Mandrive, Cent OS, Doppix yoki Red Hat foydalanuvchilari uchun 229
B.1.3. Umumiy usul 229
B.2. NASMni Windowsda o’rnatish 230
B.2.1. Birinchi usul 230
B.2.2. Ikkinchi usul 231
B.2.3. Umumiy usul 231
Ilova C. C kompilyatorlari va obyekt fayllarni ular orqali ulash
C.1 Linuxdagi mavjud C kompilyatorlari 232
C.1.1. GCC kompilyatori 232
C.2. Windowsdagi mavjud C kompilyatorlari 232
C.2.1. GCC kompilyatori 232
C.2.2. Microsoft Visual Studio 233
C.2.3. LCC-WIN32 kompilyatori 234
Ilova D. nasm-io.inc fayli 235
Ilova E. Buyruqlar ro’yxati 238
Ilova F. Atamalar 266
Ilova G. Foydalanilgan adabiyotlar 270
