محاضرة عملية في لغة التجميع (Assembly) تشرح مؤشرات الذاكرة BYTE PTR والفرق بين MOV وMOVZX/MOVSX، ثم تعرض استخدام نوافذ Watch والذاكرة في Visual Studio للتحقق من القيم أثناء التنفيذ.
Key Takeaways
- عند استخدام الأقواس يتم التعامل مع محتوى الذاكرة لا مع العنوان نفسه
- يُستخدم BYTE PTR عندما لا يكون حجم الذاكرة واضحاً من السياق، ولا حاجة له مع السجلات ذات الحجم المعروف
- MOVZX وMOVSX ضروريان عند نقل قيمة بين سجلات أو مواقع بأحجام مختلفة، ولا يُعوَّض عنهما بـ PTR
- نافذة Watch أداة عملية أساسية لمراقبة القيم أثناء التنفيذ والتحقق من النتائج النظرية
What the video covers
- شرح مفهوم العنوان في الذاكرة وأن الأقواس [ ] تعني الوصول إلى القيمة الموجودة عند العنوان لا العنوان نفسه
- توضيح متى يلزم استخدام BYTE PTR و WORD PTR و DWORD PTR لتحديد حجم البيانات عند الوصول للذاكرة
- التمييز بين الحالات التي يكون فيها حجم المصدر والوجهة واضحاً (مثل AL) والحالات التي يحتاج فيها المجمّع إلى تحديد الحجم صراحة
- التأكيد على أن PTR ليس بديلاً عن MOVZX وMOVSX عند الانتقال بين أحجام مختلفة
- شرح نافذة Watch في Visual Studio لمراقبة المتغيرات أثناء التنفيذ وتغيير تنسيق العرض إلى Hexadecimal
- مناقشة مشكلة عرض القيم 16 بت ضمن سجلات 32 بت وكيفية إظهارها عبر نافذة Watch
- تطبيق عملي على بناء المشروع (Build) والتأكد من خلوه من الأخطاء قبل بدء التصحيح
- شرح إعداد نقطة التوقف (Breakpoint) وبدء جلسة التصحيح Start Debugging
- عرض مصفوفة من البايتات وحساب حجم الذاكرة المطلوب لها
- التنبيه إلى أهمية ضبط المعمارية على x86 لتعمل جلسة التصحيح بشكل صحيح
Chapters
- 00:00مراجعة مفهوم السجل والعنوان في الذاكرة
- 02:00استخدام BYTE PTR وتحديد حجم البيانات
- 04:40الفرق بين PTR وMOVZX وMOVSX
- 06:40مقدمة في نوافذ Watch والذاكرة في Visual Studio
- 09:00بناء المشروع وإعداد نقطة التوقف
- 15:00تطبيق عملي على المصفوفات والقيم السالبة
- 25:00حساب حجم الذاكرة وعرض النتائج بالسداسي عشر
- 35:00ملاحظات ختامية حول إعداد المعمارية x86
Full Transcript — Download SRT & Markdown
Speaker A
طيب، مع الأسف كان من قطع التسجيل، فخلينا نرجع ونعيد حكينا. إنه الـ IS أي هو عبارة عن ريجستر بيحتوي على عنوان موقع معين في الذاكرة. لكن لما أنا أحطه ما بين هذه الأقواس، معناتها كأني بحكي له: بدي الذاكرة الموقع اللي موجود عند العنوان اللي بيحمله الـ IS. يعني، الـ IS حامل عنوان، بدي أنا الموقع تبع هذا العنوان، موجود في الذاكرة، مش القيمة نفسها اللي موجودة فيه.
Speaker A
الموقع اللي موجود عند العنوان اللي بيحمله الاي اس اي يعني اي اس اي حامل عنوان بدي انا الموقع تبع هذا العنوان موجود في الذاكره مش القيمه نفسها اللي موجوده فيه فالبايت بي تي ار كاني انا بحكي للاسمتر الفكره منه انه بدي اياك
Speaker A
فالبايت بي تي آر كأني أنا بحكي للأسمبلر، الفكرة منه إنه بدي إياك تتعامل مع بايت واحد بس عند هذا الموقع. الـ 25 هي القيمة اللي بدك تخزنها لي. يعني خزّن قيمة الـ 25 في بايت واحد من الذاكرة عند العنوان الموجود بالـ IS. طيب، لو كان وورد، حتخزن ببايتين، لو كان دبل وورد، بأربع بايتات، وهكذا.
Speaker A
باربع بايتات وهكذا السؤال هو هل لازم اكتب انا البي تي ار في كل ما اتعامل مع الذاكره لا وشوفوا مش كثير انا حشدد على موضوع البي تي ار يعني انا مثلا لو رحت وانا معرفه انه في عندي انا ايج البايت 21
Speaker A
السؤال هو: هل لازم أكتب أنا البي تي آر في كل ما أتعامل مع الذاكرة؟ لا. وشوفوا، مش كثير، أنا حشدد على موضوع البي تي آر. يعني مثلاً لو رحت وأنا معرفة إنه في عندي الـ Age بايت، 21، وعرفتها بالـ Data، وجيت بالـ Code كتبت mov الـ Age، ما بحتاج أني أستخدم البايت بي تي آر. هذا شغلنا الطبيعي اللي إحنا معتادين عليه. بالنهاية، الـ Age هي عبارة عن بايت، والـ AL هو عبارة عن بايت، والـ mov متساويين عندي، الـ source والـ destination، فبكتبها بشكل طبيعي وما بحتاج أي شي لها.
Speaker A
فبكتبها بشكل طبيعي وما بحتاج اي شيء لها طيب لو مثلا وغالبا احنا بنستخدم البوينت بي تي ار لما بدي اتعامل مع الاي اس اي فانا كتبت موف وكتبت هيك الاي اس اي وهذا اعتبره تريكه هيك صغيره بتعرفوها وكتبت الاي ال الان شوفوا معي هنا برضه
Speaker A
طيب، لو مثلاً، وغالباً إحنا بنستخدم البوينتر بي تي آر لما بدي أتعامل مع الـ IS، فأنا كتبت mov، وكتبت هيك، الـ IS، وهذا أعتبره تريكة هيك صغيرة بتعرفوها. وكتبت الـ AL. الآن شوفوا معي هنا برضه: غالباً ما راح أحتاج للبي تي آر. ليش؟ لأنه أول حاجة، الـ AL الموجود عندي هو ريجستر حجمه 8 بت، يعني واحد بايت، تمام. فهيك هذه القيمة اللي موجودة عندي مخزنة أصلاً بريجستر، يعني هو أصلاً في قيمة جوا الـ AL مخزنة فيه، وواضح للأسمبلر إنه حجمها عبارة عن واحد بايت. فبالنسبة للأسمبلر، طالما الحجم عندي واضح، فخلص، مش مشكلة عندي إني أستخدم البايت بي تي آر. بالنهاية رح أخذها ورح أخزنها بالموقع المرتبط بقيمة الـ IS، هي تمام.
Speaker A
مخزنه فيه وواضح للاسمبلر انه حجمها هي عباره عن واحد بايت فبالنسبه للاسمبلر انا طالما الحجم عندي واضح فخلص مش مشكله عندي اني استخدم البايت بي تي ار بالنهايه رح اخذها ورح اخزنها بالموقع المرتبط بقيمه الاي اس اي هي تمام لكن لو اجيت على العكس
Speaker A
لكن لو جيت على العكس، بدل الـ AL هي نفس الجملة، وكتبت لكم الرقم 25 اللي موجود فوق، بالنسبة للأسمبلر أنا مش عارف هي الـ 25 إيش وضعها بالضبط؟ بالنسبة لي مش مخزنة بأي ريجستر سابق، بالنسبة لي هي مش واضحة إني أحط لك بموقع مرتبط بالـ IS بالذاكرة، حجم الذاكرة مش واضح بالنسبة لي. فهنا بستخدم جملة البايت بي تي آر. تمام يا جماعة؟ وبرجع وأكد وأبني على إنه البوينتر الموجود عندي هان لا يعتبر بديل على الـ MOVZX أو الـ MOVSX. هذه نقطة كثير مهمة. يعني لو كان الـ source والـ destination مش متساويين بالحجم، بدي أنقل من ريجستر صغير لريجستر أكبر، أو القيمة بدي أكبرها تلقائياً، لازم أدرس النقطتين الأساسيات اللي هو الـ MOVZX والـ MOVSX، وممكن أربط معهم البي تي آر. ما بدي أتعمق كثير بهي التفاصيل.
Speaker A
بموقع مرتبط بالاي اس اي بالذاكره حجم الذاكره مش واضح بالنسبه لي فهنا بستخدم جمله البايت بي تي ار تمام يا جماعه وبرجع وباكد وبنوه على انه البوينتر الموجود عندي هان لا يعتبر بديل على الموف زد اكس او الموف اس اكس هذه نقطه كثير مهمه يعني
Speaker A
إحنا وصلنا لعند Watch الـ Variables. وبالنسبة لي، إنه إحنا لحد الآن كل اللي بندرسه شي نظري، لكن في البرمجة المنخفضة المستوى، خصوصاً بتعامل مع الأسمبلي، بيهمني أتأكد بشكل عملي. فعشان هيك اليوم رح نتعامل مع ريجسترز الـ Watch والـ Memory وكل نافذة رح تعطينا منظور مختلف عن البرنامج، قبل ما أنتقل للعملي. سريعاً: الـ Watch أنا بستخدمه عشان أراقب قيمة Variable أثناء ما بعمل عملية الـ Debugging. تمام؟
Speaker A
التفاصيل انا وصلنا لعند واتشين الفاريابلز وبالنسبه لي انا انه نحن لحتى الان كل اللي بندرسه شيء نظري لكن في البرمجه المنخفضه المستوى خصوصا بتعامل مع الاسمبلي بيهمني اتاكد بشكل عملي فعشان هيك اليوم رح نتعامل مع ريجسترز الوش والميموري وكل نافذه رح
Speaker A
والفكرة للأسئلة اللي وصلتني منكم على الخاص، الكثيرة، إنه يا مس، إحنا في التاسك تبع اللاب السابق، في الـ Assignment، كنت طالبة منا 16 بت فيرجن، وإحنا كنا بس بالريجسترز اللي ظهروا عنا هي 32 بت، صح؟ فإيش الحل؟ كيف نجيب لك إياهم فعلياً؟ الريجسترز ما فيها حاجة اسمها إنه يجيب لك الـ AL لحالها. تمام، هو بيتعامل مع الـ 32 بت، يعني حالة الـ 16 ما بتكون ظاهرة. فكيف بدنا نظهرها؟ حكيت لكم، رح نشرحها باللاب، وهي عن طريق الـ Watch. فخلونا الآن ننتقل للبرنامج عشان نطبق عملي.
Speaker A
الاساينمنت كنت طالبه منا 16 ت فيرجن ونحن كنا بس بالرجستورات اللي ظهروا عنا هي 32 ت صح فايش الحل كيف نجيب لك اياهم فعليا الريجسترات ما فيها حاجه اسمها انه يجيب لك الاي ال لحالها تمام هو بيتعامل مع ال
Speaker A
تمام. لو أجينا هنا، هي الكود اللي كتبناه، هو الكود الموجود عندكم باللاب. في اللاب ورك، لو عملنا Build Solution، طبعاً برجع أكد: اعملوا Save Control S لكل تغيير انتم بتعملوه. لازم يكون هذا الخط الموجود عندكم هون كله باللون الأخضر، ما في أي شي زيادة. عملنا Build Succeeded، فخلص، إحنا شغلنا تمام التمام.
Speaker A
ورك لو عملنا لد سليوشن طبعا برجع باكد اعملوا سيف كنترول اس لكل تغيير انتم بتعملوه لازم يكون هذا الخط الموجود عندكم هون كله باللون الاخضر ما في اي شيء زياده عملنا بيلد سكسيدد فخلص نحن شغلنا تمام التمام ننتقل ل
Speaker A
ننتقل للـ Debugging. بنعمل Debug، بعمل Start Debugging، بهذا الشكل. بنقع في أخطاء كثير، وصلتني منكم على موضوع الـ x86، فركزوا عليها رجاءً كثير. منيح، يعني بتحكولي ليش ما بيشتغل عنا عملية الـ Debugging؟ لأنه بتكونوا انتم مش منتبهين إنه انتم شغالين على x86.
Speaker A
86 اه ثواني انا طلعت ناسي اعمل شير لهي الشاشه خلوني اعمل لكم لها شير تمام مش مشكله لانه طلعت خلونا نعمل شير مره ثانيه للشاشه حلو نعمل هلقيت الديبج ستارت ديبجين اه اه انا اللي بحكي لكم على اهم نقطه
Speaker A
آه، ثواني، أنا طلعت ناسية أعمل شير لهي الشاشة. خلوني أعمل لكم شير، تمام، مش مشكلة. لأنه طلعت، خلونا نعمل شير مرة ثانية للشاشة. حلو. نعمل هلقيت الـ Debug Start Debugging. آه، آه. أنا اللي بحكي لكم على أهم نقطة ناسيتها، وهي نقطة الـ Breaking Point. يعني أنا ناسية أحط الـ Breaking Point، فعشان هيك مش ضابطة. فحطها عند الـ Main زي ما اتفقنا. أشيلها من هنا. ثواني، علق الجهاز عندي. أنا نحطها هان. نعمل Debug، نعمل Start Debugging. حلو، هيه اشتغل.
Speaker A
هذا شيء انا عامله لكم اياه على شان تشوفوه هي الوتش يا جماعه من وين جبناها من الزاويه الموجوده عندي طبعا هي الواجهه بتظهر عندكم ه الريجسترز الريجسترات اللي اشتغلنا عليها وبيظهر عندي هنا تحت شو الوتش من جنبها اللوكالز وهكذا ها لو
Speaker A
طيب، أنا ظاهر عندي. هذا شي أنا عاملة لكم إياه عشان تشوفوه. الـ Watch يا جماعة، من وين جبناها؟ من الزاوية الموجودة عندي. طبعاً هي الواجهة بتظهر عندكم. هـ الريجسترز، الريجسترات اللي اشتغلنا عليها، وبيظهر عندي هنا تحت. الـ Watch من جنبها الـ Locals، وهكذا. ها، لو جيتوا هيك Locals بتضغطوا هنا على الـ Watch. إيش بنعمل؟ حرفياً إحنا في الـ Watch تبعتي لونا هون. بكتب، اطلعوا إيش بكتب؟ بكتب الـ Variable اللي أنا معرفاه، اسم الـ Variable اللي أنا معرفاه بالـ Data، بكتبه.
Speaker A
عارفه انه في عندي انا ستيودنت ايج من نوع بايت القيمه تبعته هي 21 اجيت على الوتش رحت كتبت الستودنت ايج تبعتي بس ايش قصه الفالو ها ايش قصتها لو جينا هيك وعملنا هيكساديسيمال ديسبلاي عشان تظهر لي القيمه بالهيكساديسيمال تمام صار عندي انا اطلعوا
Speaker A
يعني لو جينا فوق هنا، أنا هنا بالضم، عارفة إنه في عندي أنا Student Age من نوع بايت، القيمة تبعته هي 21. أجيت على الـ Watch، رحت كتبت الـ Student Age تبعتي. بس إيش قصة الـ Format هاي؟ إيش قصتها؟ لو جينا هيك وعملنا Hexadecimal Display عشان تظهر لي القيمة بالـ Hexadecimal. تمام، صار عندي. أطلعوا معي، تأكدوا مرة ثانية: Hexadecimal Display تمام. لو شلت الـ Hexadecimal، المفروض إنه تظهر بقيمة الـ Decimal. فـ Student Age إيش طلعت؟ 15 بالـ Hexadecimal، وإيش مكتوب؟
Speaker A
شير مره ثانيه على اللاب يا جماعه ثواني حتى نحكي عن النقطه هي بحكي لنا انه بتختلف بالوش طريقه عرض الاسماء اللي موجوده عندي وما بتظهر بالشكل اللي تعودنا عليه اللي هو البايت السبايت الوورد الاسورد الى اخره وبتظهر بانواع الداتا تايب الموجوده بلغه السي
Speaker A
طب، أنا مخزنة الـ Student Age من نوع البايت. شو قصة الـ Unsigned Char اللي إنت كاتب لي إياها؟ لو رجعنا للاب، خلوني أعمل شير مرة ثانية على اللاب. يا جماعة ثواني، حتى نحكي عن النقطة. هي بتحكي لنا إنه بتختلف بالـ Watch طريقة عرض الأسماء اللي موجودة عندي، وما بتظهر بالشكل اللي تعودنا عليه، اللي هو البايت، الـ S Byte، الـ Word، الـ S Word، إلى آخره. وبتظهر بأنواع الـ Data Type الموجودة بلغة الـ C. يعني البايت بتظهر على إنها Unsigned Char، وهذا اللي شفناه توّ في الـ Watch. الـ S Byte بتظهر على إنه Char. إذا صار الـ Unsigned Char هو اللي بينكتب، مش الـ S، اللي إحنا كنا بالماس بنكتب S للـ Signed. لا، هنا بحكي لكم: الـ S Byte بنحطله S بيعتبر Char طبيعي. الـ Word بسميه Unsigned Short. بنكبّر الـ S، صاروا الـ Double Word، Unsigned، بدون، وهكذا. فبتختلف تفاصيل العرض طبعاً حسب ا
Speaker A
لكم الاس بايت بنحطله اس بيعتبر تشار طبيعي الورد بسميه انسايند بنكبر الاس صارور الدي ووندي وون بدون وهكذا فبتختلف تفاصيل العرض طبعا حسب اختلاف اصدار الجوال ستديو والى اخره ولكن الفكره انه نافذه الوش بتستخدم انواع من لغه السي الموجوده عندي وقبل ما ارجع في
Speaker A
نقطه كثير مهمه بدي اركز عليها وهي الاخطاء الشائعه اللي ممكن نحن نقع فيها الاخطاء الشائعه انه ممكن وانتم قاعدين بتيجوا بتعرفوا بتروحوا معارفين بالدوت داتا ماسك هو يابل من نوع بايت وكاتبين لي اف طبعا الاتش هي عباره عن شو حكينا
Speaker A
بالهيكسديسيمال هذه غلط غلط ليش لانه انا حكيت لكم ممنوع من عنبات لما بدي اجي اكتب حرف ابلشه بدون الصفر يعني هو المفروض اكتب 0 اف بعدين احط الاتش اللي هي للهيكساديسيمال عشان ما يقرا لي اياها كنيم ويطلع لي حاجه
Speaker A
انديفايند بالنسبه له تكون مش واضحه تمام الشغله الثانيه انه تختاروا حجم غير كافي يعني مثلا ال 300 هي الموجوده عندي وانا عارفه انه البايت الرينج تبعها من صفر ل 255 يعني 300 اكبر من 255 هذا غلط بالنسبه لي هذه تعتبر مشكله فعشان هيك الافضل بدل
Speaker A
البايت استخدم الورد تمام ال انك تروحي تخزني لي قيمه نيجتيف او بوزيتيف في نوع هو اصلا انسايند ما حكينا السالب 15 بتنقرن 241 وهي مشكله انت غيرتي بشكل كامل القيمه اللي موجوده عندي لو اجينا نحكي انه نسينا نهايه يه النص وهذه قلت لكم هذه
Speaker A
مشكله مشكله انه حيظل مستمر ياخذ موقع بالذاكره وانا بدي اعمل له النول تيرمينتور اوقفه فعشان هيك لازم احط الفاصله مع الزيرو عشان اوضح له انه ستوب بعد الاتش والاي حط لي صفر انه هذه هي نهايه النص الموجود عندي كمان انه انا
Speaker A
لازم احسب ايش هو حجم المصفوفه تبعتي تمام لازم لازم حجم المصفوفه هي اللي انتم شايفينها اكتبها مباشره بعد المصفوفه على شان ما يصير عندي اي مشاكل في عمليه احتساب السايز تبع المصفوفه لانه قلت لكم في النقطه السابقه هي بتميز ما بين بدايه
Speaker A
المصفوفه والموقع الحالي اللي انا وصلت له وبتطلع لي في النهايه حجم المصفوفه تبعتي فانا بدي يصير اي خلل بحجم المصفوفه تبعتي فمباشره بحطها بعد ما اعرف المصفوفه تمام الشغله الثانيه بحكي لكم وهذه ركزنا عليها انه ما في عندي تطابق بالسايز لما بستخدم
Speaker A
الموف شرط اساسي يكون في عندي تطابق والشغله الثالثه انه اي اعمل ريديفاين للايكوال قلنا انه اول حاجه انا عرفت انه الايكوال هي عباره عندي خمسه اروح اعرفها انه هي تسعه هذه غلط بدك تعمل ريديفاي بدك تكون متاكد من البدايه اذا بدي اعمل
Speaker A
ريديفاي بدي استخدم اليساوي تمام وبتل انديان بمشي باكورد يعني انا بتوقع انه النتيجه بالمموري حتظهرلي 12 34 الحقيقه هي حتظهرلي 34 12 تمام يا جماعه نروح هلقيت على اللابورك تبعنا الموجود عنا هان ونعمل شير مره ثانيه على التمبليت
Speaker A
طيب خلينا نقرا الكود تبعنا من البدايه على شان نفهم ايش المطلوب عرفنا عننا بالدوت داتا تبعتي مجموعه من الفاريابلز عرفت انه في عندي انا ستيودنت ايج من نوع بايت يعني بحجز واحد بايت من الذاكره وبدي اخزن فيه قيمه ال 21 عرفت
Speaker A
انه في عندي انا التمبريتشر من نوع اس بايت يعني هو بيحتمل قيمه موجبه وسالبه ولكن ياخذ سايز الواحد بايت والقيمه فيه هي سالب 15 الباس مارك من نوع البايت وخزن فيها قيمه بالهيكسديسيمال اللي هي قيمه رقم 50 تمام الروم نمبر انا شايفين
Speaker A
بورجيكم التنوع في التخزين الروم نمبر من نوع ورد يعني بدي احجز اثنين فايت وخزن فيها 4096 البلنس يحتمل قيمه موجبه وسالبه وسالب 1000 الفايل سايز اللي هو الديفيكت وعندي السيريال نمبر وفي عندي انا الستيتس ولاحظوا استخدمنا لها ان انشلايزد قيمه ان
Speaker A
انشلايزد لو وبدي اجي هنا وبشطرتنا خلينا نجيب ال القلم على شان نكتب واحسب بالنسبه لي هذول كلهم قدش بدهم يحجزوا مساحات من الذاكره كل واحد قدش بده يحجز مساحه من الذاكره خلينا ننزل هيك عليهم ونوضحها ونقدر المستطاع نوضحهم كلهم
Speaker A
قدش بدي احجز لكل هذول المساحات من الذاكره الان يا جماعه البايت بدي احجز له له واحد زائد الاس بايت بدي احجز له كمان واحد تمام بعدين في عندي كمان بايت حلو هي انا شغال لسه كمان واحد الباس المارك تمام
Speaker A
خلصناها ندخل على الروم نمبر اثنين بعدها في عندي كمان اثنين اوكي بعدها اربعه و ثواني كده اربعه بعدين عننا ثمانيه وعننا في الاخر واحد اذا المفروض مجموع هذا كليته هي عننا ثلاثه واث خمسه سبعه 4 8 و8 16 فبيطلع الجواب عندي هو عباره عن
Speaker A
24 اذا اصبح مجموع المساحه المحجوزه بالذاكره من هدول الفريابلز كل ليتهم اللي موجوده عندي كم 24 تمام 24 بالهيكساديسيمال كامله بتطلع وتذكروا لي التحويلات ديروا بالكم انه بيجيكم بالامتحان 24 بالهيكساديسيمال بطلعها انه هي عباره عن 18 ورجاء ما ننسى الاتش الاتش
Speaker A
اساسيه عشان نفهم انه احنا شغالين فعلا بالهيكسديسمسيمال تمام؟ طيب اي لو لاحظنا بس شويه هيك في نقطه مهمه لو رجعنا على السيريال نمبر ايش قصه الكي وورد والرقم الغريب هذا الموجود عندي لاحظوا انه هنا عدد الخانات الست عشريه 16
Speaker A
يعني في القيمه المكتوبه عندي لانه هو مكتوبكسديسمال بيتجاوزوا 64 ت فلازم نصححها شوي قبل ما نبلش انه نخليها استنوا او لا هي مصححه اه في اللعبه القديمه تمام يعني هي لا صراحه بدها تصحيح انه انا لازم اشيل الثمانيه هي الموجوده
Speaker A
عندي لانه هي زياده اه انا مش منتبهها اعتبروا هي يا جماعه هي نقطه تصحيح لانه في الكي وورد انا لما بدي اخزن بخزن من قيمه 16 بالهيكسديسيما زي ما انتم شايفين والكيو وورد تبعي هذا الموجود عندي كان في
Speaker A
عندي خانه زياده كانت رح تسبب عندي مشكله في تنفيذ البرنامج تمام فعشان هيك انا ثمان بايتات يعني بتعامل مع 64 ب فبدي اكون دقيقه في عمليه احتسابي اول حاجه بدي اعملها شغلنا الديبجين وطبعا هو هذا المفروض الان خلونا اوقف
Speaker A
البرنامج واعمل ريبلدين له لانه التغيير هذا اللي صار رح ياثر على الشغل تبعنا تمام ثواني وبرجع لكم تمام نستكمل الان من وين ما وقفنا عملت ريبلد مره ثانيه اي عارفه انه في منكم رح يحكوا لي انه ما عملنا في هذا المثال اي
Speaker A
تصفير للرجسترات اللي موجوده عندي لانه مش مشكله في النهايه رح تظهر لنا نتيجه بالواتش ف بس انا زي ما برجع بحكي لكم يفضل نعمل تصفير لانه مفيد لكم في انكم تفهموا النتائج وما يصير عندكم اي مشاكل فيها تمام حطينا البريك بوينت ضفنا اسماء
Speaker A
المتغيرات التسعه اللي موجوده عندي هنا بالواتش طبعا هذه خطوه انتم لازم تعملوها انا عملتها عشان ما اطول مده الفيديو اكثر من هيك ضفتهم كلهم ولاحظوا معي عندي انسايند تشار مع انها بايت عندي تشار لانه هي من النوع السايند وهكذا طيب فهذا
Speaker A
الجدول اللي نحن شفناه عننا بهذا الشكل طيب ايش القيمه اللي ظهره عندي هنا بالستيودنت ايج الحجم تبعه هو واحد فبالتالي هذا القيمه المخزنه اصلا في اللي هي عباره عن ال 21 تمام ماشي الان اييه بس ثواني في بدي اعمل شغله
Speaker A
تمام انا بس اللي عملته صراحه هي انه بدي اصفر القيم الموجوده عندي هان على شان اضمن انه نقرا النتيجه بشكل صحيح تمام بعد ما صفرنا القيم خلينا نبلش الان نقرا القيم الموجوده عندي الان اول حاجه بالكود موجوده عندي كانت هي شو عباره عن
Speaker A
موف اي ال تمبريتشر خلينا نرجع بس شويه تمبريتشر كانت قيمتها سالب 15 حلو طيب السالب 15 هذه الموجوده عندي اي لو بدكم تيجوا تعملوها كقيمه هيكساديسيمال بتطلع اف واحد اتش هيها اف واحد بالهيكساديسيمال الاف واحد هذه اللي موجوده عندي لو اجينا
Speaker A
نشوف ايش بدنا نعمل خلينا نطلع نعمل مع اف ان اف 10 تخزن عندي انا قيمه الاف واحد حلو ممتاز طيب لو اجيت الان بدي اجي اكتب انه كمان الموف زد اكس اي بي اكس والتمبريتشر طيب التمبريتشر من نوع شو انا
Speaker A
اول حاجه على ايش نقلت نقلت على الاي ال التمبريتشر اصلا من نوع الاسبايت الاسبايت يعني بحجز بايت واحد الاي ال بياخذ برضه بايت واحد فبالتالي كان في عندي توافق ما بين الستينيشن والسورس ففيش عندي مشكله لكن التمبريتشر اللي هي بايت واحد اروح
Speaker A
انا انقلها على الاي بي اكس اللي هي عباره عن 32 ت حكينا هذه مشكله ليش مشكله لانه كيف بدي امل ال 24 ت اللي ضايلات ايش بدي احط فيهم فعشان هيك انا استخدمت الموف زد اكس طيب بس نرجع لفوق شوي انا عندي
Speaker A
التمبريتشر هي عباره عن سالب 15 واستخدمت الموف زد اكس مش المفروض استخدم الموف ساين اكس بس هو في هدف عشان اورجيكم ايش النتيجه اللي بدها تصير عندي فلو عملنا اف ان اف 10 صارت عندي انا قيمه الاي بي اكس الموجوده
Speaker A
عندي برضه هي عباره عن الاف واحد ولكن تصفرت الباقيات وهذا المطلوب انه نحن ايش صفرنا الباقيات اللي موجوده عندي وتحطت انه هي عباره عن سالب 15 بس ايش ال تصفرت القيمه نيجي عننا للي بعديها الموف اس اس اي سي اكس تمبريتشر ايش بصير
Speaker A
اهوا معي هنا في الموف الاي سي الموف اكس احنا حكينا انه بتعامل مع نظام السايند السايند يعني بطلع على ايش اخر حاجه موجوده عندي انا بالرقم 15 لو اطلعنا على الرقم 15 حكينا انه اخر تت موجود عندي الرقم فيه هو واحد طالما هو واحد اذا انا
Speaker A
لما بدي اجي اعمل تكرار بعمل تكرار بالواحد ولو اجينا نعمل هذا الشيء يا جماعه بالهيكسديسيمال فانا ايش موجود عندي هنا واحد اف اذا اخر حاجه موجوده عندي هي الاف فبالتالي بدي اكمل بالاف ها عملنا بالهيكسديسيمال ملينا نسخنا بت الاشاره
Speaker A
الاخير فانا تفسرت عندي هذا مش غلط لا هو تفسر عندي النتيجه كسايند انتجر واستوعبت عفوا كساين نمبر واستوعبت انه هي عباره عن سالب 15 نيجي للي بعدها اللي هي الموف زد اكس اي دي اكس البنس بدي ياخذ قيمه
Speaker A
البلانس طيب ناخذ قيمه البلنس اللي موجوده عندي وين هالبلنس ايش هي قيمتها عباره عن سالب 1000 حلو بدي اخذ قيمه السالب 1000 اف ان اف 10 صارت عندي اف سي 18 اتش تمام طيب لو جيت عملتها البلنس برضه في الشغله الثانيه هي الموف
Speaker A
اكس عشان اشوف انا ايش بده يصير عندي بالاشاره اطلعوا معي صارت انا عندي بالاي اس اي هي عباره عن اف سي 18 وهي القيمه اللي بتمثل سالب 1000 بمراعاه الاشاره اللي موجوده عندي تمام اذا اختلفت عندي انا قيمه الاي
Speaker A
بي اكس عن قيمه الاي سي اكس ليش لانه الثنتين تبعوا طريقتين مختلفتين في انه يعملوا اكستند واحده عملت اكستند بالزيرو وواحده عملت اكستند بالسايند مع مراعاه الاشاره السالبه او الموجبه تمام طيب ليش ما تغيرت كل بالتاتب نحن هنا صفرنا
Speaker A
فبالنسبه لكم ما كان واضح انه لو صار تغيير بقيم الاي اي اكس او لا بس فعليا يا جماعه فعليا لو ظلت وخلينا قيمه الاي اكس بدون تصفير كان رح يكون واضح بالنسبه لكم انه بس قيمه الاي اي ال الاي ال فعليا هي
Speaker A
اللي راح تتغير هو الجزء الاقل من الريجستر والباقي رح يضل زي ما هو تمام ماشي اي لو نيجي هالان نحكي كمان طبعا زي ما حكيت لكم هي الوتش بتوضح لي ايش القيمه الموجوده عندي ولو اجيت الان كتبت هان مثلا كتبت قيمه الا a ال قيمه
Speaker A
الا ال صارت عندي اف واحد اذا هذه هي الطريقه اللي بتساعدكم برضه انتم تستوعبوا كل ريجستر ايش القيمه الموجوده فيه يعني لو كتبت انا مثلا هنا ال البي طلعت القيمه الموجوده عندي هنا هي اف واحد برضه اذا شغلنا صح تمام لو ايش كمان اكتب لكم حتى
Speaker A
لو كتبنا هنا قيمه ال الاي اس اي نفسها حيجيب لي اياها كامله نفس ما هي موجوده عندي فوق فهذه طريقه ثانيه سهله بالنسبه لي بالواتش وانا بيهمني بيهمني جدا خصوصا باسئله الوشب لانه رح يكون مرتبط عندكم في موضوع
Speaker A
انكم تجيبوا لي من الوش وتجيبوا لي من الريجسترز بدي سكرين شوت لكل اف ان اف 10 بتعملوها ايش التغيرات اللي بتصير حسب السؤال طبعا اللي بتصير عندي بالرجسترات واللي بتصير عندي بالواتش حسب السؤال يعني لو السؤال معتمد عندكم على انه تشوفوا لي
Speaker A
ايش الموجود بالواتش مع الريجسترات بده يظهر كله ايش الموجود برجسترات الوتش مع الميموري برضه بده يظهر عندي ننتقل الان على اللاب ورك اثنين اللي موجود عننا تمام هي الكود الكود الثاني اللي موجود عننا طبعا لاحظوا انه شكل التمبليت تبعنا
Speaker A
تقريبا ثابت يعني نفس ما هو ما صار في عندي اي تغييرات جديده بس اللي صار عندي انه بالدود داتا عرفت انه في عندي انا سكورز ولاحظوا معي انه انا بلشت ادخل بجو الليستز فانا ماشيه انه في عندي ليست هي
Speaker A
الليست اسمها سكورز يعني البوينتر تبعي بده ياشر على بدايتها باسم سكورز من نوع بايت يعني كل واحد من العناصر بدي احجز له بايت 90 75 60 100 اذا في عندي انا اربع عناصر اذا بدي احجز اربع بايت زيروز ورد
Speaker A
خمسه دب ايش يعني معنى هذا الكلام نجيب هيك القلم انه انا بدي اياك تحجز لي مساحه من الذاكره هي المساحه من الذاكره موجوده عندي من النوع ورد يعني بدي احجز اثنين بايت يعني كل عنصر موجود عندي بده يكون له
Speaker A
اثنين بايت حلو بدي اعمل تكرار بمقدار خمسه تكرار بمقدار خمسه يعني انا بدي اعمل 2 في 5 اذا صار في عندي على 10 بدي احجز 10 بيتات في الذاكره موجودات عندي حلو ع بيتات بالذاكره وحكى لك انه كل قيمه تتخزن
Speaker A
فيها هي عباره عباره عن شو؟ هي عباره عن 0 يعني 0 ز 0 ز 0 0 ز 0 0 وهكذا بضلني ماشي للاخر طيب الباترن من نوع البايت وهذا هو عباره عن النستد والمكس حكينا بنقسم من النص بناخذ الجزء الاول بدي اعمل انا
Speaker A
دوبليكيت بمقدار مرتين بده يتخزن قيمه واحد واثنين بس هنا ايش من نوع بايت يعني على طول بكتب واحد اثنين وبرجع واحد اثنين تمام وبيستكمل في نفسها انه من نوع بايت برضه بدي اعمل ثلاثه دبليكيت لزي اف اتش وبكتبهم وبعملهم بالنسبه عندي للمسج
Speaker A
شرحناها هي لاب اثنين لازم احط زيرو علىشان يتوقف عندها واللينك من نوع وورد تمام هي بدنا نخزن هذول موجودات عندي بعدين عرف الاي ديز اللي موجود عندي يعني يعتبر الشيء صراحه مش جديد علينا حكينا فيهم تقريبا اغلب الامثله هي بس عشان نتعمق فيها اكثر الان
Speaker A
ونفهمها ان شاء الله اي لو بدي اجي احسب انا اجمالي الحجم اللي بدي اخذه لكل واحد من الموجود عندي هان بروح وانا حاكيه انه اول واحده عندي اربع عناصر باربعه بايت زي ما حكينا ثاني واحده قلنا خمس عناصر خمس تكرارات بالسايز
Speaker A
الواحد اثنين يعني بتعامل مع 10ره الثالث حكينا انه في عندي هنا انا اثنين وثلاثه حلو فبيطلع الجواب انه من نوع بايت اطلعوا معي من نوع بايت وعندي تكرار هنا اثنين بس عندي هنا رقمين يعني واحد ا واحد ا صار اربعه 4 زائد الثلاثه الموجوده عندي
Speaker A
هنا كم بيطلع بيطلع سبعه ضروري نركز لانه هذه تعتبر مكست اخر شغلتين عندي لاب اثنين حكينا عندي 1 ا 3 اربعه خمسه والصفر الموجود عندي بالاخر هو سته ركزوا معي السبيس حكينا بناخذها بعين الاعتبار وهي عباره عن كل واحد بده يتخزن على شكل بايت
Speaker A
واحد اذا صار عندي سته اي بعدين حكينا في عننا ثلاث عناصر من نوع الورد ف 3 في 2 بطلع الجواب عندي هو 6 واخر حاجه الدي وورد دي وورد يعني 4 4 وفي عندي انا هنا قيمتين موجودات عندي هون فاربعه باثنين
Speaker A
فصار عندي 8 6 وست و12 واربعه بنحكي عن 16 و10 26 وسبعه و8 يعني ام بيطلع الجواب 41 بايت اذا انا بدي بالذاكره ينحجز عندي كم 41 بايت لكل هي الاشياء اللي حكيناها وال 41 بايت ايش بتطلع بالاخر لما احولها
Speaker A
للهيكساديسيمال بتطلع 29 بالهيكساديسمال حلو يا جماعه تمام ماشي الان عشان ان نفهم شغلنا صح بدي اكتب لكم اياهم الان هذول عندي هنا بالوتش عشان نشوف برضه كيف بصير التغيرات تبعتنا سكورز في عندي انا هنا زيروز في عندي هنا بتر تيرن
Speaker A
عننا اللي هو المسج واللينك والاي ديز نتاكد انه هي معروضه عندي بالهيكسديسمل تمام طبعا انتم اكيد بتقولوا ايش هذا اللي ظهر عنا بالضبط يعني ليش هيك الفكره بس انا حكيت لكم انه هو بشر على اول عنصر موجود عندي تمام بالواتش بالنسبه للوتش
Speaker A
فهو رح يبلش بالتالي نيجي نعمل اللهم صل على سيدنا محمد ثواني بس عشان اشغل لكم اياه تمام ولو نحن حابين اي نشوف القيم تبعتنا بالديسيمال هنا بالواتش فنحن ممكن نعمل هيك نشيلها وهي ظهر عنا اللين بدايتها هي الال000 الاي ديز ظهرت عننا طبعا هي
Speaker A
القيمه بالهيكس ديسيمال فلما تحوليها لديسيمال بتظهر عنا بهذا الشكل هي الفكره كليتها تمام اي بس يا جماعه بدي احكي عن نقطه كثير كثير مهمه السكورز تبعتي لو جيت لعندي في عندي انا اربعه بايتس صح لانه كل عنصر موجود عندي بده يشغل مساحه الاربعه
Speaker A
بايتس ولنفترض انه هي السكورز تبعتي بدها تبلش من 0 ز اتش تمام 0 ز بايت بدي امشي لل هو 0ث اتش لانه 0 ز 0 ت 03 اتش هيك انا لو بدي احذف بدي احسب الاوفست تبعتها عشان عندي لما اشوفها بالميموري اشوف ايش اللي
Speaker A
بصير عن جد تمام طيب بالنسبه عندي للزيروز فهو ماخذ 10 بايضات فهو اذا هذه انتهت اكتب لكم عشان هيك نستوعب نحن بنحكي بشكل عام لو هذه بلشت من اي الزيرو زيرو بالهيكسديسيمال اكيد بما انه هي عندي اربع عناصر رح تنتهي عند ال0 ثلاثه برضه
Speaker A
بالهيكسديسيمل معناتها انا بتوقع انه هذه الزيرو سلسلست تبعتي رحت بتبلش عند 0 اربعه وبما انه بتعامل مع 10 بايتات اذا عشان اصل لل 10 حصل لزي دي اتش احسبوها طيب اذا هذه خلصت عند 0 دي اتش بيجي بعد
Speaker A
الدي اي اذا هذه بدها تبلش عند الزيرو اي اتش وبتاخذ سبع بايتات اذا انا متوقع انها راح تنتهي عند ال 14 ليش؟ لانه انا بوصل في الاخر لعند الاف بعدين ببلش من اول وجديد هي واحد والمسج رح تبلش عند مين؟ ال 15 اتش
Speaker A
انه هو بيشغل عندي انا عفوا الباترن راح يكون عندي ماشي لعند 14 اتش بينما المسج راح ينتهي عند 15 اتش اتمنى يا رب تكون ها النقطه كثير واضحه بالنسبه لكم وما فيها اي مشاكل عشان نبلش نعمل هلقيت عمليه
Speaker A
الديبجين الصحيحه ف لو اجينا الان نشيل بس ها المحايه كلها تمام ثواني طيب اييه معلش انا في عندي تعليقه بالجهاز بحاول احلها ثواني تمام بس عشان نكمل معلش كان جاهز شوي في تعليقه لو اجي بس عشان انا نسيت احكي احكي
Speaker A
على هي النقطه لما باجي هان تنسو يا بنات انه هي بالميموري رح تتقرا باللتل انديان يعني رح تظهر عندي اول حاجه 3ثه دي بعدين اثنين سي واحد بي صفر اي 7 بي 6 اي 5 اف اربعه اي طبعا انا بحكي على هذول كاملين
Speaker A
كيف بتيجي قراءه الارقام الاثنين مع بعض في الاي اي تمام ماشي ندخل الان على الاساس تبعنا ماشي ثواني ارجع هلا تمام يا بنات انا عشان النت في عندي ضعف فيه بدنا نكتب هالعاده قيم الريجسترات تبعتنا على شان نقرا قيمتها بسهوله وما
Speaker A
يصير عنا اي مشكله سي اكس دي ال اي اس اي والاي دي اي عشان ما يصير عننا مشاكل هي القيم تبعتهم المخزنه فيهم حاليا مبدئيا تمام ولو بدكم تجيبوها بالهيكسديسمال على شان تسهل علينا مثلا الدنيا بنلاقيها شبيهه بالموجودات
Speaker A
عننا هنا طيب اللهم صلي على سيدنا محمد هيه زي ما تطلعوا على الاي ال الاي ال هي عباره عن 20 ال عباره عن صفرين تمام السي اكس عباره واحد ص يعني هي نفس القيمه اللي نحن حكينا عنها ماشي اي اللهم صلي على سيدنا محمد هلقيت
Speaker A
بدنا نبلش نعمل البرنامج تبعنا اها لو عملنا هلقيت اف ان اف 10 ايش صارت قيمه العنصر موجود عندي في الاي ال بالوتش اطلعوا معي صارت قيمتها 5 اي وهو الخمسه اي فعليا فعليا عباره عن العنصر الاول من السكورز واللي قيمته هي
Speaker A
عباره عن 90 خلونا نجيب الميموري على شان نقدر نحن فعلا نقرا ونراقب اول باول شو اللي بيصير عننا من ويندوز بنروح على ويندوز من ويندوز بنزل تحت نختار ميموري خلينا نختار ميموري 1 اه اجت محل الريجسترز خلوني اضبط التنسيق وارجع لكم
Speaker A
اعمل بوز شوي ولو اجينا الان هي حليناها وكتبنا اند عشان نشوف بالضبط الموقع تبعها في الميموري كيف اطلعوا معي اشر على اول جزء موجود عندي بالسكور اللي هو عباره عن خمسه اي ونرجع للسكور عشان نفهمها كثير منيح تمام خلوني ارجع هون على الميموري واحد
Speaker A
ونيجي هان على السكورز اللي هي قيمه ال 90 لما بدي احولها بالهيكساديسمال بتتحول لخ اي هيني موجوده لخمسه اي لو جيتوا على ال 75 حتلاقوها 4 بيكسديسيمال ال 60 3 سي ورب سي اللي هي عباره عن ال 100 كملوا معي لما
Speaker A
نيجي على الزيرو اللي هي عباره عن خمس اصفار من نوع ورد ورد يعني بدي اخذ بتين يعني هي اول قيمه هي الاثنين تبعوني هي واحد هي ثلا هي اثنين عفوا هي ثلاثه هذول العنصر هي اربعه العنصر الرابع وهي العنصر
Speaker A
الخامس خلصنا هيك انا ايش الزيروز لو اجينا على الثانيه اللي هي عباره عندي على الباترن الباترن اول جزء موجود فيها هو عباره عن البايت صار عندي هي الجزء الاول التكرار الاول وهي عندي ايش التكرار الثاني اطلعوا معي هي التكرار الاول
Speaker A
والتكرار الثاني لكن كل عنصر يخزن في بايت فواحد اثنين حكينا اربعه هي اربع بايتات انحجزت لهم بعدين التكرار الثالث للي هو الاف الدبليكيشن ثلاثه بس حكينا بياخذ عندي انا تو بايتس وبالتالي صار في عندي نظام اف الموجوده عندي هنا ثلاث تكرارات هم هيك
Speaker A
اصلا الاثنين الاف والاف بتاجوا اصلا ورد عشان يتخزنوا فيها تمام بعدين انتقلنا للاب اثنين وحكينا لاب اثنين بتاخذ واحد اثنين ثلاثه اربعه خمسه والنال تيرمينتور اللي هو الزيرو عباره عن سته فلما بدي ابلش من هون هي اربعه سي اللي هي عباره عن
Speaker A
اللال 41 الاي 42 البي ال 20 لسبيس 32 الاثنين وزير النيرمنيتور عشان بعدها تبلش اللين يعني لو اجينا مره ثانيه اطلعوا معي كتبت لكم هيك مثلا انا بدي والله اللينك جاب لي اياها من البدايه الاي ثمانيه نرجع لو حكينا بدي الان تبعت اي شو اختار لكم
Speaker A
اختار لكم مثلا الباترن شايفين هي واحد اثنين هذول بدي اياهم كلهم السكرين شوتات هذه لكل شيء لكل اند بتعملوها تظهر لي في وين تظهر لي في التقرير تبعنا نكمل اذا انا نسخت قيمه السكورز اللي موجوده عندي وحطيتها على
Speaker A
ريجستر الاي ال وطلعت القيمه تبعتي اللي هي بتاشر على ايش هو مش حيخزن الكل قلت لكم بخزن اول قيمه وباشرها عليها بالرجستر عندي الموف هنا في فيها مشكله ليش؟ لانه السكورز من نوع البايت والاي ال اصلا هو بايت ففي عندي اي مشكله طيب ايش قصه
Speaker A
الشغله الثانيه ها اف ان اف 10 تخسرت القيمه عندي اللي هي عباره عن 64 اللي هي عباره عن الدي نرجع معلش للسكورز عشان نحاول نفهم ايش اللي صار هي اند السكورز اللي صار عندي انه تخزنت ال 64 هنا ايش
Speaker A
اللي صار انا عملت هنا ازاحه كاني حكيت له من السكورز الصفر اللي موجوده عندي امشي لي كمان بايت اثنين ثلاثه ها هي الصفر بايت اثنين هي امشي بايت اثنين اللي هو عندي بتيجي ال 100 يعني عشان اشرح لكم اياها اجيب لكم القلم اوضح هي عندي
Speaker A
انا الصفر اطلعوا معي هي عندي انا الصفر كاني حكيت له امشي الازاحه هي بايت الاول هي زائد واحد ثواني نكتب منيح امشي لي كمان ازاحه هي زائد بايت هي صار عندي ايش؟ اثنين بايت امشي لي كمان ازاحه هي صار عندي ايش؟
Speaker A
ثلاثه بايت اذا اصبحت القيمه تظهر عندي هي قيمه ايش بده ينتقل ياخذ القيمه المخزنه هان في السكورز زائد الثلاثه في الموقع سكورز زائد الثلاثه بدي ياخذ القيمه المخزنه وينسخها بالاي ال القيمه ايش 100 بالهيكس ديسم شو بتطلع اطلعوا معي على
Speaker A
الميموري طلعت عندي 64 وهيها على الوتش طلعت عندي 64 ولو بدنا نرجع ريجسترات لانه الريجستر عندي اختفى بدي اجي اعمل ثواني بدي اجي اعمل ليش راحت اصلا شاشه الريجسترز لانها اساسيه بدي ارجع خانه الريجسترز كده اه هيها اجت هان صارت عندي انا قيمه وين
Speaker A
نحن في البي ال ايش صارت 64 هذا كله بدي يظهر لي بالسكرين شوتات تمام طيب نرجع على ال هيك نحن يعتبر خلصنا بالميموري خلينا نروح على السي اكس اللينك نعمل اف انف 10 جديده طيب السي اكس حكت لي انه اللينك زائد
Speaker A
الاربعه روح لي على الموقع هذا خذ لي القيمه اللي فيه وخزنها بالسي اكس طيب السؤال هو ايش هي اللينث زائد الاربعه هي هلقيت هي اللينث نحن موجودين هنا عند اللينث ماشي يا جماعه اللينث من نوع الورد بدنا نركز نوع الورد يعني بشتغل على كل
Speaker A
عنصر له اثنين بايت يعني بدي امشي بالزائد دي ايش حكيت لكم بمشي بالضعف الاثنين ف بدون حكي كثير نشوفها على الميموري عشان نشرح ايش اللي صار بدنا نحكي هنا انه ها اللينكز ونمحي هي عشان ما يصير عندكم لخبطه
Speaker A
شوفوا اطلعوا معي هان صارت عندي انا لما نفذتها قيمه السي اكس هي عباره عن البي بي طيب شو هي بالضبط وينها ايش القيمه هي البي ثمانيه نرجع هان على الميموري على شان نشرحها ثواني بس عشان القلم نجيبه هي جبنا القلم مره ثانيه اطلعوا معي بدنا
Speaker A
نركز على شغله مهمه جدا اللينك تبعتي بدها تاخذ اثنين عشان تتخزن فيها يعني هي البدايه يعني هذه الاثنتين بمثلوا ال 1000 وهذول الاثنتين بمثلوا ال 2000 وهدول بيمثلوا 3000 طيب شو هذا عننا الثلاثه دي هذه شو نرجع هان هذه الليتل انديان مشينا
Speaker A
من ورا ما تتلخبطو هذه ضروري نركز فيها فكاني انا بحكي له ب نكمل بالميموري هنا انه انت هيك موجود عندك بتاشر لي على نقطه البدايه اللي هنا امشي الاثنين اثنين بايت اثنين بايت فهي نقطه البدايه حيجي هان هي
Speaker A
هذول اثنين بايت وحينتقل لهان هذول اثنين بايت فحياخذ هذول اللي هي صفر بي ثمانيه واللي هي موجوده عندي هنا بالواتش ولو اجيتوا كمان على الريجستر بس خلوني امسح هذول برجع باكد هذول كلهم بم يكونوا ظاهرين كسكرين شوتات لما بدكم تشتغلوا باللاب ورك
Speaker A
كل هي الحاجات والخطوات اللي انا بعملها بدها تكون موجوده عشان اكون فاهمه انه انتم عن جد فهمتوا هذا الشيء ونفذتوه صح بريجسترز بنلاقي هي الجزء اللي انا بدي اياه حلو تمام بالنسبه لما نكمل الان بالخطوه اللي بعدها اللي هي موف الدي ال والمسج زائد
Speaker A
واحد صارت عندي قيمه الدي ال هي عباره عن 41 اللي هي الا a لانه لما بدكم تمشوا عليها المسج هنا بدي امشي بت بايت واحد بتيجي عندي قيمه الا a اعتقد صارت عندي انا الصوره واضحه بالنسبه للموفل الاي اس اي
Speaker A
والاي ديز لو عملت اف ان اف 10 موف الاي اس اي والاي دي اه ايش اللي صار عشان نحن هيك ما نتعجب يعني من المطلوب بالنسبه لما عملنا يا جماعه للاي اس اي هو عباره عن اول عنصر من الاي
Speaker A
ديز ايش اول عنصر من الاي ديز اللي هو الموجود عندي هنا ولكن تخزن هنا بقيمه الهيكسديسم اللي نحن شايفينها تمام يعني انا لو اجيت هنا على الريجسترز بلاقي انه الاي اس اي صارت مخزن فيها قيمه الليتل انديان كامله هيها اللي هي موجوده عندي هي
Speaker A
بريجستر يا جماعه بتظهر بشكل طبيعي ولكن لو اجينا احنا هنا على الميموري وكتبناها كتبنا عنا الاي ديز رح تظهر مكتوبه باللت انديان بالعكس 3 دي 2 سي اي صفر اي وهكذا تمام وبعدها بنعمل الشيء الاخير اف ان في 10
Speaker A
اللي هي عباره عن الموف الاي دي اي الاي ديزائب يعني على الرجستر الاي دي اي الموجود عندي نروح على الريجسترز معلش الاي دي اي الموجود عندي لي قيمه الاي ديز زائد الاربعه معلش انا بحكي دي وورد دائما حسب قيمه البايت برجع بذكر عفوا حسب قيمه
Speaker A
الانترنسك داتا تايب بعمل الزياده فبالتالي ل بدي انتقل من هان لهان بيلزمني استخدم اربعه بايت فبالتالي رح تظهر القيمه هي بالليلتل انديان كما هي ما اعتقد اللاب ورك الثالث صعب يعني هو سهل ان شاء الله ما رح يغلبكم فنروح على اللاب
Speaker A
وورك الثالث ان شاء الله عشان نستكمل اللاب وورك هذا الثالث تزيز برضه اي وان شاء الله يعني ما رح نواجه فيه مشكله ويا رب ما يكون الفيديو هذا كمان طويل اي نكمل من عند الداتا انا عملت طبعا بلت كتبت
Speaker A
الكود عملت سيف عملت بلت اعطاني بلت سكسيدد عملت الديباج تمام عننا هنا عرفنا السكندز بير منت شو هذا كونستنت هذا السمبولك كونستنت ايش استخدمت فيه اليساوي طالما استخدمت اليساوي يعني عندي ايش قدره قدره اعمل ريديفاين واغير بعد هيك بنفس
Speaker A
الاليه استخدم المنتس بير اور استخدم الايش الايكوال معناتها ممنوع من عن باتن بالنسبه للاسمبلر اعمل ريديفاين بعد هيك تمام فال الفك الفكره من هذا التطبيق كليتو انا بدي اشوف الفرق ما بين البيانات المحجوزه بالذاكره والاسماء الرمزيه يعني حتلاحظوا الان انه هذول الكونستنتس
Speaker A
الموجوده عندي ما راح يكونوا لهم شيء في الذاكره هم بس موجودين كمساعده للاسمبلر انه مجرد ما يشوف هذول يستبدلهم زي ما هم كاسم يحط محلهم الرقم الموجود عندي ونعرف كيف نستفيد من التايب واللين اوف والسايز اوف تمام اي الان لو اجينا نحكي عن العمليه
Speaker A
الحسابيه ما انا قلت لكم بينفع نعمل اكسبريشن هذا الموجود نحط فيه اكسبريشن فكاني انا بحكي هنا السكند بير منت هي عباره عن 60 وضرب المنتس بير اور هي عباره عن 60 فانا بتعامل مع صارت السكندز بير اور هي عباره عن 3600 بس هذه الشغله اللي
Speaker A
بدنا نوضحها عشان كل عمليه استبدال تنحطها عننا والعدد 3600 فعليا بالهيكسديسيمال كيف رح يظهر عنا عشان ما نستغرب الشكل وهذه رح اخليها بيظهر عنا على شكل اي اللهم صل محمد صفر اي ليش حطينا صفر لانه بلشت بحرف واحد صفر اتش تمام خلينا نعمل
Speaker A
هاتال بلد عشان نعمل لد لازم نحط عند البريكين بوينت وهذه تنسوها يا جماعه ونعمل ديباج عفوا نعمل ديبجين مش بيلدين انا لخبطت المصطلحات طيب عندي هذول انا عشان اشتغلت على نفس الملف عادي بشيلهم بشكل طبيعي كانهم مش موجودين هي الاي ال البي ورجسترات الثانيه
Speaker A
تبعتنا تمام اي لو جينا الان نكمل على مصفوفه التمس تبعتنا وحكينا على التم سبايت برضه هذه ايش حكينا الهدف منها قلت لكم بعد ما نعرف المصفوفه تبعتنا بنستخدم التم سبايت هذه بشكل ضروري ليش على شان تساعدني في المساحه امور انتم
Speaker A
لما بتستخدموا قصه الكاونت السايز اوف او اللين اوف يفضل تكتبوها على شان احتساب المساحه يكون عندي صحيح فتم سبايت انا بحكي قديش عدد العناصر الموجوده عندي هذه كلها بقدر احلها بهي الطريقه قديش عدد العناصر الموجوده عندي اربعه ايش نوعكم اس
Speaker A
وورد الورد بتاخذ اثنين فبالتالي 5 في 2 المفروض التمس بايت ايش يتخزن فيها يتخزن فيها قيمه 10 وريحوا راسكم خلص طيب التمس كاونت هذه ايش معناها انه خذ لي قيمه التمس بايت اللي هي العشره وهدول كونستنت لحتى الان اقسم لي اياها على الاثنين
Speaker A
لتساوي خمسه اذا اصبحت قيمه التمس كاونت الموجوده عندي هي عباره عن 5 وهدول الاثنين كونستنت وعرف لي انه الاورز للسكند هذا ايش؟ هذا مش كونستنت يا جماعه هذا بل من نوع الدي ورد يعني بياخذ اربعه بايت وبده يخزن فيه قيمه شو اللي هو السكند بير
Speaker A
اور اول اللي هو السمبول الكونستنت اللي موجود عندي وهذا راح يكون له هدف عشان نشوف ايش التاثير بصير عندي بالذاكره خلوني اشيل هذول عشان المنظر طيب ونبلش باول كود موجود عننا عشان نفهم الدنيا وايش اللي فيها حلو ونروح هيك
Speaker A
نعمل اف ان اف 10 موف الاي اكس سكند بير اور واضحه جدا انا الاسمبلر اول حاجه رح يعملها رح يشوف السكند بير اور يروح على الدوت داتا يقول لك سكند بير اور اه والله انا مخزنه عندي انه هذه توجيه شيلها وحط محلها 60 اذا
Speaker A
صارت الاي اكس القيمه اللي موجوده فيها هي عباره عن 60 ولو جيت على الريجستر رح اشوف انه تخزن عندي انا ال اللي هي اي واحد صفر هذه بالهيكسديسيمال معناتها الرقم اللي هو سكن سكندير اور هي عباره عندي عن
Speaker A
سكندر اور هي عباره عن ايش حكينا الق سكند بير اور عفوا سكند بير اور هي عباره عن 3600 انا غلطت طيب النقطه الثانيه اللي هي عباره عن موف الاي بي اكس مع التمس [تنحنُح] بايت لو جينا عملنا الاف ان في
Speaker A
10 التمس بايتس ايش حكينا بتطلع بتطلع 10 فهو تلقائي تلقائي الاسملر رح يشطب بقيمه التمس بايت ويحط 10 ويخزنها في الاي بي اكس عشان هيك صارت قيمه الاي بي اكس الموجوده عندي وينها صفر صف الاي ولو عملتوها بالكسديسمال هذه
Speaker A
للديسمال بتطلع عندكم القيمه 10 الخطوه اللي بعدها لو عملنا اف ان اف 10 اطلعوا معي صارت عندي قيمه الاف ان اف 10 ما عملناها ايش اللي مخزن عندي صار بالاي سي اكس صارت مخزن عندي انا صف اللي هي
Speaker A
قيمه الخمسه ليش لانه لما اجيت وانا عملت التمس كاونت التمس كاونت هنا حكينا ايش هي عباره عن 10 على 2 خ فهو شال قيمه الخمسه مباشره وحطها بالاي سي اكس فظهرت القيمه بالشكل هذا طيب موف الاي دي اكس اللينث
Speaker A
اوف التمس اللين اوف ايش معناها قلنا معناها قديش عدد العناصر الموجوده بالتمس كم عنصر عندي واحد اثين 3 ا خ اذا انا متوقع النتيجه رح تتخزن بالاي دي اكس هي شو هي خمسه خلينا نتاكد فعلا ايش صار في الاي دي اكس القيمه خمسه
Speaker A
ممتاز طيب نروح للخطوه اللي بعدها موف الاي اس اي السايز اوف التمس السايز اوف ايش حكينا معناها معناها انه قديش انتم عدد العناصر اللي موجوده خمسه كل واحد منكم قديش محتاج لحتى يتخزن اثنين خ باث 10 خلينا نتاكد
Speaker A
ايش صارت قيمه الاي اس اي هي عباره عن ال a فعلا عباره عن قيمه العشره ممتاز اخر حاجه موف الاي دي اي للتايب قلت لكم التايب هذه سهله التايب ايش تبعك يا تمس التايب تبعك هو اسورد بس انا كاسبلر بحكي
Speaker A
لك بفهمها هيك قدش قصدك بدك احجز من الذاكره قال لك اثنين اذا انا متوقعه انه الاي دي اي ايش يتخزن فيها اثنين نشوف صارت اثنين ولا لا ممتاز اذا هذا هو الشكل اللي نحن وصلنا له تمام يا جماعه يعني اي
Speaker A
ان شاء الله ما يكون في عننا مشكله بس لو اجينا هنا على الميموري عشان نفهم اكثر ونعمل للتمبس اند وهذه برضه لازم تلزمني انا كل شيء بعلق بالميموري بيلزمني هالايثا لاحظوا معي ايش اللي ظهر عننا هنا نجيب القلم مشان نحن نقعد الايتا نحلل اول
Speaker A
حاجه بدي اياكم تفهموها انه انا بدي اخزن كل عنصر عندي باثنين بايت لاني بتعامل مع الاسورد يعني بدي احجز عشر عر بايتات من الذاكره وهذول فعلا من البدايه للنهايه عباره عن 10 تمام يعني كل واحد ب يتخزن على شكل شو على شكل اثنين بايت السالب
Speaker A
خمسه تبعتي لما بدكم تيجوا تحولوها للهيكسااديسيمال فهي بتاخذ عندكم اف بي تمام والافصار في عندي هي التخزين اللي نحن شايفينه تمام اف بي اف كملوا معي صفر صفر للصفر صفر سي وهكذا بنكمل بالاخر تمام ماشي اي لو جيت وانا حاكيه كمان بدي اشوف
Speaker A
شوف اي كتبت هنا جينا هان على الوتش حلو وكتبنا عننا الاورز ثواني تمام طلع بخزنه عادي المهم كتبنا عننا الاورز مع السكندز الاورز سكندز هي الموجوده عندي هان اللي هو الفاريابل اللي عرفته هان بالوتش وطلعت النتيجه تبعته فعلا بالهيكساديسيمال لانه 3600 اللي بدي
Speaker A
اعرفها بالهيكساديسمال بتطلع صف اي واحد صفر وهيها طلعت زي ما هي موجوده عندي هنا يعني نحن شغالين صح تمام اي فيا جماعه الشغل تبعنا صحيح جدا وفي عندي اي مشكلات اي الحمد لله وهيها اطلعوا معي ال الواحد صف اي اللي هي عباره عن اور بن سكندز يعني
Speaker A
هل شفنا اي وجود ديروا بالكم هذول بس الاثنين اللي يعتبروا موجودين عندي انا مخزنين بالميموري يعني هل شفنا اي ظهور للسكندز برنت او المر اور او اي حاجه ثانيه لا بس ظهر عندي التمس وظهر عندي الاورز سكند هي الشغل تبعنا كاملا مكملا
Speaker A
طيب خلينا نجرب نعمل اعاده تعريف للاكيو يعني مثلا لو جينا كتبنا المنتس بير اور هيك اعمل لكم شويه طيب من باب التسهيل هيني كررت لكم اياها منتس بير كيو بس نحن بنغير طبعا القيمه تبعتنا مثلا خليها 90 ونعمل كنترول اس
Speaker A
خلينا نيجي نعمل بلد عشان نشوف هل فعلا حيقبل اعمل ريديفاين او لا شوف ايش بصير في عمليه البلدين هنا ايوه هي الايرورات اللي انا بدي اياها هذه الايرورات اللي انا المفروض تطلع لي على شان نستوعب انه الشغل تبعنا مش صح وبكده اعزائي بنكون
Speaker A
وصلنا لنهايه هذا اللاب الموجود عننا اتمنى ان شاء الله يكون شرح كان ممتاز بالنسبه لكم وبرجع باكد لانه في عندي بعض التسليمات فيها مشاكل بدي اياكم لما بدكم تيجوا تكتبوا الكود اول حاجه بدي كومنت هنا في اسمكم ورقمكم الجامع وضروري ضروري
Speaker A
هذا يظهر بالسكرين شوت تمام اذا هي اول نقطه بتلزمني بالتسليم الاسم والرقم الجامعي في كومنت بعد هيك بيجي الكود سكرين شوت وانتم بتعملوا بيلدين سكرين شوت للكود بعدين لما بنعمل ديباجين سكرين شوت للميموري وكل حاجه بنكتبها بالميموري والتغيرات تبعتها وبدي تشرحوا لي وين ببلش
Speaker A
البدايه وين بينتهي تبع كل موجود عندي او تبع كل حاجه بنعرفها وتوضحوا لي لو صار مثلا عندي حاله الليتل اندي كمان بدي يتصور الريجسترز وكل حاله بتصير ريجسترز والواتش انا عارفه رح يطلع في كبشه صور كده بس مطلوبه منكم لانه رح يكون في
Speaker A
اللابات القادمه تخفيف على الصور بس هذه اساسيه عشان اشوف قديش مدى استيعابكم تمام وبكده بنكون وصلنا لنهايه الشيء واخر جمله اخيره رجاء رجاء لما تسلموني الملف اكتبوا لي شرح انه اي مثلا بالذات في موضوع ميموري بالذات في احتساب شفتوا انا كيف
Speaker A
كنت احتسب لكم الحجم تبع البيانات اللي راح يتاخذ بميموري هذا ضروري ينكتب كشرح انه كيف اكم الاشياء اللي عرفناها بالداتا بدها تاخذ مساحه من الميموري بدي تشرحوا لي ايش اللي شفناه بالميموري ايش التغيرات اللي صارت على الريجسترز وبس يعني هي مجرد
Speaker A
جون بسيطه ولكن بتفرق معي انها تعرفني هل انتم فعلا فاهمين او لا يعطيكم العافيه اشوفكم في اللعبه الجاي مع السلامه M.
Topics:لغة التجميعAssemblyBYTE PTRمؤشرات الذاكرةMOVZXVisual StudioDebuggingنافذة Watchx86المعالج الدقيق











