Hi, this is my first post to this forum. I've translated Tut. 1 to Turkish. I should post it here, shouldn't i :grin:

<discard>
<var name="tuttitle">
Tutoryal 1: Basit ?lkeler, T?rk?eye ?eviren inFinie'dir. Bir?ok hakk? sakl?d?r. ?zinsiz kullan?n?z. Parayla sat?l?r ;)
</var>

<var name="reqs1">
Bu tutoryal okuyucunun MASM'yi nas?l kullanaca??n? bildi?ini farzeder.
E?er MASM'ye al???k de?ilseniz indirmek i?in
</var>

<var name="reqs2">
ve dosyadaki yaz?lar? tutoryali okumadan ?nce ?al???n
</var>

<var name="theory">
Teori:
</var>

<var name="theory1">
Win32 programlar? 80286'dan beri sak?n?ml? kipte ?al???rlar. Ama 80286 ?imdi tarih oldu.
B?ylece biz de sadece 80386 ve onun takip?ilerini d???nmeliyiz.
Windows her Win32 program?n? ayr?lm?? sanal alanlarda ?al??t?r?r.
Bu demektir ki her Win32 program? kendi 4 GB'l?k adres alan?na sahip olacakt?r.
</var>

<var name="theory2">
Bu demek olmuyor ki her Win32 program? 4 GB fiziksel haf?zaya sahiptir. Sadece program o aral?k i?inde bir adresi adresleyebilir.
Windows program ba?vurular?n?n ge?erli olmas? i?in gereken her ?eyi yapar.
Tabii ki program Windows'un koydu?u belli kurallara uymak zorunda, aksi takdirde korkulan ba?a gelir ve Genel Koruma Hatas?(General Protection Failure) olu?abilir.
</var>

<var name="theory3">
Her program kendi adresleme alan?nda yaln?zd?r. Bu Win16 ya z?tt?r.
B?t?n Win16 programlar? birbirlerini *g?rebilir*. Win32'de ?yle de?ildir.
Bu ?zellik bir program?n, ba?ka bir program?n data/kod b?l?m?ne yazma ?ans?n? azalt?r.
</var>

<var name="theory4">
?imdiki haf?za modeliyle eski g?nlerdeki 16-bit d?nyas?ndan kalma haf?za modelinin
aras?nda da?lar kadar fark var. Win32'de biz haf?za modeli ya da segmentler ile
ilgilenmek durumunda de?iliz. ?imdi sadece bir haf?za modeli var. D?z haf?za modeli(Flat memory model).
Daha fazla 64K segmentlerle u?ra?mak gerekmez. Bellek b?y?k kesintisiz 4 GB'lik alan ?imdi.
Bu da demek oluyor ki segment registerleriyle u?ra?mak gerekmiyor.Bellekteki herhangi bir
noktay? adreslemek i?in herhangi bir segment registerini kullanabilirsiniz. Ve bu programlay?c?lara B?Y?K bir yard?md?r.
Bu win32asm programlamay? C programlamak kadar kolay yapan ?eydir.
</var>

<var name="theory5">
Win32 alt?nda programlama yaparken baz? ?nemli kurallar? mutlaka bilmelisiniz. Bunlardan
biri Windows'un esi, edi, ebp, ve ebx'in de?i?mesini ummamas?d?r. ?lk olarak ?u kural? hat?rlay?n?z:
E?er bu registerlardan birini callback fonksiyonunda kullanacaksan?z, onlar? restore etmeden kesinlikle
Windows'a kontrol? b?rakmay?n?z. Callback fonksiyonu sizin yazd???n?z fonksiyondur. Windows taraf?ndan ?a??r?l?r.
Bu konudaki en a??k ?rnek windows prosed?r?d?r. Bu sizin bu registerlar? kullanamayaca??n?z anlam?na gelmez.
Sadece Windows'a kontrol? b?rakmadan ?nce onlar? restore etti?inizden emin olun.
</var>

<var name="content">
??erik:
</var>

<var name="content1">
Burada bir taslak program var. E?er kodlardan baz?lar?n? anlamazsan?z paniklemeyin.
Hepsini daha sonra birer birer a??klayaca??m.
</var>

<var name="content2">
Hepsi bu! ?imdi tasla??m?z? inceleyelim.
</var>

<var name="content3">
Bu bir assembler y?nergesidir. assembler'?n
80386 y?nergelerini kullanaca??n? belirtir. Ayr?ca .486 ya da .586'y? da kullanabilirsiniz ama
en g?venlisi .386'dan ?a?mamakt?r. Asl?nda her CPU modeli i?in birbirinin neredeyse ayn?s? iki
formu vard?r.
.386/.386p, .486/.486p ...
</var>

<var name="content4">
Bu &amp;quot;p&amp;quot; versiyonlar?
sadece program?n?z ayr?cal?kl?(privileged) y?nerge kullanacaksa gereklidir.
Ayr?cal?kl? y?nergeler sak?n?ml? kipteyken CPU/OS taraf?ndan tutulmu?(reserved) y?nergelerdir.
Onlar sadece ayr?cal?kl? kodlar taraf?ndan ?a??r?labilirler. (Sanal ayg?t s?r?c?leri gibi)
?o?u zaman program?n?z normal kipte ?al??acakt?r. Yani p'siz versiyonlar? kullanmakta bir
sak?nca yoktur.r
</var>

