**Lab2 - Part 1 — Transcript & Summary | SozAI**
Source: https://sozai.app/transcript/i-can-t-create-a-meaningful-slug-from-lab2-part-1-alone-since-the-title/

الجزء الأول من اللاب الثاني في معمل الأسمبلي: تعريف البيانات والثوابت البسيطة، وأنواع البيانات مثل البايت والورد والإشارة، وكيفية حجز الذاكرة وتخزين القيم.

## Key Takeaways

- البتات نفسها لا تتغير، لكن تفسيرها (موقّع أو غير موقّع) يحدد القيمة.
- اختيار نوع البيانات يحدد حجم الذاكرة المحجوزة ونطاق القيم الممكنة.
- المصفوفات تُخزَّن في بايتات متتالية، والوصول لعنصر يتم بحساب الإزاحة.
- النصوص تُمثَّل كحروف مرمّزة برموز ASCII داخل الذاكرة.

## What the video covers

- مقدمة للاب الثاني من معمل الأسمبلي بعنوان Defining Data and Simple Constants، ومراجعة سريعة لما تم في اللاب الأول.
- شرح كيف يتعامل الكمبيوتر مع البيانات كسلسلة من البتات (صفر وواحد) دون فهم المعنى البشري للأرقام والنصوص.
- توضيح أن نفس مجموعة البتات قد تُفسَّر كعدد موجب أو سالب حسب نوع البيانات المعرَّف.
- شرح أنواع البيانات الأساسية: BYTE (ثمانية بتات)، WORD (بايتان)، والنسخ الموقعة SBYTE وSWORD وSDWORD.
- توضيح مفهوم التعريف (Declaration) وإسناد القيمة (Initialization) باستخدام أمثلة مثل STUDENT\_AGE وROOM\_NUMBER وBALANCE.
- شرح الفرق بين الأعداد الموجبة والسالبة في التمثيل الثنائي وطريقة الـ Two's Complement.
- عرض أمثلة على تحويل الأعداد من الهيكساديسيمال إلى الثنائي وتخزينها في الذاكرة بترتيب البايتات المتتالية.
- شرح المصفوفات وكيفية حساب الإزاحة (Offset) للوصول إلى عنصر معين باستخدام حجم النوع.
- مقدمة لتخزين النصوص (Strings) كمصفوفات من الحروف وترميزها بجدول ASCII.
- الفكرة الجوهرية: التفسير هو ما يحدد معنى البتات، وفهم أنواع البيانات أساس لبقية اللاب.

## Chapters

1. 00:00 مقدمة اللاب الثاني وأهدافه
2. 02:25 تمثيل البيانات بالبتات والتفسير
3. 06:23 أنواع البيانات الأساسية: BYTE وWORD
4. 12:26 الأعداد الموقعة والتمثيل السالب
5. 20:12 التعريف والإسناد للمتغيرات
6. 31:34 المصفوفات والإزاحة في الذاكرة
7. 47:50 النصوص وترميز ASCII

Answers

## Questions about this video

ما الفرق بين نوع BYTE ونوع WORD؟

البايت يحجز ثمانية بتات، بينما الورد يحجز بايتين أي ستة عشر بتاً، مما يسمح بتخزين أرقام أكبر. يُختار النوع بحسب حجم القيمة المطلوب تخزينها.

كيف يُفسَّر نفس مجموعة البتات كعدد موجب أو سالب؟

يعتمد التفسير على نوع البيانات: النوع الموقّع (SIGNED) يعامل البت الأعلى كإشارة، بينما النوع غير الموقّع يعامل البتات كقيمة موجبة فقط. لذلك البتات الواحدة قد تمثل 241 أو -15.

كيف يصل البرنامج إلى عنصر معين داخل مصفوفة؟

يحسب البرنامج الإزاحة (Offset) بضرب رقم العنصر في حجم النوع بالبايت، ثم يضيف الناتج إلى عنوان بداية المصفوفة للوصول إلى الموقع المطلوب.

## Full Transcript — Download SRT & Markdown

00:02

Speaker A

السلام عليكم وأهلاً وسهلاً فيكم في اللاب الثاني من معمل الأسمبلي، اللي راح يكون بعنوان "Defining Data and Simple Constants".

00:11

Speaker A

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

00:28

Speaker A

طبعاً هذا اللاب راح يمهد لأشياء كثيرة، وأنا مهدت له باللاب السابق. في اللاب السابق تعرفنا على لغة الأسمبلي، على الريجسترز، وعلى الـ CPU وكيف يشتغل وكيف بينفذ الأوامر. بس اليوم راح ننزل لمستوى أعمق شوي ونشوف كيف البيانات نفسها بتتخزن بالذاكرة، وهذا اللي مهدت له بآخر اللاب الأول.

00:42

Speaker A

تمام؟ موجودة في غرفة. ولنقل إنه الغرفة هاي درجة حرارتها سالب خمسة. حلو؟ ورقم الغرفة هو 4096.

00:51

Speaker A

فخلونا نتخيل مثلاً إنه إحنا كتبنا برنامج، هذا البرنامج بيحكي إنه عندنا طالبة عمرها، لنفترض، 21 سنة. تمام؟ موجودة في غرفة، ولنقل إنه الغرفة هاي درجة حرارتها سالب خمسة. حلو؟ ورقم الغرفة هو 4096.

01:09

Speaker A

يا إما صفر يا إما واحد. حلو؟ طيب. إذا أنا ككمبيوتر بس بتعامل مع نظام البتات.

01:15

Speaker A

أنا كمبرمجة ما بفهم شو يعني عمر؟ شو يعني درجة حرارة؟ وشو يعني رقم غرفة؟ أو حتى شو يعني غرفة؟ بس الكمبيوتر ما بيفهم كلمة عمر، ولا بيفهم شو يعني رقم سالب أو حتى موجب بنفس الطريقة اللي إحنا بنفهمها. هو بيتعامل مع نظام البتات، يعني إما صفر إما واحد. حلو؟

01:31

Speaker A

فكل الأسئلة هاي اللي أنا طرحتها. هي اللي إن شاء الله راح نجاوب عنها بهذا اللاب.

01:35

Speaker A

طيب، إذا أنا ككمبيوتر بتعامل مع نظام البتات، كيف بدي أعرف إنه مجموعة البتات هاي بتمثل عدد موجب أو سالب؟ طب كيف بدي أعرف من وين بتنتهي قيمة الفاريبل الأول وبتبلش قيمة الفاريبل الثاني؟ أو حتى كيف بدي أعرف إنه هاي البيانات الموجودة عندي هي حتى رقم أو حرف؟

01:54

Speaker A

اممم. نفس الحاجة. قبل ما نبلش إحنا راح نشتغل على نفس الفورم أو نفس التمبليت اللي بلشنا فيه في اللاب الأول. فاللي هو شفتوا كيف كتبنا أول حاجة دوت داتا بعدين دوت كود وإلى آخره.

02:07

Speaker A

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

02:31

Speaker A

لو كتبنا هذا البت اللي موجود عندنا الآن هل هذا البت أنا بعتبره الرقم 241 ولا بعتبره سالب 15؟ عارفين هذا لشو بيرجعنا؟ بيرجعنا لمادة اللوجيك اللي هي التصميم الرقمي.

02:49

Speaker A

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

03:09

Speaker A

مش حأحكي لأنه هذا راح يرجعنا لـ لـ اللوجيك وكيف نتعامل مع البتات. فهذا الفكرة هو الخيط اللي بيربط كل أجزاء اللاب. تمام؟ فالفكرة يا جماعة اللي بدنا نفهمه الآن إنه في عندي أنواع مختلفة من البيانات. حلو؟ طيب.

03:27

Speaker A

نفس الشي. قبل ما نبلش، إحنا راح نشتغل على نفس الفورم أو نفس التمبلت اللي بلشنا فيه باللاب الأول، فاللي شفتوا كيف كتبنا أول شي dot data، بعدين dot code، وإلى آخره. هي الأشياء أساسية عندنا.

03:54

Speaker A

ولو كتبنا مثلًا روم نمبر وورد 4096 أو حتى امم كتبنا نفترض مثال بالانس امم من نوع اس وورد وحطيناها بالسالب ب- سالب 1000. حلو؟ لما نيجي نمسك الاستيودنت ايدج بايت 21. كأني أنا هنا شو بعمل؟ كأني أنا هنا بحكي للاسمبلر تعالي يا اسمبلر. روح

04:18

Speaker A

وندخل على أول جزئية موجودة عندي: الـ Intrinsic Data Types. فأول شي خلينا نسأل حالنا سؤال: لو كتبنا الرقم 1111 1111 (سوري على الخط بس مش مشكلة)، لو كتبنا هذا البت اللي موجود عندنا الآن، هل هذا البت أنا بعتبره الرقم 241 ولا بعتبره سالب 15؟ عارفين هذا لشو بيرجعنا؟ بيرجعنا لمادة اللوجيك، اللي هي التصميم الرقمي.

04:35

Speaker A

بالبايت هذا اللي حجزته بالذاكرة هي رقم 21. هي كل الفكرة. حلو؟ نفس الحاجة لو أنا كتبت ااه روم نمبر مثلًا لو أجينا وكتبنا إنه في عندي أنا روم بدون نمبر كتبنا مثلًا إنه رقم الغرفة اللي إحنا بنشتغل عليها ااه من نوع

04:54

Speaker A

فالفكرة إنه، المفاجأة، هذا الرقم فعلياً ممكن يكون الاثنين. يعني البتات نفسها ما تغيرت، لكن تفسيرنا لها تغير. وبت واحد ممكن يعمل شقلبة للرقم كامل، ممكن هذا البت يخليلي الرقم 241، ويخليلي الرقم سالب 15. بس الشطارة تعرفولي هذا شو. مش ححكي لأنه هذا راح يرجعنا للوجيك وكيف نتعامل مع البتات.

05:14

Speaker A

لشو بلشنا نمهد؟ لأنواع الداتا تايبس الموجودة عندي. يعني كأني بحكي إنه البايت الواحد بيحجز ايش؟ بايت. البايت أصلًا عبارة عن كام؟ عبارة عن ثمانية بت. وهذه معلومات بديهية إحنا بنعرفها من سنوات الدراسة الأولى. فكأني حجزت ثمانية بت. بس

