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

سؤال عن عمل cmp

مغلق
بدأه MEMONONO في 23 نوفمبر 2005 · 12 رد · 875 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم.....

أنا كان عندي كود الطريقة التالي:

004AA4A2 8B4D08                  mov ecx, dword ptr [ebp+08]
:004AA4A5 85C9                    test ecx, ecx
:004AA4A7 7405                    je 004AA4AE
:004AA4A9 8901                    mov dword ptr [ecx], eax
:004AA4AB 895104                  mov dword ptr [ecx+04], edx

ولكن مشكلة الـ test هنا هي ان هذا الامر إذا وصل إلى امر القفز فهو دائما يقفز نظرياً...!!

ولكن الذي حدث امامي هو أن البرنامج عندما يكون على شكل دعاية demo ، فهو يقفز....

ولكنه لا يفعل ذلك عندما يكون كاملا أي مرخصا ويذهب إلى امر القفز ويتجاهله تماما

ومن ثم يكمل السطرين الباقيين..

أن كدة دخت...!!! :blink:

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#2
MEMONONO كتب:
:004AA4A5 85C9                    test ecx, ecx

:004AA4A7 7405                    je 004AA4AE

:

you always compare the same value, ecx=ecx, therefore, je(jump if equal will alaways work)

Sorry, My PC in the college doesn't support Arabic

تم تعديل هذه المشاركة بواسطة ibn_als3odiah في 23 نوفمبر 2005 في 10:05

3424.gif
#3

أنا فاهم هذا الشيء

ولكن ساعات... الكلام اللي انت بقول عليه لايعمل

ولقد رأي البرنامج يعمل ولايقفز هنا بل يكمل السطرين الباقيين تخيلوا ياجماعة!!!

كيف الكلام ده؟

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#4

:D

test ecx,ecx

ليست مثل

cmp ecx,ecx

تقريبا مثل

cmp ecx,0

و ecx لا يكون صفر في Demo B)

d4baa0.gif
#5
TEST INSTRUCTION

Purpose: It logically compares the operators 

Syntax:

TEST destiny, source

It performs a conjunction, bit by bit, of the operators, but differing from AND, this instruction does not place the result on the destiny operator, it only has effect on the state of the flags.

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

في انتظار بقية الأعضاء

تم تعديل هذه المشاركة بواسطة ibn_als3odiah في 23 نوفمبر 2005 في 13:22

3424.gif
#6

أي علامة إستفهام أخي ibn_als3odiah ؟

d4baa0.gif
#7

:D

عفوا أخي لم أنتبه لردك لأني طلبت اضافة رد وأخذت وقت أبحث في معنى ال Test

شكرا لك على الافادة

دمتم بخير

3424.gif
#8

فقط للتوضيح أكثر

AND ECX,ECX

تعطي صفر فقط إن كان ECX صفر

يمكن كتابة الكود فوق

test ecx, ecx
je 004AA4AE

في 80486 و ما فوق

jcxz 004AA4AE
d4baa0.gif
#9

Test modifies flags CF PF SF ZF AF OF

Performs a logical AND (bitwise), updating the flags register without saving the result

ok

capito

خد بالك من الفلاجس فتبع قيمة ecx ستحدث الjump

تم تعديل هذه المشاركة بواسطة glimps في 23 نوفمبر 2005 في 15:56

#10

ماهي القيمة (الفلاج) المسؤولة عن القفز؟

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#11

ZF

d4baa0.gif
#12

بعد بحثي داخل الدي-اسمبلر...

وجدت أن الكود الخاص بالـtest يقع في الملف الـ exe في المكان التالي:

000AA4A5h

طبعا فتحت الـHex workshop وبحث حتى وصلت المكان التالي:

000AA49C

50E8 2E07 0000 8B4D 0885 C974 0589 0189 5104 C9C3 558B EC83 EC20 5657 8B7 D08 0FB 607 8BF7

ولقد شاهدنا من الدي-اسمبلر

أن الأمر mov له أوبكود 8B4D08

أن الأمر test يكون له أوبكود 85C9

وأن الـje له 7405

وما أريد أن أتأكد منه أن الدي-اسمبلر

لم يخدع بسبب لخبطة الأوامر..كأن يستخدم المطور كودا غير الكود المعروف ولكنه يعمل نفس العمل لمنع عملية الهندسة العكسية...

ما رأيكم..؟

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#13

لا يوجد في الكود ما يخدع DeAssember

لا أظن برنامجك مكتوب بلغة أسمبلي بل لغة أخرى

وهو كود عادي Generated by Compiler

d4baa0.gif

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

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