Rastgele Sayı Üreteci ve GetTickCount, RDTSC, nrandom fonksiyonları

Kategori Assembly
09.11.2009
5219 Okunma

Assembly ile rastgele sayı üretmenin bir kaç değişik metodu var. GetTickCount APIsi, RDTSC komutu ve nrandom fonksiyonlarını kullanarak rastgele sayı üretebiliriz. Bunları kullanarak hazırladığım örnek Rastgele Sayı Üretecini yazının sonunda kaynak kodlarıyla beraber bulabilirsiniz.

GetTickCount:
Çağrıldığında işletim sisteminin başladığı andan itibaren geçen zamanı bize milisaniye olarak döndürür ve EAX yazmacına yazdırır. Her çağrılışda farklı bir sayı gelecektir. EAX yazmacına atılan zaman değerinin tamamını ya da 8 bitlik veya 16 bitlik kısımlarını kullanarak rassal bir sayı elde edebilirsiniz. Böylece kendi üreteciğiniz algoritma ya da fonksiyonlarınızda kullanabileceğiniz bir rastgele sayınız olur.

RDTSC:
Time Stamp Counter kelimelerinin kısa halidir. Çağrıldığında bize işlemcinin en son resetlendiği andan itibaren her bir sayıp devrini verecektir. Yalnız bunu zaman ile karıştırmamak gerekir. Time Stamp Counterın 64bit MSR(model spesific register) yazmacı işlemcinin devrine göre bir artarak yazdırılır. RDTSC için ayrılan yazmaçlar EAX ve EDX yazmaçlarıdır. RDTSC komutu düşük öncelikli 32 biti EAX yazmacına yüksek öncelikli 32 biti EDX yazmacına yazar. Yalnız bu komut bize pentium işlemciler ile beraber geldiği için projenizi hazırlarken en üstte en az 586 olmasına dikkat ediniz aksi halde hata verecektir.
Not: Ayrıca işlemci devrinden zamanı hesaplamak isteyenler için:
#saniye = #devir/işlemci hızı(HZ cinsinden)
yukardaki şekilde hesaplaybilirsiniz.

Masm32.lib->nrandom fonksiyonu:
Masm32 ile birlikte gelen rastgele sayı üreten fonksiyondur.
RDTSC
invoke nseed,eax
invoke nrandom,sayı

şeklinde çağrılır burada sayı bir değişken ya da doğrudan bir sayı olabilir. Bu da o sayıya kadar rastgele sayı üretmemizi sağlar.nseed ise nrandom komutunun program açıldığında hep aynı sayıyı değil yine rassal bir sayı üreterek açılmasını sağlar. Kullanılmazsa nrandom yine rastgele sayı üretir ancak program her açıldığında aynı sayı ile açılır. Güzel bir özelliktir.

Elimden geldiğince açıklamaya çalıştım. Yazım hataları ya da belgede eksik/hatalı bilgi verdiysem affola,bana bildirin düzelteyim. Aşağıda bu konuyla ilgili hazırladığım bir örnek proje var kaynak kodlarını inceleyiniz. Ayrıca s3rh47’e de ayrıca teşekkür ederim. Onun da bir projesini buraya ekliyorum o da güzel bir key generator. Random fonksiyonunun nasıl bir key generator içinde kullanıldığını görmek açısından gayet güzel bir uygulama.

http://www.sctzine.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif İndir: Rastgele Sayı Üreteci (9.13KB)
Tarih: 08/11/2009
Tıklanma: 1763
Açıklama: GetTickCount, RDTSC ve nrandom fonksiyonu kullanılarak hazırlanan bir random generator. Kaynak kodları içindedir.

http://www.sctzine.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif İndir: s3rh47's KeyGenerator (162.15KB)
Tarih: 08/11/2009
Tıklanma: 1754
Açıklama: Random komutlarının bir key generator içinde nasıl kullanıldığını görmek açısından güzel bir önek. s3rh47'e teşekkürler.

Share Button

Comments of this post

s3rh47

s3rh47
15 Kasım 2009

Paylasim Icin Sagol

Umarim herkeze faydali Olur

admin

admin
16 Kasım 2009

Umarım! Şimdiye kadar 9 kişi indirmiş keşke daha çok kişiye ulaşabilsek..

zugzwang

zugzwang
26 Kasım 2009

asm ile ilgilenen fazla yok..