05:30

Speaker A

فهذه الفكرة هي الخيط اللي بيربط كل أجزاء اللاب، تمام؟ فالفكرة يا جماعة اللي بدنا نفهمه الآن إنه عندي أنواع مختلفة من البيانات، حلو؟

05:40

Speaker A

وبده يخزن فيه الـ 4096 اللي موجودة عندي هان كقيمة. طيب. إذًا في عندي أنا نوع البايت. تمام. إيه، وفي عندي نوع الورد لحد الآن هاي الحاجات اللي إحنا أخذناها.

05:54

Speaker A

طيب، لو أخذنا مثال نشرح عليه أنواع البيانات، وكتبنا: STUDENT\_AGE (اعتبروا كلمة STUDENT\_AGE هيك لأنها اختصار)، كتبنا STUDENT\_AGE BYTE، وحطينا STUDENT\_AGE BYTE 21. حلو؟ وكتبنا مثلاً ROOM\_NUMBER WORD 4096، أو حتى نفترض مثال BALANCE SWORD -1000. حلو؟

06:12

Speaker A

سميتها من نوع الـ اس وورد. اعتبروا إنه أنا في عندي أنا هنا فاريابل من نوع الـ اس وورد وحطيت القيمة تبعتي هي السالب 1000.

06:23

Speaker A

لما نيجي نمسك الـ STUDENT\_AGE BYTE 21، كأني هنا بعمل شو؟ كأني هنا بحكي للأسمبلر: تعالي يا أسمبلر، روح على الميموري اللي موجودة عندي، نفترض هي الميموري، بروح بحكي له: روح على الميموري وهي يا أسمبلر، احجز لي مساحة قدرها بايت واحد بس من الذاكرة، تمام؟ وسمّيلي إياه وأنت بتأشر عليه، سمّيلي إياه STUDENT\_AGE، والقيمة اللي بدك تحطلي إياها بالبايت هذا اللي حجزته بالذاكرة هي رقم 21. هي كل الفكرة. حلو؟

06:34

Speaker A

الاس وورد كأني أنا بحكي له ساين، ساين وورد. بتتذكروا الساين والـ انساين؟ نفس الحاجة. الساين وورد معناتها إنه في عندي أنا بت، هذا البت لو كان واحد معناتها إنه أنت ساين، يعني بدي أشوف أنت كيف قيمتك صح؟ يا حتكون بوزيتيف يا حتكون نيجاتيف. وفي

06:54

Speaker A

نفس الشي، لو أنا كتبت مثلاً ROOM\_NUMBER، لو أجينا وكتبنا إنه عندي روم، بدون نمبر، كتبنا مثلاً إنه رقم الغرفة اللي إحنا بنشتغل عليها من نوع الـ WORD، تمام؟ ونوع الـ WORD هذا وبدنا نخزن قيمة 4096، كأني برضه بحكي للأسمبلر: تعالي يا أسمبلر، روح لي على الميموري، خذ لي من الميموري مساحة اثنين بايت. اه هلأ بلشنا نمهد.

07:09

Speaker A

سالبة. طيب، كيف تتم تخزينها هاي بالذاكرة؟ نفس الحاجة يا جماعة، عشان كانت عندك الساين، أنا عندي إيش؟ عندي وورد، طالما عندي وورد أنا إيش باخذ؟ باخذ اثنين بايت، إذًا حروح على الميموري أحكي لها بدي أحجز اثنين بايت.

07:23

Speaker A

لشو بلشنا نمهد؟ لأنواع الداتا تايبس الموجودة عندي. يعني كأني بحكي إنه البايت الواحد بيحجز إيش؟ بايت. البايت أصلاً عبارة عن كم؟ عبارة عن ثمانية بت، وهذه معلومات بديهية إحنا بنعرفها من سنوات الدراسة الأولى. فكأني حجزت ثمانية بت، بس في قيم ما بتكفي إني أخزنها بالبايت الواحد، فبنستخدم النوع الثاني من أنواع الداتا تايب، اللي هو نوع الـ WORD، اللي بيحجز عندي اثنين بايت من الميموري، وبده يخزن فيه الـ 4096 اللي موجودة هان كقيمة.

07:42

Speaker A

بتتذكروا أيام اللوجيك شو كنا نعمل؟ كنا نحكي لما يكون عندي ثمانية بت يعني اثنين أس ثمانية قديش بيطلع عندي؟ بيطلع عندي 200 و56.

07:56

Speaker A

طيب، إذاً في عندي أنا نوع البايت، تمام، وفي عندي نوع الورد. لحد الآن هاي الحاجات اللي إحنا أخذناها. يعني اللي استوعبناه من هدول الشغلتين اللي لحد الآن اشتغلنا عليهم، إنه نوع البيانات اللي موجود عندي، بدي أحدد قد إيش الحجم التخزيني اللي بدي أحجزه من الميموري.

08:14

Speaker A

بس لأنه إحنا في البرمجة بنبلش من الصفر فصار الرينج تبعي للبايت من الصفر لـ 255.

08:22

Speaker A

وكمان لو أخذنا مثلاً قيمة اللي هي سالب 15، أو قلنا البالانس تبعتي سميتها من نوع الـ SWORD، اعتبروا إنه أنا عندي هنا فاريابل من نوع الـ SWORD وحطيت القيمة تبعتي هي السالب 1000.

08:29

Speaker A

تمام؟ لما بدي أدخل عندي على الأنس بايت، مجرد ما أشوف الأس على طول استوعب إنه أنا بتعامل مع ساين. يعني حيكون في عندي قيمة بوزيتيف أو قيمة نيجاتيف.

08:39

Speaker A

شوفوا معي، حطيت قيمة سالبة. يعني أنا في الأول والمثالين كتبتهم إياهم كنا شغالين على قيمتين موجبات. طب إيش يا رغد قصة الـ SWORD؟ أكيد بتسألوا حالكم هذا السؤال. الـ SWORD كأني أنا بحكي له SIGNED WORD، بتتذكروا الـ SIGNED والـ UNSIGNED؟ نفس الشي. الـ SIGNED WORD معناتها إنه عندي بت، هذا البت لو كان واحد معناتها إنه أنت SIGNED، يعني بدي أشوف أنت كيف قيمتك صح؟ يا حتكون بوزيتيف يا حتكون نيغاتيف. وعندي كمان الـ SBYTE، وعندي الـ SDWORD، وراح أشرحلكم إياهم كمان شوي بالتفصيل. إذاً أنا هنا بتعامل مع SIGNED، مع قيمة SIGNED، يعني يا بتكون موجبة يا بتكون سالبة.

08:51

Speaker A

طب سؤال. من السالب 128 لـ 127 كم من الأعداد؟ ليش فوق في البايت حكينا إنه أنا بخزن 256 عدد؟ الرينج تبعها من صفر لـ 255. هل هذا معناه في الأنس بايت اختلف الموضوع؟ بحب أحكي لكم لا. اللي صار إنه أنا كأني جبت

09:08

Speaker A

طيب، كيف بتتم تخزينها هاي بالذاكرة؟ نفس الشي يا جماعة: عشان كانت عندك الـ SIGNED، أنا عندي إيش؟ عندي WORD. طالما عندي WORD، أنا إيش باخد؟ باخد اثنين بايت. إذاً حروح على الميموري أحكي لها بدي أحجز اثنين بايت. الاثنين بايت هدول إيش الفرق فيها؟ إنه ممكن أخزن قيمة تكون سالبة، أو ممكن القيمة تكون موجبة. تمام؟ ماشي.

09:19

Speaker A

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

09:25

Speaker A

الآن إحنا حكينا إنه أنا بتعامل مع الـ BYTE، الواحد بايت، هو عبارة عن كم؟ ثمانية بت. تمام. الثمانية بت هدول، بتتذكروا أيام اللوجيك شو كنا نعمل؟ كنا نحكي: لما يكون عندي ثمانية بت، يعني اثنين أس ثمانية، قديش بيطلع عندي؟ بيطلع عندي 256. 256 شو؟ 256 نمط مختلف، لأنه ثمانية بت، البت الواحد ممكن يحتمل قيمة صفر، وممكن يحتمل قيمة واحد. طب ما أنا عندي ثماني بتات، وكل بت فيهم ممكن يحتمل قيمة الصفر أو الواحد، فمثلاً عندي كم احتمال؟ عندي 256 احتمال. بس لأنه إحنا في البرمجة بنبلش من الصفر، فصار الرينج تبعي للبايت من الصفر لـ 255.

09:40

Speaker A

انتقلنا لحاجة اسمها الوورد، الوورد قديش بتحجز مساحة من الميموري؟ اثنين بايت، لساتنا ايش؟ في الشغل الكيوت.

09:47

Speaker A

والبايت لحاله بخزن فيه قيم UNSIGNED، يعني ما عندي اعتبار لموضوع أنت بوزيتيف أو نيغاتيف. تمام؟ لما بدي أدخل عندي على الـ SBYTE، مجرد ما أشوف الـ S على طول أستوعب إنه أنا بتعامل مع SIGNED،

10:06

Speaker A

المفروض إنه يا جماعة بنبلش من الصفر لحد ما نوصل للـ 65535، حلو؟ طيب، ننزل للجزء اللي بعده، أس، طالما شفنا أس إذاً أنا بتعامل مع ساين، عندي أس وورد. يعني الرينج تبعي برضه حيتقسم للنص، نص بخزن فيه موجب ونص بخزن

10:23

Speaker A

فيه سالب. برضه أنا لسه الاثنين بايت بالنسبة لي حاجة هينة، أنا بدي أخزن قيم أكبر من هيك، مرات أنا برنامجي بيكون أكبر، فبيلزمني أخزن قيم أكبر، فانتقلنا لحاجة أربعة بايت، لمين؟ للدي وورد. نفس الشيء أهم شيء حيكون ناقص الدي وورد

10:37

Speaker A

بالنهاية، فايش أعطيناها؟ أعطيناها قيمة الساين. تمام؟ وهنا ايش بتحجز؟ طبعاً أنا ركزوا معي بتعامل مع أربعة بايت.

10:47

Speaker A

