Bilgisayar - Yazılım - SEMBOLİK MAKİNA DİLİ - Assembly Language, Assembler

1 NEDEN SEMBOLİK MAKİNA DİLİ ÖĞRENİLMELİDİR?
1.1 MİKROİŞLEMCİLERİN ÇALIŞMA BİÇİMLERİ
1.2 TİPİK BİR RAM'İN YAPISI
1.3 CPU İLE RAM ARASINDAKİ BAĞLANTI
1.4 MAKİNA KOMUTU KAVRAMI
1.5 MAKİNA KOMUTLARININ GENEL BİÇİMİ
1.6 80X86 MİKROİŞLEMCİSİNİN ÇALIŞMA MODLARI
1.7 8086 İŞLEMCİSİNİN YAZMAÇ YAPISI
1.8 80386 VE YUKARI MODELLERİN REGİSTER YAPISI
2 MAKİNE KOMUTLARINDAKİ BELLEK OPERANDLARI
2.1 16 BİT ÇALIŞMADA BELLEK OPERANDININ OLUŞTURULMASI
2.2 16 BİT ADRESLEME İŞLEMİ
2.3 32 BİT ADRESLEME İŞLEMİ
2.4 32 BİT BELLEK OPERANDININ OLUŞTURULMASI
2.5 16 BİT ÇALIŞMADA FLAG REGİSTER'I
2.6 TURBO DEBUGGER
2.7 CS VE IP REGİSTER'LARININ ÖNEMİ
2.8 MAKİNE KOMUTLARININ İNCELENMESİ
2.8.1 MOV Komutu
2.8.2 ADD Komutu
2.8.3 ADC Komutu
2.9 KOMUTLARIN OPERAND UYUMU
2.9.1 SUB Komutu
2.9.2 CMP Komutu
2.9.3 SBB Komutu (Subtract with Barrow)
2.9.4 MUL Komutu
2.9.5 DIV Komutu
2.10 BİT DÜZEYİNDE İŞLEM YAPAN KOMUTLAR
2.10.1 AND Komutu
2.10.2 TEST Komutu
2.10.3 OR Komutu
2.10.4 XOR Komutu
2.10.5 SHL ve SHR Komutları
2.10.6 SAR ve SAL Komutları
2.10.7 Döndürme Komutları
2.10.8 Öteleme Ve Döndürme Komutlarının Biçimleri
2.10.9 Stack Kullanımı
2.10.10 POP Komutu
2.10.11 Stack Kullanımının Amacı
2.10.12 PUSHA ve POPA Komutları
2.10.13 INC ve DEC Komutları
2.10.14 XCHG Komutu
2.10.15 CBW(convert byte to word) ve CWD(convert word to double word) Komutları
2.11 DALLANMA KOMUTLARI
2.11.1 Yer Değiştirme(displacement) Kavramı
2.11.2 JMP 1000
2.11.3 Koşulsuz JMP Komutu
2.11.4 JMP far [SI]
2.11.5 Koşullu Dallanma Komutları
2.12 EŞİTLİK KARŞILAŞTIRMASI
2.12.1 Eşitsizlik Karşılaştırması
2.12.2 İşaretsiz Sayıların Karşılaştırılması
2.12.3 İşaretli Sayıların Karşılaştırılması
2.12.4 Diğer Koşullu JMP Komutları
2.13 ALT PROGRAMLARIN ÇAĞIRILMASI
2.14 ALT PROGRAMDAN GERİYE DÖNÜŞ
2.15 BAYRAKLAR ÜZERİNDE ÖZEL İŞLEM YAPAN KOMUTLAR
2.16 SEMBOLİK MAKİNE DİLİ NEDİR?
2.17 EXE DOSYANIN YAPISI VE YÜKLENMESİ
2.18 TİPİK BİR SEMBOLİK MAKİNE DİLİ PROGRAMI
2.19 CODE, DATA VE STACK BÖLÜMLERİNİN BELİRLENMESİ
2.20 SEMBOLLER
2.21 DATA SEMBOLLERİNİN TANIMLANMASI
2.22 PROGRAM YÜKLENDİĞİNDE REGİSTER'LARIN DURUMLARI
2.23 PROGRAMIN SONLANDIRILMASI
2.24 CODE SEMBOLLERİ
2.25 PROC BİLDİRİMİ
2.26 GERÇEK VE SAHTE KODLAR(REAL/PSEUDO)
2.27 SABİTLER
2.28 SABİTLERİN ÇEŞİTLİ TABANLARDA GÖSTERİMLERİ
2.29 ALFABETİK SABİTLER(STRİNG'LER)
2.30 GERÇEK SAYI SABİTLERİ
2.31 BCD TÜRDEN SABİTLER
2.32 YER SAYACI(LOCATİON COUNTER)
2.33 ASM LİSTİNG DOSYASI
2.34 DİZİLER ÜZERİNDE İŞLEMLER
2.35 LEA(LOAD EFFECTİVE ADDRESS) KOMUTU
2.36 SEMBOLİK MAKİNE DİLİNDE FOR DÖNGÜLERİNİN OLUŞTURULMASI
3 ALT PROGRAMLARLA ÇALIŞMA
3.1 FONKSİYONLARIN GERİ DÖNÜŞ DEĞERLERİNİN OLUŞTURULMASI
3.2 FONKSİYON ÇAĞIRMALARINA İLİŞKİN ÇEŞİTLİ ÖRNEKLER
3.3 SEMBOLİK MAKİNE DİLİNDE YAZILAN FONKSİYONLARI C'DEN ÇAĞIRILMASI
3.4 BİRLEŞTİRME SIRASINDA ÇIKACAK PROBLEMLER
3.5 İÇ İÇE DÖNGÜLER
3.6 SEMBOLİK MAKİNE DİLİNDE CDECL ÇAĞRIMINA UYGUN FONKSİYON YAZIMINA ÖRNEKLER
3.7 C DERLEYİCİLERİN SEMBOLİK MAKİNE DİLİ ÇIKTILARI
3.8 OFFSET VE SEG OPERATÖRLERİ
3.9 EXE DOSYA FORMATI
3.10 PSP(PROGRAM SEGMENT PREFİX)
3.11 YÜKLEME SONRASINDA REGİSTER'LARIN İLK KONUMLARI
3.12 DERLEYİCİLERİN BAŞLANGIÇ KODLARI(STARTUP MODULE)
3.13 C'DE CHAR PARAMETRELERİN VE GERİ DÖNÜŞ DEĞERLERİNİN SEYREK KULLANILMASI
3.14 KESMELER(İNTERRUPTS)
3.15 INT MAKİNE KOMUTU VE KESMELERE DALLANILMASI
3.16 IRET MAKİNE KOMUTU
3.17 KESMENİN HOOK EDİLMESİ
3.18 KESME KODUNUN YAZILMASI
3.19 SEMBOLİK MAKİNE DİLİNDE DOLAYLI JMP VE CALL İŞLEMLERİ
3.20 BELLEK ERİŞİMLERİNDE SEGMENT YÜKLEME DURUMLARI
3.21 KESMELERİN FONKSİYONLARI VE ALT FONKSİYONLARI
3.22 KESMENİN PARAMETRELERİ VE GERİ DÖNÜŞ DEĞERLERİ
3.23 DOS VE BIOS KESMELERİ
3.24 10H VİDEO KESMESİ
3.24.1 21h Kesmesi
3.24.2 INT 21h F:2
3.24.3 INT 21h F:7 ve F:8
3.24.4 INT 21h F:0Ah (buffered keyboard input)
3.24.5 INT 21h F:25h(set interrupt vector)
3.24.6 INT 21h F:35h(get interrupt vector)
3.24.7 INT 21h F:39h(create sub directory)
3.24.8 INT 21h F:9h
4 MAKRO KULLANIMI
4.1 INCLUDE İŞLEMİ
4.2 LOCAL KOMUTU
5 MATEMATİK İŞLEMCİNİN KULLANILMASI
5.1 MATEMATİK İŞLEMCİ NEDİR?
5.2 NORMAL İŞLEMCİ İLE MATEMATİK İŞLEMCİNİN BİRLİKTE ÇALIŞMASI
5.3 MATEMATİK İŞLEMCİNİN REGİSTER YAPISI
5.4 NOKTALI SAYILARIN BELLEKTE TUTULMA BİÇİMLERİ
5.5 NOKTALI SAYI FORMATLARI
5.6 YUVARLAMA HATASI(ROUNDİNG ERROR)
5.7 FLOAT(SHORT REAL) FORMAT
5.8 BIAS DEĞERİNİN ANLAMI
5.9 NOKTALI SAYI FORMATINDA ÖZEL SAYILARI
5.10 DOUBLE(LONG REAL) FORMATI 94
5.11 LONG DOUBLE(EXTENDED REAL) FORMATI
5.12 MATEMATİK İŞLEMCİDE NOKTALI SAYILARLA İŞLEMLER
5.13 FLD KOMUTU
5.14 FST VE FSTP KOMUTLARI
5.15 TAM SAYILARA İLİŞKİN PUSH VE POP KOMUTLARI
5.16 FADD, FADDP KOMUTLARI
5.17 C'DE GERÇEK SAYI TÜRLERİNE GERİ DÖNEN FONKSİYONLARI
5.18 FMUL VE FMULP KOMUTLARI
5.19 FDIV VE FDIVP KOMUTLARI
5.20 FSIN, FCOS, FTAN, FSQRT KOMUTLARI
5.21 BORLAND DERLEYİCİLERİN MATEMATİK İŞLEMCİ SEÇENEKLERİ
5.22 GERÇEK SAYI EMÜLASYONU
5.23 SEMBOLİK MAKİNE DİLİNDE GERÇEK SAYILARI TUTAN SEMBOLLERİN TANIMLANMASI:
5.24 PİPELİNE İŞLEMİ
5.25 NORMAL İŞLEMCİYLE MATEMATİK İŞLEMCİNİN SENKRONİZASYONU
5.26 WAİT KOMUTUNUN ÇALIŞMA BİÇİMİ:
5.27 GERÇEK SAYILARIN KARŞILAŞTIRILMASI :
5.28 STATUS REGİSTER(STATUS WORD)
5.29 FSTSW WORD PTR MEM
5.30 FSTSW AX
5.31 NORMAL İŞLEMCİLERDE BAYRAK REGİSTER'I ÜZERİNDE İŞLEMLER
5.32 C0, C2 VE C3 STATUS REGİSTER BİT'LERİNİN KARŞILAŞTIRMADAKİ ANLAMLARI
5.33 PROGRAMLAMA DİLLERİNDEKİ YEREL DEĞİŞKENLERİN KULLANILMASI
5.34 ÇEŞİTLİ ÖRNEKLER
6 HİZALAMA(ALİGNMENT)
6.1 WORD HİZALAMASI(WORD ALİGNMENT)
6.2 DWORD HİZALAMASI(DWORD ALİGNMENT)
6.3 HİZALAMA PROBLEMLERİ
6.4 C++'TA BİR SINIFIN ÜYE FONKSİYONLARININ SEMBOLİK MAKİNE DİLİNDE ÇAĞIRILMASI
6.5 C'DE DEĞİŞKEN SAYIDA PARAMETRE ALAN FONKSİYONLARIN SEMBOLİK MAKİNE DİLİNDE YAZIMI
6.6 C'DE DEĞİŞKEN SAYIDA PARAMETRE ALAN FONKSİYONLARIN YAZIMI:
6.7 C'DE DEĞİŞKEN SAYIDA PARAMETRE ALAN FONKSİYONLARA ÖRNEKLER
7 UZAK GÖSTERİCİLERİN YÜKLENMESİ
7.1 C DERLEYİCİLERİ UZAK GÖSTERİCİNİ İŞLEMLERİNİ ELE ALIŞ BİÇİMİ
7.2 CPU'NUN DURUMUNUN SAKLANMASI
7.3 CPU KONUMUNUN SAKLANIP GERİ YAZILMASI SIRASINDA DİKKAT EDİLECEK DURUMLAR
7.4 C'DE YEREL OLMAYAN DALLANMALAR
7.5 SETJMP FONKSİYONU
7.6 LONGJMP FONKSİYONU
7.7 NEDEN LONGJMP KULLANILIR?
7.8 SETJMP VE LONGJMP FONKSİYONLARININ SEMBOLİK MAKİNE DİLİNDE YAZIMI
7.9 DOS'TA UZAK MODELLERDE İŞLEMLER
7.10 UZAK MODELLERDE DATA GÖSTERİCİLERİYLE İŞLEMLER
7.11 WİN32/UNIX FLAT MODEL SİSTEMİ
8 AYRINTILI SEGMENT TANIMLARI
8.1 SEGMENT TANIMLAMA İŞLEMİNİN GENEL BİÇİMİ
8.2 SEGMENT'LERİ EXE KOD İÇERİSİNDEKİ DİZİLİM SIRASI
8.2.1 Segment Tanımlamasında Kullanılan Sınıf İsminin Segment Sıralamasına Etkisi
8.2.2 C Derleyicileri ve Segment'ler
8.2.3 Tiny model
8.2.4 Small model
8.2.5 Medium model
8.2.6 Compact model
8.2.7 Large model
8.2.8 Huge model
8.2.9 Segment Kavramının Önemi
8.3 AYRINTILI SEGMENT TANIMLAMALARI VE BELLEK MODELİ
8.4 BİRDEN FAZLA DATA SEGMENT'İ İLE ÇALIŞMAK
8.5 BİRDEN FAZLA KOD SEGMENT'İ İLE ÇALIŞMAK
8.6 WİN32/UNIX FLAT MODELLERDE SEGMENT İŞLEMLERİ
8.7 GRUP KULLANIMI
8.8 ASSUME BİLDİRİMİ
9 OMF FORMATI
9.1 OMF FORMATINI GENEL YAPISI
9.2 DATA VE KOD SEMBOLLERİNİN OBJ DOSYAYA YAZILMASI
9.3 MAKİNE KODLARININ VE STATİK DATALARIN OBJ MODÜLE YAZILMASI
9.4 BASİTLEŞTİRİLMİŞ SEGMENT KULLANIMINDA SEGMENT İŞLEMLERİ
9.5 RELOCATABLE ADRESLER
9.6 RELOCATABLE ADRESLER VE RELOCATİON TABLOSU
9.7 COM DOSYALAR
9.8 ORG KOMUTU
9.9 COM PROGRAMLARIN YAZIMI
9.10 TEK SEGMENT'Lİ COM PROGRAMLARININ YAZILMASI
9.11 ÇOK SEGMENT'Lİ COM PROGRAMININ YAZILMASI
9.12 TİNY MODEL PROGRAMLAR VE COM DOSYALARI
9.13 COM PROGRAMLARININ ÖNEMİ
9.14 COM PROGRAMININ KULLANILMASINA TİPİK BİR ÖRNEK: BOOT PROGRAMININ YAZILMASI
10 İŞLETİM SİSTEMİ YAZIMINDA İZLENECEK YÖNTEM
10.1 İŞLETİM SİSTEMİNİN SİSTEM FONKSİYONLARININ ÇAĞIRILMASI İÇİN KULLANILAN YÖNTEMLER
10.2 MODÜLLERLE ÇALIŞMA
10.3 COMMUNAL TANIMLAMA
10.4 STRİNG KOMUTLARI
10.4.1 Komutlarda Önek(prefix)
10.4.2 Segment Önekleri
10.4.3 REP Öneki
10.4.4 LODS Komutu
10.4.5 LODSB Komutu
10.4.6 LODSW Komutu
10.4.7 STOS Komutu
10.4.8 REP Önekinin İşlevi
10.4.9 STOSB
10.4.10 STOSW
10.5 SMALL MODEL MEMSET ÖRNEĞİ:
10.5.1 MOVS Komutu
10.5.2 MOVSB
10.5.3 MOVSW
11 HEAP ALGORİTMASI
11.1 BOŞ BAĞLI LİSTE ALGORİTMASI
11.2 TINUX SİSTEMİNDE HEAP ORGANİZASYONU
11.3 KERNEL HEAP FONKSİYONLARININ TASARIMI İÇİN YAPILACAK İŞLEMLER
11.4 SCAS KOMUTU:
11.5 ÖRNEK THREAD KÜTÜPHANESİ:
11.6 THREAD KÜTÜPHANESİNİN KULLANIMI:
11.6.1 InitThreadLib() fonksiyonu:
11.6.2 CreateThread() Fonksiyonu:
11.6.3 ExitThread() Fonksiyonu:
11.6.4 GetThreadExitCode() Fonksiyonu:
11.6.5 CloseHandle() Fonksiyonu:
11.6.6 Thread Kütüphanesinin Kullanılmasında Dikkat Edilmesi Gereken Noktalar:
11.7 THREAD KÜTÜPHANESİNİN İÇSEL TASARIMI:
11.8 C'DE INLİNE SEMBOLİK MAKİNE DİLİ
11.9 DOS SİSTEMİNDE HEAP YÖNETİMİ