Cihangir

Cihangir
10 Aralık 2009

merhaba yeni bir asm öğrencisiyim her türlü bilgiye açığım 🙂 teşekürler bu arada projeler için

admin

admin
11 Aralık 2009

Teşekkürler, elimden geldiğince birşeyler hazırlamaya çalışıyorum. Her zaman bilgisayar ve internet başında olamıyorum mesleğimden dolayı. Aslında bunlar her ne kadar benim projelerim de olsa dışarıdan her türlü güzel proje ve örneğe açığım. Ancak pek ilgilenen yok herhalde. Ya da bu sayfadan haberdar değiller. İşine yaradığına sevindim, kolay gelsin

KUTALMIS

KUTALMIS
19 Aralık 2009

Eline sağlık hocam, bir sen uğraşıyorsun valla, ortalık programcıyım diye geçinen web tasarımcılarına dot net cilere kaldı 🙂

admin

admin
23 Aralık 2009

Yorumun için çok teşekkürler Kutalmış 🙂 Gerçi bende şu aralar iş yoğunluğu ve internet sıkıntısı nedseniyle iyice pasife bağladım. Bir an önce internet olayını çözmem lazım ama nasıl olacak bilmiyorum. Daha neler yapacağım ama her zamanda isteyince olmuyor.
Sağlıcakla kal 🙂

Ahmet Vural

Ahmet Vural
24 Aralık 2009

Site az kişiye ulaşıyor diye düşünüyorum, 3 yıldır bu işlerle iç içeyim daha yeni haberim oldu.

admin

admin
28 Aralık 2009

Tabii bir google, yahoo gibi bütün insanlığa hitap eden bir içeriğimiz olmamasından kaynaklanabilir. Ayrıca sitenin içeriği ülkemiz çoğrafyasında pek az kişiye hitap ediyor. Hatta o insanların çoğuda iyi birer ingilizce bilgilerine sahip olduklarından yabancı sitelerle işlerini halledebiliyorlar. Bu da Türk assembly dünyasının kısıtlı ve Türk ters mühendisliğine olan ilgininde az olmasının başlıca nedenidir

isimsiz

isimsiz
01 Ocak 2010

@KUTALMIS
“ortalık programcıyım diye geçinen web tasarımcılarına dot net cilere kaldı ”
belki aralarında iyi derecede programcı olanlarda vardır,onların hakkını yemeyelim…
Ama nedendir bilmiyorum ,bilgisayar ile ilk tanışan direk web tasarımına yöneliyor:)

fondeep

fondeep
20 Ocak 2010

siteyi çok beğendim bundan sonra hep buradayım 😀

admin

admin
20 Ocak 2010

Her Zaman bekleriz:)

Emre TINAZTEPE

Emre TINAZTEPE
19 Mayıs 2010

Kardeşim, eline sağlık. O kadar işin arasında bunlar deşarj olmamızı sağlayan tek şey herhalde:)

Ufaklığı sabırsızlıkla bekliyoruz, kankilerin olarak. Seni andık geçen…

Gel artık da birer kahve içelim…

Dikkat kardeşim kendine

admin

admin
05 Haziran 2010

Sağol kardeşim, elimden geldiğince ve zaman(!) buldukça birşeyler yapmaya çalışıyorum. Ufaklık 7,5 aylık oldu, darısı başına. Umarım yakın zamanda karşılaşırız. Yeni projem var başladım bitirince ekliyeceğim siteye. Kendine iyi davran görüşmek üzere.

DarkStyle

DarkStyle
13 Şubat 2011

Ters Mühendislik icin mükemmel bir Paylasim,Almanyada yasiyorum. Islerimden dolayi pek fazla ilgilenemiyorum.
Ilgilendigim alan Delphi7 ve Assembly
Paylasimdan dolayi tesekkür eder basarilarinin devamini dilerim.

admin

admin
25 Şubat 2011

Yorumun ve ilgin için teşekkürler

SCTZine » » Rastgele Ondalıklı Sayı Üreteci

SCTZine » » Rastgele Ondalıklı Sayı Üreteci
05 Ağustos 2012

[…] yazımda sizlerle rastgele tamsayı üreten bir araç hazırlayıp kaynak kodlarıyla eklemiştim. BURADAN inceleyebilirsiniz. 2 gün önce MASM Forumlarında rastgele reel sayı üretmek ile ilgili bir […]