أكم بت البايت الواحد؟ ثمانية بت، فكأني بحكي ثمانية بعدد البايتات الموجودة عندي، ثمان بتات بأربعة بايت، إذاً 32 بت.

10:57

Speaker A

إذاً أنا كأني بحكي عن اثنين أس 32، أكم صار الرينج تبعي؟ طبعاً ناقص واحد عشان بدي أبلش من الصفر، صار الرينج تبعي هذا، مش حأقرأه لكم إياه.

11:08

Speaker A

هو هيك. وبعدين عندنا نوع لطيف لذيذ كذا اسمه الكي وورد. الكي وورد بيحجز لي ثمانية بايت من الذاكرة. طبعاً ثمانية بايت زي ما قلنا بتحكوا ثمانية بثمانية بيطلع عندي 64 بت، وهي الـ موجودة عندي، طبعاً في عندي نوع

11:25

Speaker A

مش كثير صراحة حنرجعله. ولكن اسمه الريال فور أو الريال إيت، من اسمه ريال فور فهو بيحجز لي فور بايتس, الريال إيت بيحجز لي إيت بايتس. إيه, إيش الفكرة الأساسية منه, عشان أحكي لكم إياهم, إنه هم مخصصين لتمثيل أعداد

11:42

Speaker A

بالفصلة العشرية, اللي بنسميها الأعداد الحقيقية. هي أعداد حقيقية, ولكن بشكل رئيسي بنعتمد فيها على الأعداد بالفصلة العشرية, ومش الأعداد الصحيحة العادية اللي إحنا متعودين عليها, تمام؟ فالفكرة, برجع وبكرر, تذكروا دائما إنه التايب اللي أنتم بتختاروه, كأنه بيحكي للأسيمبلر قديش بدك إياك تحجز لي مساحة من

12:01

Speaker A

الذاكرة. فهو ما بيوقف, الـ الـ يعني أنا, مش كأني بـ بحكي إنه عدد البايتس هذه حتختلف في الـ في كيفية القراءة, لا, هي بس كأني ببلغ الأسيمبلر إنه بس احجز لي هذه المساحة من الذاكرة. أنا ممكن أخزن رقم بالبايت, وأخزنه بالوورد, ما رح تختلف

12:17

Speaker A

آلية القراءة, لكن اللي رح يختلف, قديش أنا حجزت له مساحة من الميموري, تمام؟ بس هي الفكرة كلها اللي إجتني.

12:24

Speaker A

ماشي يا جماعة. إيه. بس خلينا نفكر إنه بسؤال كثير مهم. وأكيد خطر على بالكم, وهيو خطر على بالي أنا برضه, إنه كيف ممكن أختار النوع المناسب؟ كيف ممكن أختار نوع الداتا تايب المناسبة؟ فـ خلينا نفكر فيها من منظور تصميم نظام

12:44

Speaker A

حقيقي, مثلا, إنه لو أنا بدي أعمل نظام لتسجيل درجات, نسجل درجات, حلو؟ هل منطقي إنه أنا درجة, يعني أنتم بتحكوا عن الدرجة إن طخت, بدها تكون رقمها 100, صح؟ هل منطقي أخزنها بكيورد, بثمانية بايتس؟ لا, حجم كثير كبير. أنا بيهمني دائما إنه أقلل

13:02

Speaker A

قديش بأحجز مساحة من الميموري. حلو؟ لأنه كل ما قللنا قديش بنحجز مساحة من الميموري, كان عندي كفاءة أسرع بالشغل.

13:10

Speaker A

فأنا بيهمني الإفيشينسي. فعشان هيك, مش حتزبط معي. برضه لو عندي درجة حرارة, سالب 15, هل درجة الحرارة سالب 15, منطقي أحطها بالبايت؟ ليه؟ لا, ليش؟ لأنه أنا بتعامل مع قيمة سالبة, والقيمة السالبة تتطلب مني إني أنا أخزنها بالأس بايت. شوفوا, رغم

13:28

Speaker A

إنه الاثنين بيتعاملوا مع ون بايت، ال- ال- بايت والاسبايت الاثنين بيحجزوا ثمانية بت من الذاكرة، إلا إنه يا جماعة طريقة تفسير الاسيمبلر لل- السالب 15 لو كتبتيلي إياها مثلًا لما تحولوها لباينري، لو كتبتيلي إياها السالب 15 وخزنتيها بالبايت رح يقرأها رقم مختلف تمامًا.

13:48

Speaker A

شفتوا لما أول نشاط أعطيتكم إياه؟ هل هو 241 أو سالب 15؟ رح يقرألي إياها 241 لما يخزنها بالبايت. في حين لو خزنتها بالاسبايت رح تنقرأ سالب 15. فهمتوا علي؟ عشان هيك ضروري جدًا نكون واعيين ومدركين لشو أنا بدي أختار. شو نوع البيانات اللي

14:06

Speaker A

أنا بدي أخزنها؟ هل البيانات تبعتي فيها قيم موجبة أو سالبة؟ معناتها بدي أختار الاس. الاس أساسية. طب قديش حجمها؟ حسب الحجم تبعها بختار تكون اسورد. إيه تكون اسديورد، تكون اسبايت. تمام؟ فمهم جدًا الدقة عندي في هذا الموضوع. يعني مثلًا

14:24

Speaker A

عدد الطالبات في مجموعة صغيرة بيناسبوا إنه أنا أحطه في بايت إذا كان عددهم ضمن رينج صفر لـ 255. لو أحكي عن مجموعة بسيطة مثلًا من 50 بنت.

14:34

Speaker A

إيه درجة الحرارة السالبة عادي إذا كانت من رينج من سالب 28 لبوزيتيف 127 حلو لو حطيتها بالاسبايت.

14:41

Speaker A

تمام؟ إيه عدد كبير مثلًا لو حكينا 4096 لا حلو أحطها بالورد لأنها كبيرة ما رح أصلًا يكفي عندي أخزنها بالبايت أو غيره.

14:49

Speaker A

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

14:58

Speaker A

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

15:11

Speaker A

والإيدج هذا أعطيته نوع يعني أنا في عندي فاريابل هذا الفاريابل النوع تبعه هو بايت. قديش يعني بايت؟ يعني بيحجز ثمانية بت. وحطيت قيمة 300.

15:23

Speaker A

بالعقل بالعقل. ال- هل اللي بقدر أخزن بالبايت رقم 300؟ لا. ليش؟ لأنها أصلًا أكبر من الرينج تبعي اللي هو 255.

15:35

Speaker A

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

15:55

Speaker A

اسمعوا معي، هلقيت أي لغة برمجة إحنا بنشتغل عليها بالدنيا فـ إلها سينتاكس محدد، صح؟ والسينتاكس هذا بيوضحلك أنت كيف بدك تعرف الفاريبلز تبعتك أو خلوني أقول مش بس بدي أشتغل على فاريبلز بشكل عام، كيف بدي أعرف بالأسيمبلي تبعتي الداتا؟

16:10

Speaker A

حلو؟ نقطة مهمة وحكيتها أنا باللاب الأول ووين أنا بعمل تعريف للداتا تبعتي؟ تمام؟ إيه بحطها بالـ دوت داتا، الدوت داتا دايركتف، بتتذكروها النقطة تبعت الدوت داتا والدوت كود وإلى آخره، فأنا بحطها بالدوت داتا، تمام؟ الصيغة الأساسية تبعتي اللي بمشي

16:29

Speaker A

فيها النيم الدايركتف الإنيشالايزر وبعدين كمان طلعوا معي لأنه الإنيشالايزر هذا حنشرحه بالتفصيل الآن، بس بدي أرجع أنوه على نقطة كتير كتير كتير مهمة وحكيناها باللاب السابق إنه لما بشوف شغلة محطوطة ما بين هي الأقواس، إيش بستوعب؟ بستوعب إنه هي أوبشنال، اختياري، يعني

16:52

Speaker A

بقدر أحطها وبقدر ما أحطها، إذا استوعبنا إنه النيم اختياري، إني أنا أعطي اسم للداتا تبعتي، هذا إشي اختياري، ولكن ولكن أنا بلاباتي أشترط عليكم إنكم تحطولي اسم.

17:07

Speaker A

تمام؟ ليش؟ لأنه لما بدنا نيجي نعمل عملية الديبوجينج ونيجي نقرأ من الميموري ونيجي أصلًا نفهم الرجسترز إيش اللي بصير فيها بدكم تستخدموا الاسم تبع الداتا اللي أعطيتوه لإلها علشان يسهل علينا الوصول لمكان تخزينها بالذاكرة.

17:25

Speaker A

فهي الفكرة من النيم، بيسهل عليّ إنه أنا كيف بدي أصل لمكان تخزينها بالذاكرة. طريقة التسمية شرحناها باللاب الأول، تمام؟ الدايركتف طيب، شو هو الدايركتف؟ الدايركتف حكيناها عمّالنا لسه الإنتريمسك داتا تايبس، اللي هو شو نوع البيانات اللي بدي أختارها؟ تكون بايت أز بايت وورد إلى

17:42

Speaker A

آخره. طيب شو الإنيشالايزر؟ طيب إحنا أعطينا هلقيت اسم وحددنا نوع البيانات، كأنه بنعمل ديكلاريشن. طيب وين الإنيشالايزيشن؟ إنه أنا بدي أعطي قيمة لإلها، هو هي الجزئية. كأننا بدي أعطيها قيمة. طيب نفترض نفترض يا أعزائي إنه أنا ما خطر في بالي قيمة.

18:00

Speaker A

يعني أنا عارفة إنه في وقت من الأوقات أنا رح أستخدم هذا الفاريبل أو رح أستخدم هذه الداتا.

18:08

Speaker A

بس مش عارفة إيش القيمة تبعتها أو القيمة تبعتها رح تطلع نتيجة لعملية حسابية. فما بديش أعطيها قيمة الآن ولا بدي أصفرها، إيش بحط؟ بحط علامة الإستفهام.

18:20

Speaker A

حلو؟ بحط علامة الإستفهام. فلما أحط علامة الإستفهام كأني بحكي للأسيمبلر روح يا أسيمبلر على الميموري، احجز لي مساحة، مثلاً أنا مختارها إنها تكون من نوع البايت، احجز لي مساحة 1 بايت بس القيمة تبعتها إيه ما تحطليش فيها قيمة، عادي.

