السلام عليكم
هذا الجزء بلغة سي
كيف احوله الى الاسمبلي
struct change
{
BYTE P;
PROC addr;
BYTE R;
} A,B;وجزاكم الله كل خير
السلام عليكم
هذا الجزء بلغة سي
كيف احوله الى الاسمبلي
struct change
{
BYTE P;
PROC addr;
BYTE R;
} A,B;وجزاكم الله كل خير
اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ
وعليكم السلام
كيف الحال اخي الكريم ؟ صار لنا زمان ما شفناك, ان شاء الله تكون بخير..
جواباً على سؤال اولاً كلمة PROC كلمة محجوزة فى مترجمات masm32 لذلك يجب تغيرها
.data? change STRUCT P byte ? myPROC DWORD ? R byte ? change ENDS A TYPEDEF PTR change B TYPEDEF PTR change
للوصول إلى عناصر الStruct يمكنك عمل التالي
mov eax, A.[myPROC]
والسلام عليكم
لا إله إلا الله محمد رسول الله
busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.
و عليكم السلام و رحمة الله وبركاته ،
مرحبا اخي احمد ، كيف الحال ؟
انا بخير ولله الحمد ،، و مشغول بمشروع التخرج
انا اخذت بنصيحتك لي وركزت على امر واحد ،
الحمد لله تقريبا انتهيت من المشروع ،
وبالوقت المتبقي لدي سأحاول تحويل البرنامج الى اسمبلي ،
تواجهني بعض الصعوبات .. ولكن الله يعين ويسهل وان شاء الله انتم هنا ايضا ما تقصرون ،
--
جزاك الله خيرا على الرد ،
احمد عندي سؤال صغير ،
انا قمت بكتابة درايفر ،
ولدي برنامج في طبقة ال user يتعامل مع هذا الدرايفر (البرنامج حايا مكتوب بلغة سي)،
اريد ان احول البرنامج الى الاسمبلي هل ممكن ؟؟
يعني ممكن التعامل مع الدرايفر من لغة الاسمبلي ؟
ونفس الشي ،
لو كان لدي ملف dll مكتوب بلغة سي وهو يصدر مجموعة دوال ،
هل ممكن ان اصل الى هذه الدوال واتعامل معها من برنامج اسمبلي ؟
---
و عذرا اذا لم افتح موضوع جديد بهذه الاسئلة ، للسرعة فقط
--
و جزاك الله كل خير
اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ
وعليكم السلام ورحمة الله وبركاته
بالتوفيق إن شاء الله اخي ونحن فى انتظارك بعد التخرج حتى نستفيد من خبراتك فى المنتدي إن شاء الله..
بالنسبة للاسئلة نعم تستطيع بالتاكيد ان تستدعي دوال مكتوبة بلغة السي من خلال الاسمبلي والعكس..
راجع موقع مايكروسفت فهناك عدة امثلة لكيفية عمل ذلك..
http://msdn2.microsoft.com/en-gb/library/t...526(VS.80).aspx
الامثلة سهلة وجيدة جداً ...
والسلام عليكم
لا إله إلا الله محمد رسول الله
busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.
جزاك الله كل خير ..
وشكرا على كلامك الطيب
اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ
السلام عليكم
لدي كود اسمبلي في السي ++ كيف يمكن تحويلة الي سي شارب
#ifdef _MSC_VER
#pragma warning(disable:4035) //function doesn't return value
inline ushort i2i(ushort x)
{ __asm mov ax, x
__asm xchg ah, al
}
inline uint i2i(uint x)
{ __asm mov eax, x
__asm bswap eax
}
#pragma warning(default:4035)
#else //_MSC_VER
inline ushort i2i(ushort x)
{ __asm("xchgb %b0,%h0" : "=q" (x) : "0" (x));
return x;
}
inline uint i2i(uint x)
{ __asm("bswap %0" : "=r" (x) : "0" (x));
return x;
}
#endif //_MSC_VERوجزاكم الله خيراً
حسناً استطعت تحويلة والحمد لله
وهذا الكود بعد التحويل
ushort i2i(ushort x)
{
//return (ushort)((x & 0x00ff) << 8 | (x & 0xff00) >> 8);
return (ushort)((x >> 8) | (x << 8));
}
uint i2i(uint x)
{
//return (((x & 0xff000000) >> 24) | ((x & 0x00ff0000) >> 8) | ((x & 0x0000ff00) << 8) | ((x & 0x000000ff) << 24));
return (((x & 0x000000FF) << 24) + ((x & 0x0000FF00) << 8) + ((x & 0x00FF0000) >> 8) + ((x & 0xFF000000) >> 24));
}تم تعديل هذه المشاركة بواسطة Moudey في 12 مايو 2007 في 03:20
الأخ أحمد غريب ..
قرأت في بعض المواقع لتعريف ال struct نقوم بالأتي
لنفرض لدينا:
DATE STRUCT day db 6 month db 12 year db 1976 DATE ENDS
لماذا في الأسمبلي نستطيع أن نعطي عناصر ال struct قيم بينما لا ينفع ذلك مع C++
كيفية الرجوع الى ال struct كما يلي:
myDate DATE <>
و لتغيير ال قيم عناصر ال struct نقوم بالتالي
myDate DATE <10,3,1925>
و لتغيير قيمه واحده نقوم بالتالي
myDate DATE <,10,>
و للوصول الى أحد عناصر ال struct نقوم بالتالي
mov ex, [myDate.day]
ما الفرق بين هذه الحالتين، (الحالة الأولى التي عرضتها أنت و الحالة الثانيه التي قرأتها في استفساري) اعذرني أخي ربما تكون الأسئله بسيطه و لكني مبتدأ جدا في هذه اللغه ...
جزاك الله خيرا ...
تم تعديل هذه المشاركة بواسطة Yousof في 16 مايو 2007 في 18:40
هذا الموضوع مغلق.