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

ما عمل الامر التالي test

مغلق
بدأه مؤيد أبوجابر في 6 يونيو 2004 · 18 رد · 2,177 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا اخواني

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

TEST

وفي كود ثاني برضوا حاب اعرف شو بسوي

BT

وياريت ما يكون اسئلتي ثقيله عليكم وشكرا

#2

السلام عليكم

test هى عباره عن cmp لبت معين, مثال على ذالك:

test eax,1

تقوم بمقارنة البت رقم واحد فى المسجل eax , يمكنك بعد ذالك إستخدام je او jne.

مثال اخر:

test eax,eax

jz L1

تقوم بعملية إختبار eax, إذا كانت النتيجه صفر تقوم بعملية قفز .

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

كفيت ووفيت اخوي

بس كمل معروفك وشو الامر الثاني والي هو

bt

وسكرا

#4

السلام عليكم

هناك 4 اوامر BT,BTS,BTR,BTC :

BTx تقوم بعملية إختبار لبت معين وتضع النتيجه فى carry flag مثال:

BT eax,3

jc L1

هذا المثال يقوم بعمليه قفز إذا كانت البت رقم 3 تساوى 1.

BTC eax,3

jc L1

هذا المثال يقوم بعمليه قفز إذا كانت البت رقم 3 تساوى 1 , ويغير قيمه البت الى عكس محتواه, يعنى إذا كان 0 يصبح 1 و إذا كان 1 يصبح 0.

BTR eax,3

jc L1

هذا المثال يقوم بعمليه قفز إذا كانت البت رقم 3 تساوى 1 ثم يضع 0 فى الخانه.

BTS eax,3

jc L1

هذا المثال يقوم بعمليه قفز إذا كانت البت رقم 3 تساوى 1 ثم يضع 1 فى الخانه.

اقتباس
وسكرا

والحمد لله الذى عافانا من السكر .

والسلام

تم تعديل هذه المشاركة بواسطة احمد غريب في 7 يونيو 2004 في 01:36

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

شكرا اخ احمد

وإن شاء الله كلنا بعدنا عن السكر

بس كمان بدي اثقل دمي عليك

اجانا في الامتحان الفاينال سؤال عن test

وحكولنا فيه شو الي بتأثر من الفلاج فهل test بأثر على الفلاج ريجيستر ؟........؟

وشكرا

#6

السلام عليكم

اكيد اخى ياثر على الفلج, خذها قاعده كل امر تقوم بعده بعملية jmp,jc,jnc,jz الخ ياثر على الفلاج.

BT , BTC , ... كولها تاثر على الفلاج.

test تاثر على 3 فلاج, sign , Parity, Zero.

BT,BTC الخ تاثر على carry flag

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#7

انا موافقك رأي اخ احمد

بس انت حكيت انوا test

عملية مقارنه لا غير صح ولا

يعني انوا نفس الامر ما اثر على الفلاج لانوا قار بين تو ريجستر صح

وهذا فهمي انا ومش عارف اذا كنت انا فاهم غلط ولا

ياريت تفيدني بزياده وشكرا

#8

نعم اخى هى مجرد مقارنه ولكن اين تجد نتيجة المقارنه ؟ النتيجه تجدها فى الفاج

مثال على ذالك:

BT eax,0
jc L1
; zero do this
jmp L2
L1:
;not zero do this
L2

كما تلاحظ هنا jz تقوم بعملية قفز إذا كانت البت الاولى فى رجستر eax تساوى 1.

والسلام

تم تعديل هذه المشاركة بواسطة احمد غريب في 7 يونيو 2004 في 02:34

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

معلش اخ احمد انا حاس اني ثقلت عليك

بس انا حكيتلك عن test

انا بدي اعطيك المثال الي اجانا

test ax,bx
sub bx,ax

فاهم علي وحكولنا شو الي تاثر في السطر الاول

وانا بعتقد اناوا ما بأثر لانوا مافي امر جنمب هنا صح ولا

استحملني اخ احمد

وشكرا

#10

ولايهمك اخى عادى لا ثقلت ولا شي.

عموماً المسئله مش مسئلة عملت جمب ولا لا , المسئله إن الفلاج بتتاثر على اي حال لانك قمت بعملية test , وظيفة test هى التاثير على الفلاج, إذا لم تاثر على الفلاج إذاً ما الفائده منها ؟

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#11