18:37

Speaker A

ماشي؟ طيب، إيه زي شو؟ إيه يعني مثلاً نأخذ مثال بسيط عنها زي ما حكينا تو على الستودنت إيدج. حكينا عندي أنا الستودنت إيدج هو عبارة عن النيم، حكينا الدايركتف سميناها اللي هي البايت وحكينا الإنيشالايزر 21.

18:54

Speaker A

طيب شو قصة الـ الفاصلات هذه اللي أنتِ حاطة لي إياها؟ أكيد أنتم بتسألوا حالكم هذا السؤال. القصة بسيطة جداً.

19:01

Speaker A

إنه أنا ممكن آجي أحكي لكم والله إنه أنا في عندي مثلاً فاريبل هذا الفاريبل بدي أسميه سكورز، ولنفترض إنه السكورز للعبة، تمام؟ وعرفت إنه السكورز هذه بدها تكون من نوع شو؟ من نوع بايت. يعني كأني ايش بروح بحكي؟ بحكي

19:18

Speaker A

للأسيمبلر: روح احجز في الميموري مساحة البايت، وهذا البايت أشر عليه وعرف لي إياه باسم السكورز.

19:25

Speaker A

بس ايش رحت عملت؟ عملت له قيمة 90. عملت له قيمة 75. ورحت عملت له قيمة 60.

19:36

Speaker A

لا، أنا مش كأني بروح بخزنهم كلهم مع بعض، لا. اللي صار كأني عرفت إنه هي عندي أنا بدي أروح يا أسيمبلر على الميموري. ايش بدك تعمل؟ بدك تحجز لي ثلاث متغيرات منفصلة، تمام؟ ولكن متتالية، يعني مش عشوائي. يعني مش تروح لي على الميموري

19:54

Speaker A

بشكل عشوائي تختار الموقع الفلاني للرقم 90، الموقع العلاني للـ 75، لا. أول مكان رحت فتحجز فيه للسكورز وتحط فيه 90، البت البايتين اللي بعده بدهم يكونوا للـ 75 وللـ 90 للـ 60. يعني مثلًا بيجي هيك بقول لك هي سكورز. بروح بيعطيها زي

20:14

Speaker A

مسمى، طلعوا كيف بيعطي مسمى، كأنه بيحكي إنه السكورز عندي سكورز زيرو. لو بدي أزود عليها كمان بايت، ايش بدي أحط هان؟ حطيت أول حاجة عندي أنا 90. لو زودت كمان بايت على السكورز زائد الواحد، ايش بتصير عندي؟ بتصير عندي أنا

20:32

Speaker A

75. حلو. لو زودت عليها كمان واحد على اللي هو الـ 75، ايش بتصير عندي؟ بتصير عندي 60.

20:42

Speaker A

حلو، تمام التمام. يعني صار عندي من السكورز للهان قديش؟ زائد اثنين عشان أصل للـ 60.

20:49

Speaker A

تمام. فـ هي هي الفكرة لحد الآن. فاللي هو ايش بيسألنا سؤال؟ إنه طيب، ايش هو طرق كتابة القيم العددية؟ أنا ممكن أكتب القيم العددية بأكثر من صورة، والأسيمبلر وظيفته إنه هو يحول لي إياها للـ باينري عند إنشاء البرنامج،

21:07

Speaker A

تمام؟ يعني أنا مثلًا ممكن أكتب إنه في عندي أنا إيه من نوع بايت. حلو؟ وإيه أعطيها قيمة 25. بالنهاية هو الأسمبلر رح يستوعب طالما أنت مختارلي نوع بايت, فما لهاش يعني فهمانين عليي كيف إنه طالما أنت مختارلي تمثيل ثنائي, سواء بايت

21:29

Speaker A

أس بايت إلى آخره, بالنهاية قيمة 25 هذه أنا لازم أحولها للباينري للتمثيل الثنائي عشان نشوفها. تمام؟ ماشي.

21:39

Speaker A

إيه هيي الفكرة من الـ الـ ديسمال, يعني أنا ممكن أكتب طلعوا معيي كتبت كاونت بايت 25. كتبت القيمة تبعتي بالـ 25, بالنهاية الأسمبلر رح يمسكلي إياها ورح يحولها للتمثيل الثنائي. حلو؟ بس إيه بدنا نفهم شغلة, ليش هو عمل ستورينغ لإلها على شكل

21:59

Speaker A

إتش؟ نحن بنحكي بالتمثيل الثنائي, بس إيه ليش هيي إستوردت على شكل إتش؟ سؤال مهم. إيه هنا لأنه فكرة الـ الأسمبلي وخصوصًا النسخ المحدثة بتمشي على نظام الهيكساديسيمال, فالنتيجة بتطلع بنظام الهيكساديسيمال. وعندنا لما ندخل على اللاب, إيه بيصير عندنا إنه تشوفوا فعليًا

22:21

Speaker A

كيف بقدر أعمل القيمة اللي ظاهرة عندي هيي 19 إتش, أحولها من الهيكساديسيمال وأخلي نفسي أقرأها بقيمة ديسمال عشان تسهل عليي.

22:30

Speaker A

تمام؟ إيه الشغلة الثانية إنه مثلًا عرف اللي هو عندي ماسك, برضه من نوع بايت, و ولكن الرقم اللي كتبه هو بصيغة الهيكساديسيمال.

22:40

Speaker A

تمام؟ لو هذا الرقم, وبرجع بكرر هذا الكلام أخذناه, أخذناه باللاب الأول في طريقة التسمية, إنه أنا بينفعش لو بدي بلش الرقم تبعي بالـ الإف إف إتش, إيه الإف إف عفوًا بحرف.

22:54

Speaker A

هلقيت لو الرقم تبعي بلش بحرف هو الإف إف, إيش قلنا في التسمية تبعتي لازم أحط زيرو في البداية, هو هيك طريقة الأسمبلي.

23:01

Speaker A

وحطينا الإتش عشان أوضحله إنه أنا شغالة بنظام الهيكساديسيمال. هاي لو بدي أجي أحولها للباينري إيش بتصير؟ بتصير 255.

23:11

Speaker A

حلو؟ طيب. بالنسبة عندي للباينري، عرفلي فلاج سين، عرفلي بايت، وكتبلي رقم. إذا أنا الفكرة من كل هذا الجدول اللي كاتباه لكم إياه مش إنه تتشتتوا يا جماعة.

23:26

Speaker A

الفكرة من هنا إنكم تستوعبوا إنه أنا القيمة اللي بدي أخزنها بالمساحة اللي أنا حجزتها بالميموري، أو القيمة اللي أنا بدي أعطيها للفاريبل اللي أنا حجزته بالميموري، قد تكون ديسيمال، قد تكون بالهيكساديسيمال، قد تكون بالباينري، كاركتر، نيجاتيف، حتى إكسبريشن، أو حتى

23:41

Speaker A

الأنيشالايزد اللي أنا قلت لكم عنها إنه نحجز مساحة بالذاكرة بدون ما يكون في لها قيمة محددة لحد الآن. بس هي كل الفكرة.

23:49

Speaker A

تمام؟ بدناش يعني إنه نصعب على حالنا. طيب. حلو. إيه، لو أعطيتكم مثال إنه حكيت الإكس مثلًا فاريبل من نوع بايت، قيمة زيرو، وحكينا واي من نوع بايت، و علامة استفهام.

24:08

Speaker A

هل عندي مشكلة؟ لا. عرفت إنه أنا عملت مساحة حجز مساحة، ولكن المحتوى تبعها ما لهوش قيمة محددة. تمام؟ طيب.

24:18

Speaker A

إيه، لو نفترض نفترض نفترض إنه إحنا زي ما حكينا إنه الواي من نوع بايت والقيمة تبعتها أنيشالايزد. لو أنا رحت فتحت الميموري عندي الواي اللي أنا عاملاها أنيشالايزد، ولقيت القيمة عبارة عن أصفار.

24:31

Speaker A

هذا معناه إنه الأنيشالايزد هذه الموجودة عندي تتخزن على قيمة أصفار؟ لا. لأنه ظهور الصفر ما بيغير معنى التعريف.

24:40

Speaker A

أنت أنيشالايزد، أنت تعتبر قيمة غير محددة من قبل الأسمبلر. فما ليش علاقة إيش القيمة اللي هو بيعطيني إياها.

24:48

Speaker A

ضروري جدًا نركز عليها. مش معنى إنه طلعلي أنا عندنا لما نشوف بالميموري ممكن يطلع لكم أصفار، إيه، نربط إنه الأنيشالايزد هو أصفار.

24:57

Speaker A

تمام؟ ماشي. ندخل على واحد من أهم أجزاء اللاب تبعتنا. إيه، اللي هو ندخل على موضوع الـ ساينت نمبرز والـ توث كومبليمنت.

25:15

Speaker A

تمام. الآن إحنا كبشر، لو أنا إجيت وكتبت لكم سالب 15 و- لاحظوا معي سالب 15 هذه حترافقنا في كل اللاب. ليش هيك؟ المهم إحنا لو كتبنا سالب 15، إحنا رح نفهم من إشارة السالب إنه العدد أقل من صفر. صح ولا لأ؟ تمام.

25:34

Speaker A

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

25:50

Speaker A

عادي. فهذه الطريقة هي طريقة التوث كومبليمنت. وهذه الطريقة أخذناها باللوجيك. اسمعوا، إيه يفضل نراجع هذه التوث كومبليمنت لأنه رح تلزمنا بهذا اللاب خصوصاً بالأمثلة. إيه، الشيء مش صعب وبسيط ورح أطبق معكم مثال الآن إيه، لحتى نفهمها كثير منيح. يعني

26:10

Speaker A

مثلاً، لو أجينا أول حاجة بدنا نكتب الرقم الـ 15. إجاكم الرقم وقالكم إنه هو سالب 15. أول ما شفناه فهمنا إنه بدنا نتعامل مع رقم ساينت. حلو؟ أول حاجة بعملها بكتب الرقم التابعي في حالة البوزيتيف. الـ 15 شلون أكتبها بحالة

26:27

Speaker A