<var name="content5">
bellek modelini belirleyen bir assembler y?nergesidir. Win32 alt?nda sadece D?Z model vard?r.model.
</var>

<var name="content6">
MASM'ye parametre yollama gelene?ini bildirir. Parametre yollama gelene?i parametre yollamay? belirler.
??yleki: soldan sa?a, sa?dan sola. Ve de kimin fonksiyon ?a??r?ld?ktan sonra y???n?(stack) d?zenleyece?ini
belirtir.
</var>

<var name="content7">
Win16 alt?nda sadece iki t?r ?a??rma gelene?i vard?r: C ve PASCAL.
</var>

<var name="content8">
C ?a??rma gelene?i parametreleri sa?dan sola yollar. Yani en sa?daki parametre ilk pushlan?r.
Y???n? d?zenleme ?a??ran?n sorumlulu?undad?r.
Mesela, foo(int first_param, int second_param,
int third_param) ?eklindeki bir fonksiyonu ?a??rmak i?in (C ?a??rma gelene?iyle)
gereken kod ??yle olacakt?r:
</var>

<var name="content9">
?a??rma gelene?i bunun tersidir:
</var>

<var name="content10">
?a??rma gelene?i. Parametreleri soldan sa?a yollar ve y???n?n d?zenlenmesinde
?a??r?lan sorumludur.
</var>

<var name="content11">
Win16
</var>

<var name="content12">
?a??rma gelene?ini benimser. ??nk? bu daha k???k program lar olu?turulabilmesini sa?lar.
C ?a??rma gelene?i parametre say?s?n?n bilinmedi?i zamanlarda i? g?r?r. Mesela wsprintf() fonksiyonunda
fonksiyonun ba?tan ka? parametre ald???n? belirlemenin bir yolu yoktur. Bu y?zden y???n d?zenlemesini yapamaz.
</var>

<var name="content13">
,
</var>

<var name="and">
ve
</var>

<var name="content14">
gelene?inin melezlemesidir. Parametreler sa?dan sola yollan?r fakat ?a??r?lan
y???n d?zenlemesinden sorumludur. Win32 platformu sadece
</var>

<var name="content15">
kullan?r.
Bir istina d???nda: wsprintf().
wsprintf()'te
</var>

<var name="content16">
?a??rma gelene?ini kullanmak zorundas?n?z.
</var>

<var name="content17">
Bu d?rd?ne section denir. Win32'de segmentler yoktu, hat?rlad?n?z m??
Ama kendi adres alan?n?z? mant?ksal sectionlara ay?rabilirsiniz. Bir section?n ba?lamas? di?erinin bitti?i anlam?na gelir.
?ki ?e?it section vard?r: data ve kod. Data sectionlar? kendi aralar?nda ??e ayr?l?r:
</var>

<var name="content18">
Bu section program?n?z?n ba?lat?lm??(initialized) section?d?r.
</var>

<var name="content19">
Bu k?s?m program?n?z?n ba?lat?lmam?? verilerini bulundurur. Bazen sadece belle?i ?n-ay?rtmak(preallocate) istersiniz
ama ba?latmak istemezsiniz. Bu k?s?m bu ama?la bulunur. Ba?lat?lmam?? verilerin avantaj? ?udur: EXE'nizde yer kaplamaz.
Yani .DATA? k?s?m?nda 10.000 bayt ay?rt?rsan?z dosyan?z 10.000 bayt artmaz. Boyutu ayn? kal?r. Siz sadece assembler'a
program y?klendi?inde ne kadar alan gerekti?ini s?ylemelisiniz. Hepsi bu.
</var>

<var name="content20">
Bu k?s?m program?n?zda kulland???n?z sabitlerin listesini i?erir. Bu k?s?mdaki sabitler
program?n?z taraf?ndan de?i?tirilemez. Onlar sadece *sabittirler*.
</var>

<var name="content21">
?? k?sm? da kullanmak zorunda de?ilsiniz. Sadece kullanmak istedi?iniz k?s?mlar? deklare edin.
</var>

<var name="content22">
Kod i?in sadece bir k?s?m var:
</var>

<var name="content23">
. Bu kodunuzun bulundu?u yerdir.
</var>

<var name="content24">

</var>

<var name="content25">
keyfi bir etikettir(label). Genellikle kodunuzun b?y?kl???n? belirtmek i?in kullan?l?r. Her iki etiket de t?pat?p olmal?d?r ve kodlar?n?z
</var>

<var name="content26">
ile son aras?nda olmal?d?r.
</var>

</discard>



content24 intentionally left blank.
Posted on 2003-04-30 09:37:27 by inFinie
Hi infinie,

thx for your effort :)


but we already have it in turkish http://www.asmcommunity.net/board/index.php?topic=10624


if you view this forum select "view posts from the beginning" and you'll see the other threads.

Iczelion tutorial 2 has not been done yet in turkish :)
http://www.asmcommunity.net/board/index.php?topic=10626

thx for your effort so far it's very much appreciated

:alright:
Posted on 2003-04-30 09:50:29 by Hiroshimator
Corrected some vicious little errors.

h.
Posted on 2003-11-08 10:34:44 by hitchhikr
I just realised that this is the wrong thread.

:stupid:
Posted on 2003-11-08 10:47:26 by hitchhikr
I uploaded your new version hitchhikr :)
Posted on 2003-11-09 06:32:16 by Hiroshimator