شكرا اخي احمد

كفيت ووفيت بصراحه مش قادر ومش عارف كيف اشكر

والللف شكر مره ثانيه اخوي

على هذه المناقشه

وتصبح على خير اخوي

وشكرا

#12

العفو حبيبى و إن شاء الله إحنا تحت امرك فى الخير.

وإنت من اهل الخير

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#13

السلام عليكم,

أعلم أني أتيت متأخرا لهذا الموضوع وأريد فقط أن أقول هو يجب علينا أن يكون عندنا كتاب أو ملف لأوامر الأسمبلي وعندها فلكل أمر سنجد وصفه وكذلك كل ما يمكن هذا الأمر من تغييره. ولهذا أضن أن هذا سيصبح يوما ما ضروري حين نتقدم في البرمجة.

إلى اللقاء.

#14

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

بصراحه انا مافي كتاب او ملف ان كان في الموقع هاذ او غيروا إلا نزلتوا

بس بعض الاحيان الواحد بصتصعب من الكتب او الملفات انوا بالانجليزي

وهي ضعفنا وشكرا اخوي chik على النصيحه

#15

السلام عليكم,

حقيقة مشكل اللغة قد يكون عائقا إذا كنا لا نفهمها . ولكن في بعض الأمور مثل الأوامر مثلا فحتى لو عثرنا على ملف بلغة أجنبية لن يكون مشكلا كبيرا لأنها لا تتطلب مجهودات كبيرة للفهم فحين نقرأها قد نفهم المعنى وأن دليل هذه الأوامر من الضروري أن يكون كمرجع عندنا لأنه يمكن أن نكون يوما ما نريد البرمجة ونقف عند أمر ما وقد لا يكون عندنا الوقت لطرح السؤال وانتضار الإجابة.

أتمنى لك التوفيق وإلى اللقاء.

#16

أخي بالنسبة لأمر test:

قد يكون في الغالب لتأكد من صحة كلمة سرية مثلاً:

 test eax, eax :password in the eax register
je 0040118D 
or

jne 0040118D

الذي أريد قوله أنه في الغالب وليس دائماً يكون بعد التيست جمب.

What I want to clarify here is that test some times is followed by either je or jne :)

أو جمب بدون شرط:

Or a non conditional jump like so:

 jmp
#17

السلام عليكم

الاخ riddler المسجل eax دائماً يساوى eax لذالك إذا اردت المقارنه مثل الباس وورد فلابد ان يكون الباس وورد الاصلى فى مسجل و الاخر فى مسجل اخر :

test eax,ebx
je passwordOK
jne passwordNotOK

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#18

السلام عليكم,

كما قال الأخ أحمد الرجستر هو دائما هو . والمقصود بالأمر هنا test eax,eax غالبا ما يكون للتأكد إن كان eax يساوي صفر أم لا . وفيما يخص قضية الباسوورد فقد تستعمل هذه الطريقة ولكن من قبل وحين نقارن الباسووردات قد نضع مثلا القيمة 1 أو أي قيمة غير منعدمة في الرجستر eax إذا كان الباسوورد صحيح ونضع فيه قيمة صفر في الحالة الأخرى أو العكس . وحين نقوم ب test eax,eax فإننا بالفعل نتأكد من صحة أو عدم صحة الباسوورد ولكن بطريقة غير مباشرة يعني الرجستر لا يكون فيه الباسوورد نفسه. ولنعلم أن هذه طريقة يمكن استعمالها ولكن ليس كل البرامج التي تقارن الباسووردات تعمل على هذا الشكل بل يبقى كل مبرمج يخترع طريقة قد تكون خاصة به ويحاول التحايل قدر الممكن حتى يحاول يخفي الطريقة التي استعملها حتى لا يتمكن المخترقون من إيجاد طريقته بسهولة.

إلى اللقاء.

#19

كلامك صحيح يااخ chik . الكلمة السرية لاتكون فيه مباشرة بل بطريقة غير مباشرة

شكراً لك.

  if eax = 1
then jmp Correct Password
else
jmp Worng Password  meaning eax= 0على سبيل المثال .

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

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