البوزيتيف؟ كان؟ طلع واحد واحد واحد واحد وطبعاً أربع أصفار. ليش أربع أصفار؟ لأنه أصلاً أنا لو بدي أخزن بخزن بثمان بتات لأنه واحد بايت هو عبارة عن ثمانية بت. فطبيعي جداً في الأسمبلي رح أكتب ثمان بتات وبحجز لكل

26:43

Speaker A

واحد يعني بحط الـ الـ عدد حسب مثلاً 15 بدها أربع بتات من البداية. فخلص أعطيتهم إياهم.

26:50

Speaker A

طيب، شو بنعمل؟ كتبنا الرقم أول خطوة بحالة الموجب. الحاجة الثانية إنه بدي أعكس كل البتات، يعني كأني بعمل إيش؟ حالة الفيرست كومبليمنت.

27:01

Speaker A

بعكس كل البتات، يعني الواحد رح يصير صفر، الصفر رح يصير واحد وهكذا، فصارت عندي إيش؟ صفر. صفر.

27:07

Speaker A

صفر. واحد. واحد. واحد. واحد. بعدين شو بعمل؟ بدي أحولها لـ توث كومبليمنت، فشو بعمل؟ بحكي له: تعال زائد واحد، فشو بصير؟ بصير هذا الشكل.

27:23

Speaker A

هيك أنا جبت الرقم سالب 15 بالـ توث كومبليمنت. لو إجيت وخزنت هذا الرقم بـ بايت مش بـ أس بايت، رح يقرأه على إنه 241، شايفين الفرق الشاسع بالقراءة؟ بعد ما كنا بـ سالب 15 قيمة لطيفة صغنونه هلقد، صرنا بقيمة الـ 241.

27:41

Speaker A

فعشان هيك أنا بقولكم دائمًا كونوا دقيقين باختياراتنا. نفس الشيء لو إجينا وعملنا الـ سبعة إف إتش الموجودة عندي هان، بس قبلها بدنا نتحقق رياضيًا. من إنه فعلًا هي القيمة الموجبة هان بتساوي سالب 15.

27:54

Speaker A

تمام؟ عارفين كيف بنعملها؟ نظام إنه هو بنعد، يعني عندي أنا مثلًا هذا عبارة عن صفر، واحد، اثنين، ثلاثة لحد ما أوصل للرقم ثمانية، بضرب الـ مثلًا اثنين أس الصفر في واحد زائد اثنين أس الواحد في صفر زائد اثنين أس

28:11

Speaker A

اثنين في صفر، أو في طريقة ثانية اللي هي واحد أربعة ثمانية 16 وبنمشي عليها، عشان نتحقق إنه إحنا فعلًا أوصلنا لقيمة السالب 15 اللي موجودة عندي. تمام يا جماعة؟ طيب.

28:25

Speaker A

الآن لوين يمكن وصلنا؟ السبعة إف إتش. تمام. وصلنا عند السبعة إف إتش، ولاحظوا معايا هنا أنا مش رح أكمل معاكم بآلية التحويل، ما مش حابة كثير اللاب يطول في هي المجال أو في هي النقطة، خصوصًا أنه صراحة يعني

28:49

Speaker A

بنعرفها. وهي وجتكم الطريقة كثير بسيطة بس أنه الفكرة البت البايت عندكم هنا مكتوب بالهيكساديسيمال، الشطارة أنه احنا نعرف نحوله من هيكساديسيمال لباينري تمام وبنشتغل عليه بالطريقة تبعتنا. حلو.

29:03

Speaker A

ايه طلعوا معي لما يكون عندي أنا البت اللي هنا قيمته صفر لاحظوا أنه في حالة لو أنا خزنته بـ بايت ايه أو خزنته بـ اس بايت بالحالتين ايش بتطلع القيمة؟ كما هي.

29:19

Speaker A

إذًا البت الأخير وهذا هو مراجعة لما سبق أنه البت الأخير هو البت الحكم اللي عندي.

29:24

Speaker A

يعني لو كان البت الأخير هو صفر إذًا هو يعتبر ايش؟ بالحالتين نفس القيمة. سواء ساين ولا انساين بالحالتين نفس القيمة.

29:31

Speaker A

لكن لو كان البت الأخير هو واحد زي حالة 80 اتش طلع ايش معي؟ طلع هنا 128 بينما هنا طلع سالب 128.

29:42

Speaker A

الزيرو اف اف اتش أو اف اف اتش الاف اف اتش لما حولناها لباينري طلعت هذا الرقم الكبير بالانساين بتتخزن على أنه هي 255. ولكن لأنه هنا البت الموجود عندي هنا هو واحد فأنا عرفت أنه هي راح تكون ايش؟ كساين

30:00

Speaker A

بتزبط كساين. فايش بتطلع؟ سالب واحد. شفتوا الفرق في القيم كيف؟ تمام. هذا سؤال ايه يعني أو خلينا نحكي نقطة كثير كثير مهمة أنه احنا نكون فاهمينها.

30:13

Speaker A

شغلة من الأشياء اللي عنجد مهمة بهذا اللاب اسمعوا اللاب جدًا مهم ولكن برضه هي من النقاط اللي هي مهمة كثير عندنا هي نقطة الليتل انديان بايت اوردر.

30:25

Speaker A

أنه الفكرة منها ليش احنا ممكن نشوف العدد بترتيب مختلف في الذاكرة؟ يعني مثلًا لو أنا اجيت وكتبت العدد هذا واحد اثنين ثلاثة أو على فكرة هيو مكتوب أنا مش منتبهة.

30:43

Speaker A

هي الرقم. طلعوا معي لو كتبنا هذا الرقم الموجود عندنا هنا. هل احنا بنتوقع انه احنا راح نشوف الترتيب تبع هذا البتات في الذاكرة بالترتيب التالي انه مثلا 78 بعدين بدنا نشوف 56 34 12.

31:02

Speaker A

هذا فعلا الترتيب اللي راح يظهر بالحقيقة. طيب ليش؟ يعني طلعوا معي عشان أشرح أكثر يمكن ما كانت الصورة واضحة. احنا عرفنا انه في عندنا فاريبل. حلو؟ هذا الفاريبل اسمه الفايل سايز. من نوع شو؟ من نوع الدي وورد. تمام. من نوع الدي وورد يعني كأني

31:19

Speaker A

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

31:41

Speaker A

سايز. ونرجع نتذكر يا جماعة انه طالما عندي أنا دي وورد أربعة بايت لازم تكون متتاليات ورا بعض. البايتات أنا ما بحجزش مواقع عشوائية. بحجز البايتات انه هي تكون ورا بعض. حلو. حجزنا أربع مواقع ورا بعض.

31:54

Speaker A

الرقم تبعي هذا كيف المفروض يتخزن؟ المفروض انه أنا بتوقع بتوقع انه بالهيكساديسيمال راح يتخزن على شكل مثلا ايه 12 34 56 78. يعني أنا بتوقع حتكون عندي هنا ال12 حتكون عندي هنا ال34 وال 56 وال78. صح؟ لانه أربعة بايت.

32:17

Speaker A

والبايت الواحد بياخذ كم؟ ثمانية بت. فالثمانية بت انتم بتحكوا هي أربعة بايت. البايت الواحد بياخذ ثمانية بت. الثمانية بت أنا عندي بتمشي كيف نظام البايت الواحد؟ من صفر ل255. يعني باخذ بقسمهم لأجزاء 12 34 ايه 56 78. ولكن الحقيقة انه

32:34

Speaker A

مش هيك بتخزن في الميموري. بتخزن في الميموري بهذا الشكل. ببلش من ورا. بخزن عندي أنا 78، بعدين 56، بعدين 34، بعدين 12.

32:46

Speaker A

تمام؟ لأنه معمارية الـ X86 الموجودة عندي بتستخدم حاجة اسمها الـ ليتل إنديان بايت أوردر.

32:54

Speaker A

يعني البايت الأقل أهمية هو اللي رح أنا أخزنه في العنوان صفر. والبايت الأقل أهمية عندي هنا مين؟ هو بايت الـ 12. فهو الأقل أهمية الموجودة عندي هنا. تمام؟ فـ الـ الـ الفكرة منه إنه هو الـ عفواً البايت الأقل أهمية هو 78. والأعلى أهمية

33:12

Speaker A

هو الـ 12. أنا صارت معي لخبطة. تمام؟ إذاً إيه عشان نشرحها بشكل واضح، أعيد لكم إياها إنه عندي أنا هنا الـ 12. حلو؟ وعندي 34.

33:23

Speaker A

وعندي الـ 56. وفي الآخر عندي الـ 78. أنا ممكن هذا الرقم المكتوب بالهيكساديسيمال أقسمه لأربع أقسام رئيسية. القسم الرئيسي الأول هو 78 إتش الموجودة هنا بعتبره البايت الأقل أهمية.

33:39

Speaker A

وبيجي عندي هنا الـ 12. الـ 12 إتش لو بدي أقرأه بالهيكساديسيمال طبعاً. بيجي هو البايت الأعلى أهمية.

33:46

Speaker A

ما بينهما ها. بايتات هيك. مش بيهمني كثير أعرف إيش المسميات تبعتهم. فبيجي الترتيب عندي إنه في البوزيشن إن الموجودة عندي هنا مش رح تيجي الـ 12. لا.

34:00

Speaker A

رح تيجي الـ 78. إن زائد واحد رح تيجي عندي الـ 56. الزائد اثنين 34. الزائد ثلاثة رح تيجي عندي الـ 12.

34:10

Speaker A

تمام؟ فبحط أنا أقل بايت أهمية في الـ الـ أول عنوان. بعدين البايت اللي بعده. تمام؟ إيه فعشان هيك أنا لو قرأت الذاكرة بايت بايت بشوف الترتيب معكوس بالنسبة لطريقة كتابة العدد بالهيكساديسيمال.

34:23

Speaker A

لكن لو طلبت من الديباجر إنه هو يعرض لي القيمة كاملة على إنها دي وورد فهو إيش رح يعمل؟ رح يطلع لي إياها بهذا الشكل.

34:31

Speaker A

بالشكل الصحيح تبعها. ففي قاعدة الليتل إنديان يا جماعة، بدي إياكم تحفظوا التالي، إنه أقل بايت أهمية بخزنه بأقل عنوان ذاكرة.

