pic assemler kitabi

**poyraz**

Üye
Katılım
15 Kas 2007
Mesajlar
276
Puanları
1
Yaş
40
GİrİŞ 1
mİkroİŞlemcİ nedİr? 1
mİkrodenetleyİcİ nedİr? 1
neden mikroişlemci değil de mikrodenetleyici kullanılıyor? 2
mİkrodenetleyİcİler hakkinda genel bİlgİler 2
neden pic? 2
neden pic16f84? 3
pic programlamak İÇİn nelere İhtİyaciniz var? 3
ibm uyumlu bilgisayar 4
metin editörü 4
assembler programı 4
pic programlayıcı yazılımı 5
programlanmış pic'i deneme kartı 5
pic donanim Özellİklerİ 6
pic ÇeŞİtlerİ 6
pic'lerin diŞ gÖrÜnÜŞÜ 6
pic bellek ÇeŞİtlerİ 7
pic16f84 8
pic 16f84’Ün pin gÖrÜnÜŞÜ 8
besleme gerİlİmİ 9
clock uÇlari ve clock osİlatÖrÜ ÇeŞİtlerİ 9
reset uÇlari ve reset devresİ 11
i/o portlari 12
pic16f84'Ün belleĞİ 13
program belleği 13
ram bellek 14
w register 14
pic assembly 15
assembler nedİr? 15
pic assembly dİlİ nedİr? 15
pic assembly dİlİ yazim kurallari 15
noktalı virgül ( 16
girintiler ve program bölümleri 16
başlık 17
etiketler 17
atama deyimi (equ) 18
sabitler 18
org deyimi 18
sonlandırma bloğu 18
büyük ve küçük harflerin kullanımı 19
pic assembly komutlarinin yaziliŞ bİÇİmİ 19
byte-yönlendirmeli komutlar 19
bit-yönlendirmeli komutlar 20
sabit İşleyen komutlar 20
kontrol komutları 20
sayi ve karakterlerİn yaziliŞ bİÇİmİ 20
heksadesimal sayılar 20
binary sayılar 21
desimal sayılar 21
ascii karakterler 21
pic assembly komutlari 21
pic programlama 26
İlk programiniz 26
bank değiştirme 26
port'ların giriş veya Çıkış olarak yönlendiriimesi 27
akiŞ dİyagraml sembollerİ 28
akiŞ dİyagraminin Çİzilmesi 28
assembly program komutlarinin yazilmasi 29
atama (equ) komutu kullanarak program yazmak 29
programlarin derlenmesİ (mpasm) 30
programin pic'e yazdirilmasl 31
p16pro'nun başlatılması 32
pic seçme (f3) 32
program dosyasını açma (f1) 32
pic konfigürasyonunu ayarlama (f2) 32
programı pic'e yazdırma (f4) 33
programlanmiŞ pic'İn denenmesİ 33
breadboard Üzerine kurulan devre ile denemek 33
pic deneme kartı ile denemek 34
mpasm'nln ÜrettİĞİ dİĞer dosyalar 35
.lst dosyası 35
.err dosyası 36
include dosyalari 36
include dosyası kullanarak program yazmak 36
konfİgÜrasyon bİtlerİnİn yazilmasi 38
verİ transferİ ve karar İŞlemlerİ 40
w regİsterİn kullanimi (movlw, movwf komutlari) 40
veri transferi 40
sonsuz döngü 41
bİt test ederek karar vermek (btfsc, btfss) 42
dÖngÜ dÜzenlemek 45
sayaÇ kullanarak dÖngÜ kullanmak (decfsz) 45
basit bir zaman gecikme döngüsü yapmak 47
karŞilaŞtirma yaparak dÖngÜ dÜzenlemek (sublw, subwf, incf, decf komutlari) 48
subwf komutu 49
sublw komutu 50
status register 51
status regİster blt'lerİ 51
zaman gecİktİrme ve alt programlar 48
zaman gecİktİrme dÖngÜlerİ 48
dahili komut saykılı 48
tek döngü ile minimum zaman geciktirme 49
tek döngü ile maksimum zaman geciktirme 49
komut saykıl sayısının bulunması 49
n sayısının bulunması 50
Çift döngülü zaman geciktirme 51
n sayısının hesaplanması 51
alt programlar 52
bİt kaydirma ve mantiksal İŞlem komutlari 55
sola kaydirma (rlf) 55
saĞa kaydirma 56
comf ve swapf komutlari 58
mantiksal İŞlem komutlari 59
andlw komutu (İstenilen bir ya da birkaç bit'i "0" yapmak) 59
andwf komutu 60
iorlvv komutu (İstenilen bit'in değerini "1" yapmak) 61
iorwf komutu 61
xorlw komutu (İstenilen bir bit'i terslemek) 61
xorwfkomutu 62
bir byte'lık İki veriyi karşılaştırmak (xorlw, xorwf) 62
bir byte'lık veriyi "0" ile karşılaştırmak (iorlw, iorwf) 62
arİtmetİk İŞlemler 65
arİtmetİk İŞlem komutlari 65
8 - bit toplama 65
16- bİt toplama 66
8 - bit Çikarma 68
16- bitÇikarma 69
Çevrİm tablolari 71
Çevrİm tablosu (lookup table) nedİr? 71
program counter (sayici) 71
retlw komutu 72
step motor kontrolÜ 74
kesmeler (interrupts) 80
kesme (interrupt) nedİr? 80
intcon regİsterİ 81
kesme kaynaklari 82
harici kesmeler 82
tmro sayıcı kesmesi 82
portb lojik seviye (rb4-rb7) değişiklik kesmesi 82
kesme alt programlarinin dÜzenlenmesİ 83
tüm kesme İşlemlerini aktif yapma bayrağı (gie) 83
kesme esnasında w ve status registeri saklamak 83
kesme alt programları nereye yazılmalı? 84
kesme gecikmesi 85
tek pals Üreticinin kullanımı 88
donanim sayicilari 90
donanim sayicisi/zamanlayicisi nedİr? 90
tmr0 sayici/zamanlayicisi(timer/counter) 90
option regİster 90
tmr0 sayicinin Özellİklerl 91
frekans bölme sayısının (prescaler) kullanılması 92
tmr0 ve wdt oranı 92
frekans bölme sayısının atanması 94
tmr0'dan wdt'ye prescaler değeri atamak: 94
wdt'den tmr0'a prescaler değeri atamak: 94
tmro sayıcısının kullanılması 94
tmr0 sayıcı kesmesine ait Örnekler 98
tmr0 sayıcısını İstenilen bir sayıdan başlatmak 100
wdt zamanlayicisi (watchdog timer) 101
zaman aşımı süresi 102
sleep komutunun kullanılması 103
d/a ve a/d Çevİrme İŞlemlerİ 105
dİjİtal/analog Çevİrİcİ 105
ladder(merdiven) direnç devresi kullanmak 105
8 bit d/a konvertör entegresi kullanmak 106
pwm (pulse width modulation) metodu kullanmak 109
pwm metodu 109
İş ve bekleme süresinin tespit etmek 110
analog / dİjltal Çevİrİcİ 114
pic16f84'ün giriş seviyesinin Ölçümü 114
a/d çevrim metodu kullanarak direnç Ölçmek 115



ve


1 neden sembolİk makİna dİlİ ÖĞrenİlmelİdİr? 7
1.1 mİkroİŞlemcİlerİn ÇaliŞma bİÇİmlerİ 7
1.2 tİpİk bİr ram’İn yapisi 8
1.3 cpu İle ram arasindakİ baĞlanti 8
1.4 makİna komutu kavrami 9
1.5 makİna komutlarinin genel bİÇİmİ 9
1.6 80x86 mİkroİŞlemcİsİnİn ÇaliŞma modlari 10
1.7 8086 İŞlemcİsİnİn yazmaÇ yapisi 10
1.8 80386 ve yukari modellerİn regİster yapisi 12
2 makİne komutlarindakİ bellek operandlari 13
2.1 16 bİt ÇaliŞmada bellek operandinin oluŞturulmasi 14
2.2 16 bİt adresleme İŞlemİ 16
2.3 32 bİt adresleme İŞlemİ 17
2.4 32 bİt bellek operandinin oluŞturulmasi 17
2.5 16 bİt ÇaliŞmada flag regİster’i 18
2.6 turbo debugger 20
2.7 cs ve ip regİster’larinin Önemİ 20
2.8 makİne komutlarinin İncelenmesİ 20
2.8.1 mov komutu 21
2.8.2 add komutu 21
2.8.3 adc komutu 22
2.9 komutlarin operand uyumu 22
2.9.1 sub komutu 24
2.9.2 cmp komutu 25
2.9.3 sbb komutu (subtract with barrow) 25
2.9.4 mul komutu 26
2.9.5 div komutu 27
2.10 bİt dÜzeyİnde İŞlem yapan komutlar 28
2.10.1 and komutu 28
2.10.2 test komutu 28
2.10.3 or komutu 29
2.10.4 xor komutu 29
2.10.5 shl ve shr komutları 30
2.10.6 sar ve sal komutları 30
2.10.7 döndürme komutları 30
2.10.8 Öteleme ve döndürme komutlarının biçimleri 31
2.10.9 stack kullanımı 31
2.10.10 pop komutu 32
2.10.11 stack kullanımının amacı 33
2.10.12 pusha ve popa komutları 34
2.10.13 inc ve dec komutları 34
2.10.14 xchg komutu 34
2.10.15 cbw(convert byte to word) ve cwd(convert word to double word) komutları 35
2.11 dallanma komutlari 35
2.11.1 yer değiştirme(displacement) kavramı 36
2.11.2 jmp 1000 36
2.11.3 koşulsuz jmp komutu 36
2.11.4 jmp far [si] 37
2.11.5 koşullu dallanma komutları 38
2.12 eŞİtlİk karŞilaŞtirmasi 38
2.12.1 eşitsizlik karşılaştırması 38
2.12.2 İşaretsiz sayıların karşılaştırılması 39
2.12.3 İşaretli sayıların karşılaştırılması 39
2.12.4 diğer koşullu jmp komutları 40
2.13 alt programlarin ÇaĞirilmasi 40
2.14 alt programdan gerİye dÖnÜŞ 42
2.15 bayraklar Üzerİnde Özel İŞlem yapan komutlar 43
2.16 sembolİk makİne dİlİ nedİr? 43
2.17 exe dosyanin yapisi ve yÜklenmesİ 43
2.18 tİpİk bİr sembolİk makİne dİlİ programi 44
2.19 code, data ve stack bÖlÜmlerİnİn belİrlenmesİ 45
2.20 semboller 45
2.21 data sembollerİnİn tanimlanmasi 46
2.22 program yÜklendİĞİnde regİster’larin durumlari 47
2.23 programin sonlandirilmasi 48
2.24 code sembollerİ 48
2.25 proc bİldİrİmİ 48
2.26 gerÇek ve sahte kodlar(real/pseudo) 49
2.27 sabİtler 49
2.28 sabİtlerİn ÇeŞİtlİ tabanlarda gÖsterİmlerİ 49
2.29 alfabetİk sabİtler(strİng’ler) 50
2.30 gerÇek sayi sabİtlerİ 50
2.31 bcd tÜrden sabİtler 50
2.32 yer sayaci(locatİon counter) 51
2.33 asm lİstİng dosyasi 51
2.34 dİzİler Üzerİnde İŞlemler 51
2.35 lea(load effectİve address) komutu 52
2.36 sembolİk makİne dİlİnde for dÖngÜlerİnİn oluŞturulmasi 52
2.37 kod sembollerİ 53
3 alt programlarla ÇaliŞma 54
3.1 fonksİyonlarin gerİ dÖnÜŞ deĞerlerİnİn oluŞturulmasi 59
3.2 fonksİyon ÇaĞirmalarina İlİŞkİn ÇeŞİtlİ Örnekler 59
3.3 sembolİk makİne dİlİnde yazilan fonksİyonlari c’den ÇaĞirilmasi 60
3.4 bİrleŞtİrme sirasinda Çikacak problemler 61
3.5 İÇ İÇe dÖngÜler 62
3.6 sembolİk makİne dİlİnde cdecl ÇaĞrimina uygun fonksİyon yazimina Örnekler 64
3.7 c derleyİcİlerİn sembolİk makİne dİlİ Çiktilari 67
3.8 offset ve seg operatÖrlerİ 68
3.9 exe dosya formati 68
3.10 psp(program segment prefİx) 71
3.11 yÜkleme sonrasinda regİster’larin İlk konumlari 71
3.12 derleyİcİlerİn baŞlangiÇ kodlari(startup module) 72
3.13 c’de char parametrelerİn ve gerİ dÖnÜŞ deĞerlerİnİn seyrek kullanilmasi 73
3.14 kesmeler(İnterrupts) 73
3.15 int makİne komutu ve kesmelere dallanilmasi 74
3.16 iret makİne komutu 75
3.17 kesmenİn hook edİlmesİ 75
3.18 kesme kodunun yazilmasi 76
3.19 sembolİk makİne dİlİnde dolayli jmp ve call İŞlemlerİ 77
3.20 bellek erİŞİmlerİnde segment yÜkleme durumlari 77
3.21 kesmelerİn fonksİyonlari ve alt fonksİyonlari 78
3.22 kesmenİn parametrelerİ ve gerİ dÖnÜŞ deĞerlerİ 78
3.23 dos ve bios kesmelerİ 78
3.24 10h vİdeo kesmesİ 79
3.24.1 21h kesmesi 82
3.24.2 int 21h f:2 83
3.24.3 int 21h f:7 ve f:8 83
3.24.4 int 21h f:0ah (buffered keyboard input) 83
3.24.5 int 21h f:25h(set interrupt vector) 84
3.24.6 int 21h f:35h(get interrupt vector) 84
3.24.7 int 21h f:39h(create sub directory) 84
3.24.8 int 21h f:9h 85
4 makro kullanimi 86
4.1 include İŞlemİ 87
4.2 local komutu 88
5 matematİk İŞlemcİnİn kullanilmasi 90
5.1 matematİk İŞlemcİ nedİr? 90
5.2 normal İŞlemcİ İle matematİk İŞlemcİnİn bİrlİkte ÇaliŞmasi 90
5.3 matematİk İŞlemcİnİn regİster yapisi 91
5.4 noktali sayilarin bellekte tutulma bİÇİmlerİ 91
5.5 noktali sayi formatlari 91
5.6 yuvarlama hatasi(roundİng error) 92
5.7 float(short real) format 93
5.8 bias deĞerİnİn anlami 94
5.9 noktali sayi formatinda Özel sayilari 94
5.10 double(long real) formati 94
5.11 long double(extended real) formati 95
5.12 matematİk İŞlemcİde noktali sayilarla İŞlemler 95
5.13 fld komutu 96
5.14 fst ve fstp komutlari 96
5.15 tam sayilara İlİŞkİn push ve pop komutlari 96
5.16 fadd, faddp komutlari 97
5.17 c’de gerÇek sayi tÜrlerİne gerİ dÖnen fonksİyonlari 98
5.18 fmul ve fmulp komutlari 99
5.19 fdiv ve fdivp komutlari 99
5.20 fsin, fcos, ftan, fsqrt komutlari 99
5.21 borland derleyİcİlerİn matematİk İŞlemcİ seÇeneklerİ 100
5.22 gerÇek sayi emÜlasyonu 100
5.23 sembolİk makİne dİlİnde gerÇek sayilari tutan sembollerİn tanimlanmasi: 100
5.24 pİpelİne İŞlemİ 101
5.25 normal İŞlemcİyle matematİk İŞlemcİnİn senkronİzasyonu 101
5.26 waİt komutunun ÇaliŞma bİÇİmİ: 102
5.27 gerÇek sayilarin karŞilaŞtirilmasi : 103
5.28 status regİster(status word) 103
5.29 fstsw word ptr mem 103
5.30 fstsw ax 104
5.31 normal İŞlemcİlerde bayrak regİster’i Üzerİnde İŞlemler 104
5.32 c0, c2 ve c3 status regİster bİt’lerİnİn karŞilaŞtirmadakİ anlamlari 105
5.33 programlama dİllerİndekİ yerel deĞİŞkenlerİn kullanilmasi 105
5.34 ÇeŞİtlİ Örnekler 107
6 hİzalama(alİgnment) 112
6.1 word hİzalamasi(word alİgnment) 112
6.2 dword hİzalamasi(dword alİgnment) 113
6.3 hİzalama problemlerİ 113
6.4 c++’ta bİr sinifin Üye fonksİyonlarinin sembolİk makİne dİlİnde ÇaĞirilmasi 116
6.5 c’de deĞİŞken sayida parametre alan fonksİyonlarin sembolİk makİne dİlİnde yazimi 117
6.6 c'de deĞİŞken sayida parametre alan fonksİyonlarin yazimi: 119
6.7 c'de deĞİŞken sayida parametre alan fonksİyonlara Örnekler 121
7 uzak gÖsterİcİlerİn yÜklenmesİ 123
7.1 c derleyİcİlerİ uzak gÖsterİcİnİ İŞlemlerİnİ ele aliŞ bİÇİmİ 124
7.2 cpu'nun durumunun saklanmasi 124
7.3 cpu konumunun saklanip gerİ yazilmasi sirasinda dİkkat edİlecek durumlar 125
7.4 c'de yerel olmayan dallanmalar 127
7.5 setjmp fonksİyonu 127
7.6 longjmp fonksİyonu 128
7.7 neden longjmp kullanilir? 128
7.8 setjmp ve longjmp fonksİyonlarinin sembolİk makİne dİlİnde yazimi 129
7.9 dos’ta uzak modellerde İŞlemler 131
7.10 uzak modellerde data gÖsterİcİlerİyle İŞlemler 131
7.11 wİn32/unix flat model sİstemİ 132
8 ayrintili segment tanimlari 133
8.1 segment tanimlama İŞlemİnİn genel bİÇİmİ 133
8.2 segment’lerİ exe kod İÇerİsİndekİ dİzİlİm sirasi 136
8.2.1 segment tanımlamasında kullanılan sınıf İsminin segment sıralamasına etkisi 137
8.2.2 c derleyicileri ve segment’ler 138
8.2.3 tiny model 139
8.2.4 small model 139
8.2.5 medium model 139
8.2.6 compact model 139
8.2.7 large model 139
8.2.8 huge model 139
8.2.9 segment kavramının Önemi 139
8.3 ayrintili segment tanimlamalari ve bellek modelİ 140
8.4 bİrden fazla data segment’İ İle ÇaliŞmak 141
8.5 bİrden fazla kod segment’İ İle ÇaliŞmak 141
8.6 wİn32/unix flat modellerde segment İŞlemlerİ 141
8.7 grup kullanimi 143
8.8 assume bİldİrİmİ 143
9 omf formati 144
9.1 omf formatini genel yapisi 145
9.2 data ve kod sembollerİnİn obj dosyaya yazilmasi 147
9.3 makİne kodlarinin ve statİk datalarin obj modÜle yazilmasi 149
9.4 basİtleŞtİrİlmİŞ segment kullaniminda segment İŞlemlerİ 149
9.5 relocatable adresler 150
9.6 relocatable adresler ve relocatİon tablosu 150
9.7 com dosyalar 151
9.8 org komutu 152
9.9 com programlarin yazimi 152
9.10 tek segment’lİ com programlarinin yazilmasi 152
9.11 Çok segment’lİ com programinin yazilmasi 153
9.12 tİny model programlar ve com dosyalari 153
9.13 com programlarinin Önemİ 154
9.14 com programinin kullanilmasina tİpİk bİr Örnek: boot programinin yazilmasi 154
10 İŞletİm sİstemİ yaziminda İzlenecek yÖntem 156
10.1 İŞletİm sİstemİnİn sİstem fonksİyonlarinin ÇaĞirilmasi İÇİn kullanilan yÖntemler 157
10.2 modÜllerle ÇaliŞma 157
10.3 communal tanimlama 160
10.4 strİng komutlari 160
10.4.1 komutlarda Önek(prefix) 160
10.4.2 segment Önekleri 161
10.4.3 rep Öneki 162
10.4.4 lods komutu 162
10.4.5 lodsb komutu 162
10.4.6 lodsw komutu 162
10.4.7 stos komutu 163
10.4.8 rep Önekinin İşlevi 163
10.4.9 stosb 163
10.4.10 stosw 163
10.5 small model memset ÖrneĞİ: 164
10.5.1 movs komutu 164
10.5.2 movsb 164
10.5.3 movsw 164
11 heap algorİtmasi 165
11.1 boŞ baĞli lİste algorİtmasi 165
11.2 tinux sİstemİnde heap organİzasyonu 167
11.3 kernel heap fonksİyonlarinin tasarimi İÇİn yapilacak İŞlemler 168
11.4 scas komutu: 168
11.5 Örnek thread kÜtÜphanesİ: 170
11.6 thread kÜtÜphanesİnİn kullanimi: 171
11.6.1 initthreadlib() fonksiyonu: 171
11.6.2 createthread() fonksiyonu: 171
11.6.3 exitthread() fonksiyonu: 172
11.6.4 getthreadexitcode() fonksiyonu: 172
11.6.5 closehandle() fonksiyonu: 172
11.6.6 thread kütüphanesinin kullanılmasında dikkat edilmesi gereken noktalar: 172
11.7 thread kÜtÜphanesİnİn İÇsel tasarimi: 173
11.8 c’de inlİne sembolİk makİne dİlİ 174
11.9 dos sİstemİnde heap yÖnetİmİ 175



https://www.kontrolkalemi.com/forum/attachments/picasm_tuerk_e-pdf.9360/
 

Forum istatistikleri

Konular
128,120
Mesajlar
915,175
Kullanıcılar
449,825
Son üye
yasargokdemir

Yeni konular

Geri
Üst