الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]ماهي طريقة حساب وقت التنفيذ excution Time لأي كود بالاسمبلي

مغلق
بدأه سنفورة حاسوبية في 16 ديسمبر 2007 · 8 رد · 2,640 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جميعا

ارجو مساعدتي بالاجابة عن هذا السؤال

ماهي طريقة حساب

excution Time

لأي كود بالاسمبلي

وجزيتم الف خير

#2

وعليكم السلام

طالما كنت افكر في نفس السؤال وهو كيفية معرفة زمن تنفيذ اوامر ما ...

وقد كتبت كود مازلت احتفظ به ربما يفيدك

mov edx,07ffe0000h
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,018h

هذا المقطع يقوم بقياس مدة تشغيل الويندوز الى لحطتنا هذه وهو نفس الكود المستخدم في الدالة GetTickCount لكني استخدمته بدلا منها لتقليل الزائد من الاوامر

mov esi,6
mov edi,eax

يتم تخزين الوقت في edi ووضع 6 في esi وهي تشير الى عدد الاوامر التي تم تنفيذها بعد قياس الوقت

@loop:
add esi,3
cmp esi,1000000
jne @loop

يتم في الكود السابق تنفيذ مليون امر

mov edx,07ffe0000h
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,018h

ثم بعد ذلك نقوم بقياس الوقت مرة اخرى

sub eax,edi

xor edx,edx
mov ebx,eax
mov eax,1000000000
div ebx

نحول الناتج من شكل Million Instruction / x Millisecond الى :

X Instructions / Second

invoke wsprintf,addr buf,CTXT("Frequency:%u Instructions/Second"),eax
invoke MessageBox,0,addr buf,CTXT("Frequency"),MB_ICONINFORMATION

نقوم بعرض الناتج في رسالة ...

الكود الكلي :

include masm32rt.inc


.data?
buf	dd	100	dup	(?)


.code
start:

mov edx,07ffe0000h
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,018h
mov esi,6
mov edi,eax
@loop:
add esi,3
cmp esi,1000000
jne @loop
mov edx,07ffe0000h
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,018h

sub eax,edi
xor edx,edx
mov ebx,eax
mov eax,1000000000
div ebx

invoke wsprintf,addr buf,CTXT("Frequency:%u Instructions/Second"),eax
invoke MessageBox,0,addr buf,CTXT("Frequency"),MB_ICONINFORMATION
invoke ExitProcess,0
end start

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

اشكرك اخي

على تعاونك معي

لم يبق لي الا ان اجرب الكود على برنامجي

وان شاء الله يزبط

#4

لو سمحتو ابي نفس الكود هذا بس يحسب الاكسكيوتن تايم بالملي

#5

مشكور جدا GM على الرد

With method and logic one can accomplish anything.

— Agatha Christie, Poirot Investigates, 1924

مدونتى

#6
اقتباس
لو سمحتو ابي نفس الكود هذا بس يحسب الاكسكيوتن تايم بالملي

أضرب في 1000 ؟؟

اقتباس
مشكور جدا GM على الرد

لا شكر على واجب

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#7

اللحين كود الترتيب مفصول عن كود حساب مدة الترتيب ؟؟؟

جربت الكود ومازبط معاي وانا محتاجته باسرع وقت في المشروع

جزيئة مهمة بضيفها لمشروعي

#8

الرجاء أريد الكود

أو دلوني على مواقع أجنبية

الاستاذة أكدت بوجودها بمواقع الانترنت ولكن لا اعرف اي موقع اجنبي ولم اتعامل معها ابدن

كل ماوجدته كتب ولم اجد اكواد لكي ادعمها بالمشروع

#9
اقتباس
الرجاء أريد الكود

المشاركة رقم 2 ... لا اعرف بالضبط ما هو الخطأ فالكود يعمل معي ,أرجو التوضيح

اقتباس
أو دلوني على مواقع أجنبية

لم ابحث عن اكواد في مواقع اجنبية

اقتباس
كل ماوجدته كتب ولم اجد اكواد لكي ادعمها بالمشروع

يمكن تحويل كلام الكتب الى اكواد والاستفادة منها ,وإلا فما فائدة الكتب !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…