34:41

Speaker A

أقل بايت أهمية، 78، أقل عنوان ذاكرة هو الـ N0 N0، تمام؟ وإذا أنا بدي أجيب العدد من حالة الانفراد في الميموري، وركزوا معي أنا وين موجودة في الميموري.

34:54

Speaker A

إذا بدي أجيبه بحالة الانفراد في الميموري، بقرأ البايتات بشكل كامل من الديباجر نفسه، من الـ عند الـ الـ الموقع اللي خزنت فيه في الرجستر، وأنا مثلاً مخزناها الفايل سايز، نقلت قيمته على الرجستر، حيظهر بالشكل الصحيح.

35:06

Speaker A

تمام؟ يعني لو أخذت معاكم إيه مثال ثاني، ولنفترض كتبت لكم إنه في عندي أنا فاليو.

35:16

Speaker A

هذا الفاليو تبعتي هي الـ اسم الفاريبل أنا كاتباه، وهو من نوع دي وورد، إيش يعني دي وورد؟ ضروري جداً نحفظ هي الأشياء، دي وورد يعني أنا بدي أحجز أربعة بايت من الميموري، الأسمبلي بده يحجز أربعة بايت من الميموري، وكتبتله إنه

35:30

Speaker A

القيمة اللي بدك تخزنلي فيها هي زيرو A واحد B اثنين C ثلاثة D H حلو.

35:48

Speaker A

إيش رح يصير؟ بهي الحالة، طبعاً الـ H هي بتنكتب مصغرة هيك لأنه هي علامة الهيكساديسيمال.

35:55

Speaker A

زي ما حكينا طبيعي جداً، أنا عندي هذا كله ليتل، لو بدي أروح على الميموري يا جماعة، على الميموري، تمام؟ وأعمل هيك وأكتب اللي هو متذكرين علامة الـ أند، يمكن مش واضحة هيك، أكتب فاليو في الميموري، زي ما شرحنا في اللاب السابق،

36:11

Speaker A

رح يروح ينقلني على الموقع اللي حجزته في الميموري، وإحنا إيش قلنا بدنا نحجز أربعة بايت.

36:16

Speaker A

يعني أربعة بايت بهذا الشكل للدي وورد، بتبلش من الـ N0 وبتنزل لـ N1 N2 N3 وهكذا.

36:25

Speaker A

فإيش بدي أعمل؟ بروح للبايت أقل أهمية، بمسك الرقمين أهمية ثلاثة دي. ثلاثة دي راح تنحط فوق.

36:31

Speaker A

بعدها مين؟ بعدها اثنين سي. بعدها مين؟ واحد بي. بعدها مين؟ الـ اللي هو إيه إيه واحد. أو هي بي. يعني هو في رقم أعتقد إنه ناقص نسياه.

36:46

Speaker A

أو إيه واحد هي بتطلع. آه. بالزبط. تمام؟ بهذا الشكل بتتخزن بالميموري. طيب. ننتقل للي بعده.

36:58

Speaker A

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

37:14

Speaker A

راح يكون فيها أريز برضه. فـ إيه لغات زي السي بلس بلس مثلًا لما بدنا نيجي نكتب أجي أكتب مثلًا مثال نأخذ هيك أكتب إنت إيه الـ سكورز.

37:32

Speaker A

أحطها كده أربعة. يا جماعة لو درسنا الموضوع برضه على بايثون على جافا أو غيره. إحنا متعودين على فكرة إنه المصفوفة هي عبارة عن نوع منظم من البيانات.

37:43

Speaker A

[أصوات شخير] في الأسمبلي ما في نوع مستقل اسمه أري. أنا لازم أستخدمه. فاهمين علي؟ يعني أنا ممكن يكون في عندي شكل محدد بنتبعه لـ تعريف عن الـ أري في باقي لغات البرمجة. لكن في الأسمبلي ما في عندي أنا نوع مستقل اسمه أري. أنا بحجز

37:59

Speaker A

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

38:16

Speaker A

النشاط اللي حكينا من البداية. وأعطيتها داتا تايب تبعتها هو البايت. لاحظوا إيش أعطيت؟ 90. أعطيت 75. وأعطيت 60. إحنا طبعًا لما طلعنا عليها ما خطر في بالنا فكرة إنه هاي ممكن تكون أري لأنه توقعنا بتعامل مع شكل مختلف للأري. زيها زي باقي

38:32

Speaker A

لغات البرمجة, لكن الحقيقة فكرة إنه أنت تحجز مواقع متتالية في الذاكرة. تمام؟ هذه بعتبرها أري.

38:41

Speaker A

حلو؟ ف كيف بدي آآآ طبعًا أنا يعني اللي هو الفكرة اللي بدنا نفهمها. إنه كيف أنا بدي أحجزهم هذول بالذاكرة؟ ف آآآ باجي لل قيمة 90 تبعتي, هيها قيمة 90 تبعتي. لو بدي أحولها كقيمة بالهيكساديسيمال بتطلع عندي هي عبارة عن 5

38:59

Speaker A

إي. تمام؟ لو آجي لل 75 بتطلع عندي قيمة عبارة عن 4 بي. بدي آجي لل 60 بتطلع عبارة عندي عن آآآ 3 سي. تمام؟ فهي الفكرة كلياتها.

39:13

Speaker A

آآآ ندخل الآن على إنه طيب كيف أنا ممكن أصل لهذا العنصر المحدد اللي أنا بدي إياه؟ يعني أنا حجزت ثلاث مواقع متتالية بالذاكرة, وبأشر لهم باسم السكورز. طيب كيف بدي أصل لهم؟ ايش كيف بدي أعرفهم؟ باجي مثلًا نتخيل كالتالي. السكورز هذا

39:30

Speaker A

اللي موجود عندي, اللي هو الفاريابل اللي بأشر على ثلاث مواقع موجودة عندي بالذاكرة من نوع البايت.

39:36

Speaker A

بدي أروح أنقله لواحد من الرجسترات اللي بعرفها. يعني مثلًا رحت أنا كتبت موف. سوري على الخط, بس إنه كتبت موف على ال إي إل, وهو جزء 16 بت. كتبت عندي إنه في عندي أنا سكورز. يعني روح انسخ لي قيمة السكورز

39:51

Speaker A

اللي موجودة عندي, وقيمة السكورز الموجودة عندي هذه شو أعمل؟ روح انسخ لي إياها في الرجستر الإي إل.

39:57

Speaker A

تمام؟ هنا أنا نسخته كاملًا. ركزوا معي, أنا ايش عملت؟ رحت كأني بحكي للإي إل.

40:04

Speaker A

هيو, هاي السكورز, عشان نفهمها بشكل أوضح. السكورز يا جماعة, حجزنا إنه في عندي 90, حجزنا إنه في عندي 70, في عندي 60. رحت أنا حكيت للإي إل هذا اللي مشتري عندي.

40:14

Speaker A

أشر لي على بداية المصفوفة. إذًا صارت ال AL هاي الموجودة عندي تقرأ قيمة شو؟ تقرأ قيمة العنصر صفر. إذاً صار المخزن بال AL هي القيمة رقم شو؟ رقم 90.

40:29

Speaker A

إذاً أنتم لما بتيجوا تحكوا للرجستر تبعك موف ال AL سكورز، كأنك بتروح بتحكي له روح على السكورز الأول ها.

40:37

Speaker A

روح أشرلي على بداية مصفوفة السكورز الموجودة عندي وخذلي القيمة الموجودة فيها وانسخلي إياها. صار ال AL إيش فيه؟ هيه من هون بتطلعوا على أول قيمة 90.

40:49

Speaker A

طيب. لو أنا رحت كتبت حاجة ثانية. كتبت إنه والله مثلاً موف. طلعوا كتبت موف.

40:59

Speaker A

إيه. بي. ال. بس إيش أعطيتها؟ أعطيتها سكورز. يعني أنا بحاول ها. سكورز. زائد. إثنين. طيب شو يعني؟ إيش يعني هذا الكلام؟ معناتها روحلي على العنوان.

41:21

Speaker A

ها ركزوا معي إحنا وين موجودين؟ موجودين في بداية المصفوفة. دائماً بنبلش من بداية المصفوفة.

41:26

Speaker A

بداية مصفوفة السكورز. بحكي له روحلي على العنوان اللي هو موجود في بداية المصفوفة اللي بيبعد عن بداية المصفوفة بمقدار إثنين.

41:36

Speaker A

بيبعد عنها بمقدار إثنين بايت. فأنا هيني في بداية المصفوفة. هي إثنين واحد وهي إثنين. إذاً أصبحت القيمة بدي إياها الموجودة عندي هل هي ال. إيش على قيمة ال 60.

41:47

Speaker A

حلو. هذا الكلام اللي إحنا بنحكي عنه. تمام. إذاً صار عندي مفهوم الأقواس هذا. لما أنا بستخدمه في الدوت داتا. هو عبارة عن إشيء أوبشنال لأنه أنا أوبشنال أعطي مسمى لهذا الفاريبل أو لا. ولكن لما أستخدم هاي الأقواس في الدوت كود سيكشن.

42:08

Speaker A

لاحظوا معي أصبحت موجودة عندي عشان تساعدني في الوصول إلى المحتوى الذاكرة عند عنوان محدد.

42:15

Speaker A

تمام؟ واسم المصفوفة موجود، عشان هيك أنا بحكي لكم مهم جدًا نعطي أسماء، حتى لو هي أوبشنال بدكم تعطوا أسماء، بيساعدني إن أنا أوصل لموقع البداية.

42:24

Speaker A

حلو لحتى الآن؟ هذا الكلام اللي أنا بحكي عنه. طيب، نرجع للجدول الموجود عندنا هان، نشوف إيش فيه.

42:37

Speaker A

بس في نقطة مهمة قبل ما نرجع لهذا الفيديو لازم أحكي لكم إياها. النقطة هاي يا جماعة هي إنه لاحظوا لما توي أنا اشتغلت معكم بالسكورس حكينا السكورس من نوع البايت.

42:51

Speaker A

حلو؟ طيب، لو نزلنا هان تحت وشفنا هذا المثال، اللينكس تبعي من نوع الوورد. شو يعني نوع الوورد؟ نوع الوورد يعني أنا بتعامل مع اثنين بايت، تمام؟ طيب، طالما بتعامل مع اثنين بايت، يعني أنا هنا إجيت، طلعوا معي، عملت مصفوفة.

43:08

Speaker A

هاي المصفوفة، العنصر الواحد، وركزوا معي، العنصر الواحد بدي أحجز له اثنين بايت من الذاكرة. يعني وكأنه صار عندي هاي العنصر الأول، والعنصر هان، اثنين بايت، هاي أول بايت وهاي ثاني بايت، والعنصر هذول اثنين بايت اللي موجودات عندي عفوًا، بخزن فيهم

43:25

Speaker A

العنصر الأول اللي هو عبارة عندي عن 1000. حلو؟ العنصر الثاني برضه بيلزمه هاي بايت وهاي بايت، هاي الأول وهاي الثاني، وهذول الاثنين بستخدمهم عشان أخزن الرقم 2000.

43:41

Speaker A

طيب، حتى الآن الكلام شوية واضح، لكن لو إجيت أخذت كمان لأنه عندي كمان رقم، هاي بايت وهاي اثنين، هذول برضه بستخدمهم للعنصر الثالث اللي هو عبارة عن 3000، إذا أنا الرقم الواحد أو العنصر الواحد بحتاج له لاثنين بايت، معناتها كيف ممكن أصل له؟

43:58

Speaker A

وهو أخذت مواقع متتالية لهم، هذول بيمثلوا عندي أراي، فكيف بدي أصل لهم؟ يعني لو إجيتوا هان هان لهذا السؤال حكى لكم موف السي اكس اللينك زائد أربعة زائد أربعة عفوا. ليش أربعة؟ السؤال إنه ليش أربعة؟ لأنه حجم اللينك الواحد اللي موجود عندي هو

44:18

Speaker A

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

44:34

Speaker A

لل الموقع المطلوب. بيحكي لي إنه الأوفست تبعي هو عبارة عن ال آي مضروب بالأس.

44:42

Speaker A

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

44:53

Speaker A

تمام؟ ماشي. والآي الموجودة عندي بتمثل قديش عدد الإزاحات اللي أنا بدي أعملها. قديش عدد الإزاحة اللي أنا بدي أعملها. يعني مثلا لو أنا بدي أجي أحكي لكم إنه أنا بدي أصل العنصر رقم 3000.

45:08

Speaker A

خلينا نركز شوية. أنا ال 3000 قديش لزمني علشان أخزنه بالميموري؟ لزمني اثنين بايت. مبدئيا هي الأوفست تبعي بيحكي له إنه بيلزمني اثنين بايت. قديش بدي أعمل إزاحة؟ طلعوا معي. أنا عندي قبل ال 3000 في عنصرين. إذا بيلزمني أعمل إزاحة بمقدار

45:22

Speaker A

اثنين. صار عندي اثنين. إذا الجواب إيش بده يساوي؟ بده يساوي أربعة. فعشان هيك حكيت اللينك زائد زائد أربعة.

45:31

Speaker A

وضحت الصورة؟ فهيك أنا بكون قدرت أصل إنه نطيت لي عن أول ونطيت لي عن كمان اثنين. هي واحد اثنين ثلاثة أربعة. آه أنا وصلت اللي أنت بدك إياه. طبعا أنا بأشر على أول بايت موجود فيه. بأشر على أول بايت موجود

45:46

Speaker A

فيه. طيب لو نفترض كانت المصفوفة الموجودة عندي ما فيش وسع نكتب. خلونا نشيل هيك شوية أشياء عشان نوسع.

45:58

Speaker A

تمام. لو يا جماعة بدنا نفترض إنه أنا المصفوفة تبعتي كانت من نوع الدي وورد.

46:06

Speaker A

نوع الدي وورد، شو يعني دي وورد قلنا؟ قلنا بتعامل مع أربعة بايت، يعني بدي أروح أحجز بالذاكرة للعنصر الواحد أربعة بايتات، يعني كأنه شايفين ببلش من هان لحد ما أصل لهان.

46:18

Speaker A

يعني لو أخذت أنا لون ثاني مثلًا، إيه اخترت لون ثاني كذا. أحمر مثلًا خلينا نحكي، صار عندي أنا واحد، اثنين. ثلاثة. أربعة، هدول الأربعة بايتات لعنصر واحد، لعنصر واحد ولنفترض إنه هو رقم ألف برضه.

46:35

Speaker A

فما بالكم بدي آخذ كمان أربعة بايتات للـ 2000، كمان أربعة بايتات للـ 3000، فإيش بصير بحكي؟ باجي لقانون الأوف سيت، أنا بدي أحكيلكم ريحوا راسكم ولا تعملوا رسم ولا غيره، مش عارفة إيش الأوف سيت الغريبة هذه وأنا بكتب طلعت.

46:50

Speaker A

عمومًا قانون الأوف سيت إيش قلنا؟ هو عبارة عن الإس اللي هو حجم العنصر الواحد والإي، حجم العنصر الواحد عندي كم أعزائي؟ أربعة، طيب.

47:01

Speaker A

ولنفترض إنه أنا غير الـ 3000 في عندي كمان رقم هو رقم الـ 4000 اللي أنا بدي أصل له، هو هذا اللي بدي أصل له، الـ 4000 قديش بيبعد عن بداية العنصر الأول؟ هي واحد، اثنين، ثلاثة، إذًا أربعة في ثلاثة

47:14

Speaker A

صار عندي الجواب هو عبارة عن 12. إذًا الإزاحة تبعتي في اللينك هذه إيش بدها تكون؟ زائد.

47:22

Speaker A

12. ويعطيكم العافية، هيك إحنا بنكون شغالين تمام التمام. وطبعًا لو بدي أكتبها برضه عشان هيك نستظرف سوا، لو بدنا نكتبها بالهيكس ديسيمال، إيش بيطلع؟ الـ 12 بتطلع سي.

47:38

Speaker A

زيرو سي إتش. صح؟ طيب. نرجع هلقيت. للجدول تبعنا، الجدول تبعنا بدنا ندخل على النقطة الثانية واللي هي عبارة عن الدب.

47:50

Speaker A

شو يعني دب؟ إيه شوفوا معي، أنا أحيانًا بحتاج أحجز مصفوفة كثير كبيرة. أو إني أكرر قيمة معينة واحدة عدة مرات.

47:59

Speaker A

يعني بدل ما أكتب القيمة نفسها عشرات المرات الماسم كثير ظريف بيوفر لي حاجة اسمها الدب. الدب هذا وظيفته بيسمح لي أني أنا أكرر القيمة الواحدة بعدد المرات اللي أنا بدي إياها. هاي الفكرة كليتها. يعني هو شيء بسيط افهموه

48:16

Speaker A

بهي الطريقة. فلو بدنا ناخذ مثال ظريف كده على الدب عشان يعني أوضح لكم إياه.

48:23

Speaker A

لو إجيت برضه بدي أعمل محي لأنه الوضع صار صعب. مش عارفين نكتب. ثواني يا جماعة.

48:34

Speaker A

بدنا نوقف التسجيل وإحنا بنعمل هيك. طيب. نرجع. لو إجينا كتبنا مثال ظريف كده وكتبنا إنه زيروس حلو. يعني أنا سميت الفاريبل تبعي زيروس.

48:50

Speaker A

وأعطيته نوع الورد. إيش يعني ورد؟ حضلني أذكركم. ورد يعني اثنين بايت. بدي أحجز من الذاكرة اثنين بايت.

48:58

Speaker A

وكتبت الرقم خمسة وكتبت بعد هيك الدب. تمام؟ وحطيت هذه مش دب طلعت. المهم وحطينا زيرو.

49:11

Speaker A

إيش معناه؟ معناه روح احجز لي خمس عناصر ها. بدي أحجز مساحة من الذاكرة. المساحة من الذاكرة هذه قديش؟ خمس عناصر. الرقم اللي بييجي هنا قبل الدب بيمثل عدد العناصر اللي أنا بدي أحجزها. طيب. خمسة عدد العناصر. كل عنصر قديش بده ياخذ؟ من نوع

49:30

Speaker A

ورد. يعني بده ياخذ اثنين بايت. فبصير عندي أنا البايت الأول والثاني للعنصر الأول. البايت الثالث والرابع للعنصر الثاني. طيب إيش قيمهم بدها تكون؟ بدها تكون عبارة عن زيرو. فأصبحت كلها هاي أصفار أعزائي.

49:44

Speaker A

فكأنه بحكي إنه أنا بدي أحجز هاي. صفر صفر. أول بايتين للعنصر الأول. بعدين صفر كمان صفر للعنصر الثاني.

49:52

Speaker A

بعدين صفر وصفر للعنصر الثالث. وهكذا استمروا بنفس الكيفية. حلو؟ فهي الفكرة على موضوع الدب.

50:00

Speaker A

وممكن طبعًا زي ما أنتم شايفين هنا أكتب إنه التكرار تبعي يكون هو عبارة عن رقم بالهيكساديسيمال، يعني متاح لي أحط التكرار سواءً بالهيكساديسيمال، بالباينري، بالكاركترز، عادي. أي حاجة بدي أكررها كمصفوفة بكررها بهي الطريقة. هذا اختصار يعني ظريف لنا نحن نشتغل عليه.

50:20

Speaker A

طيب، ممكن يكون عبارة عن ميكسد أو نستد. هذي حاجة برضه حلوة بتسهل علينا عملية التكرار.

50:30

Speaker A

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

50:39

Speaker A

طيب، الفكرة من الميكسد أو النيستد إنه من اسمها ميكسد، يعني أنا بقدر أعمل باستخدام الدب تكرار لأشياء ميكس، يعني مش شرط يكونوا عدد واحد، لا ممكن أعمل تكرار لكذا عدد مع بعض في مرة واحدة، تمام؟ فعشان أشرح لكم

50:55

Speaker A

إياها الفكرة أكثر وأوضح مش حأستخدم نفس المثال الموجود عندي هنا. إيه، خليني أفترض إنه في عندي حاجة اسمها ميكس، برضه، تمام؟ الميكس هي الموجودة عندي هنا بدها تاخذ برضه من نوع بايت.

51:08

Speaker A

طيب، نوع البايت الموجود عندي هنا، إيه، نسينا التي. أوكي، بايت، إيه، نحط اثنين. ونركز شوي إيش حكينا في موضوع الاثنين الموجودة عندي هنا.

51:21

Speaker A

إيه، بدي أحط دب. واحد. اثنين. وبعدين حطيت لكم ثلاثة من نوع دب. وإيش قلنا هنا؟ مثلًا نحط زيرو.

51:41

Speaker A

أف. عشانها أنوع لكم، يعني أحط لكم مثلًا إشي بالهيكساديسيمال وإشي بالديسيمال. الفكرة يا أعزائي الموجودة عندي هان، أول ما تشوفوا ميكس، افصلوا، يعني كأنكم نغير اللون.

51:56

Speaker A

لأنه احنا بدنا نقسم، تعالوا معي نقسم هيك. نقسمها لجزئين. إنه أنا في عندي تكرار لشغلتين.

52:03

Speaker A

تمام؟ أول جزء بيقولي ميكس، هذا اسم الـ البداية المؤشر على بداية المصفوفة تبعتي في الميموري.

52:10

Speaker A

من نوع شو؟ من نوع بايت، يعني بدي أحجز لكل عنصر عندي بايت واحد. قديه عدد التكرارات اللي بدي أعملها؟ اثنين.

52:18

Speaker A

بدي أعمل تكرارين، يعني هان واحد وهان التكرار الثاني. طيب. بس هو ايش قالك؟ بدك تعملي تكرار لمجموعة.

52:28

Speaker A

مش لرقم واحد، مع إنه أنا عندي بايت، وبدي أعمل تكرار لمجموعة، يعني بدي أحجز البايت الأول.

52:35

Speaker A

للرقم واحد، والبايت الثاني للرقم للرقم اثنين، هل هذا يعتبر تكرارين؟ لا، هذا لسه أول تكرار أنا شغالة عليه، كمان بايت ثالث للرقم واحد، هاه، بعيد من الأول وجديد، والبايت الـ الرابع للرقم اثنين، هي التكرار الثاني أنا حققتلك الجزء الأول

52:52

Speaker A

المطلوب. الشغلة الثالثة إنه بدي إياك تعملي ثلاث تكرار، هلقيتها تخيلوا إنه هذا الجزء كله راح.

52:59

Speaker A

ضايل عندي هانا، وضايل عندي هان، يعني بدك تعملي ثلاث تكرارات للزيرو اف اف اتش.

53:06

Speaker A

فهذا رقم واحد يعتبر مرة واحدة، بينكتب ثلاث مرات. فصارت عندي نتيجة نهائية هي عبارة عن شو؟ النتيجة النهائية فعليًا صارت عبارة عن. واحد. اثنين.

53:16

Speaker A

واحد. اثنين. اف. اف. في الذاكرة ما بحطش زيرو عادي يعني، عشان ما تستغربوش، كمان اف اف.

53:25

Speaker A

كمان اف اف، يعني في الميموري يظهر عندي بهذا الشكل. وبدايته وين بتكون؟ اتفقنا عند الرقم واحد.

53:33

Speaker A

تمام؟ خلصنا هلقيتها الجزئية هاي، ندخل على النقطة اللي بعدها وهي نقطة السترينج. إيه، مش جديد علينا صراحة يعني، الستريج شيء موجود بكل اللغات.

53:46

Speaker A

عرفنا له الاسم نيم، أعطيته نوع يكون من نوع بايت، الستريج حكينا كيف أعرفه؟ بحط بالدبل كوتس اللي موجودة عندي هنا.

53:55

Speaker A

بس ايش قصة الزيرو؟ الستريج راح أتعامل معاه معاملة الـ أري اللي بشتغل عليها، ايش يعني؟ يعني كل حرف موجود عندي أما أشرح لكم إياه بشكل أوضح إنه كل حرف موجود عندي بمثله برمز عددي وفق الـ ترميز الأسكى كود.

54:12

Speaker A

وكل رمز موجود عندي هنا بيشغل بايت واحد، يعني سيبوكم من علي، لو أجينا وإحنا حكينا بدنا نشتغل على كلمة لاب اثنين.

54:22

Speaker A

مثلًا أنا كتبت لكم لاب، مش راضي يكتب. إذًا بدنا لاب اثنين. نمشي حبة حبة، ها، حطيناها كستريج.

54:30

Speaker A

نمشي حبة حبة، لو جيت وأنا حاكية حرف الـ إل تبعي بالأسكى كود كيف بكتبه؟ بحكي لكم بكتبه كإنه أربعة سي، طبعًا لازم ما ننساش الـ الـ إتش لأنه أنا بشتغل بنظام الهيكساديسيمال، حلو يا جماعة؟ الـ إيه كيف بكتبها؟ بكتبها بنظام الـ 41،

54:47

Speaker A

ممكن بعض منكم يستغرب إنه ليش إحنا هيك الـ ماس بشتغل على نظام الهيكساديسيمال. الـ بي 42، نمشي بالترتيب، الـ بعد هيك ركزوا معي في مسافة والمسافة تؤخذ بعين الاعتبار، وهذا سؤال قد يأتيكم بالاختبار، تمام؟ إنه أنا كتبت الكلمة تبعتي مش

55:05

Speaker A

مباشرة أنتقل للرقم اثنين، لأ، في عندي أنا سبيس والسبيس هذا بيأخذ عندي بعين الاعتبار، فالـ ماس اللي بيعطيه المسافة هذه بالهيكساديسيمال رقم اللي هو عبارة عن 32 إتش، عفوًا 20 إتش.

55:19

Speaker A

32 هي عبارة عن رقم اثنين، فهي بتيجي 20 إتش، وهذه نقطة جدًا جدًا أساسية إياكم تنسوها، تمام؟ فهي اللي بيطلع عندي، يعني هو هيك بيتخزن في هذه النتيجة، فكأنه بيتخزن عندي أنا هذا اللاب اثنين كيف بدها تتخزن بالميموري؟ حتتخزن على شكل كثير كبير، كل

55:37

Speaker A

رقم بالترميز الاسكي كود تبعه، يعني 4C 41 42 20 32. تمام؟ هاي اللي صار عندي.

55:45

Speaker A

بس الفكرة وين؟ الفكرة إنه بعد ما كتبناهم أرجع أكتب لكم إياهم علشان نستوعب مرة ثانية. كتبنا لاب اثنين ما فيش وسع.

55:55

Speaker A

ثواني بدي أمحي كل هذا و نكمل. تمام، نكمل من وين ما وصلنا. قلنا إنه لاب اثنين حتتخزن بالميموري على شكل 4C 41 42 20 المفروض أنا اخترت كلمة أبسط بس يلا 32.

56:19

Speaker A

بس الحقيقة إنه مش بس هيك رح تتخزن بالميموري. بعد 32 اللي هي آخر قيمة موجودة عندي أصلاً بالكلمة اللي هي رقم اثنين هو تلقائي رح يحط لي صفرين.

56:31

Speaker A

هو تلقائي شو رح يحط صفرين؟ زي لاحظوا معي في المثال اللي مش عندي هنا علي. تخزنت 41 6C 69 وحط لي بالآخر صفرين. إيش الهدف من الصفرين؟ إنه هلأ الكمبيوتر لما بيقرأ مجموعة بايتات ما عندوش طريقة سحرية يعرف إنه النص تبعك أو

56:46

Speaker A

الكلمة تبعتك علي أو الكلمة هاي تبعت لاب اثنين انتهت عند الرقم اثنين أو انتهت عند حرف الـ I.

56:54

Speaker A

فإحنا إيش بنعمل؟ بنحط في نهاية النص رقم صفر. تمام؟ هاي الفكرة. إنه ليش حطيت الصفر؟ كأنه بحكي له اختم لي بالآخر بس تخلص.

57:03

Speaker A

تعمل هذا الكلام إنه حط لي بايت قيمته صفر. تمام؟ والبايت قيمته صفر هذا ممكن أسميه بالـ null terminator. كأنه بحكي له إنه stop عندك هنا وقفنا.

57:14

Speaker A

انتهينا. تمام؟ بس هاي الفكرة. فاللي حيصير يعني مثلاً أعطيكم مثال ثاني. لو أجيت وأنا حكيت في عندي أنا مسج هذا اسم الفاريبل تبعي. من نوع بايت.

57:27

Speaker A

تمام؟ وبدي إياك تخزن لي كلمة هاي. هيو حكيت له بدي إياك تخزن لي كلمة ما نضلنا نكتب عاد عشان نختصر وقت هاي ورحت حطيتله بالاخر الرقم صفر ولو كتبتله نفس الاشي هاي بس بدون ما احطله الرقم صفر ايش بصير اللي بصير انه

57:45

Speaker A

مع الصفر اول حاجة رح يحجزلي ثلاث بايتات مع انه انا عندي اتش والاي لكن رح يحجزلي ثلاث بايتات الثاني رح يحجز بايتين اذا البرنامج تبعي بيعتمد على النل تيرمينيتر اللي ايش حكينا عنه هو عبارة عن الصفر عشان يعرف نهاية النص

58:00

Speaker A

فحذف الصفر رح يسبب مشكلة لانه رح يضل يقرأ رح يضل يستمر في القراءة

Topics: لغة الأسمبلي معمل الأسمبلي أنواع البيانات BYTE WORD الأعداد السالبة Two's Complement تنظيم الذاكرة المصفوفات ترميز ASCII

ذاكر هذا الفيديو

- [بطاقات تعليمية من هذا الفيديو](https://sozai.app/ar/tools/ai-flashcard-generator/?from=transcript&id=86283)
- [اختبار عن هذا الفيديو](https://sozai.app/ar/tools/quiz-generator/?from=transcript&id=86283)

مجاني، يصنعه الذكاء الاصطناعي من هذا النص المفرَّغ. دون تسجيل.


---
This is the markdown twin of https://sozai.app/transcript/i-can-t-create-a-meaningful-slug-from-lab2-part-1-alone-since-the-title/ — the same content, without the markup.
Published by SozAI (https://sozai.app). Reuse and quotation are allowed with attribution and a link back.
Machine-readable index: https://sozai.app/llms.txt · data API: https://sozai.app/api/
