|
-
لغة الاسمبلي
بسم الله الرحمن الرحيم
السلام عليك
الاخوة الاعضاء والمشرفين
في الحقيقة لرغبة مني بأن يكون الانسان العراقي بالخصوص والاسلامي بالعموم الافضل في مجال التكنولوجيا والمعلوماتية ولذلك قررت ان .
اكتب هنا في المنتدى ما تعلمته في دوراتي التي عملتها ومستمر بها ولم انهيها لحد الان في لغة الاسمبلي ( لغة التجميع ) وهي لغة من اهم اللغات ومن خلالها تتعلم عزيزي العضو كيف يعمل الكمبيوتر وقطعه كافة وا نشاء الله ستكون وافية وارغب بأن يشاركني الاخوة بالاسئلة وانا انشاء الله بالخدمة ولا ننسى ان هذا علم ولا اريد ان اتكلم حول فضيلة العلم ولا ننسى بأن هذا المنتدى الجميل يستحق بأن يكون من افضل المنتديات فأرجو المشاركة ولكم جزيل الشكر
ملا حظة : ستكون الدروس من عشرون حلقة دراسية او اكثر انشاء الله تعالى
منتصر
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
شكرا لك وبارك الله بك
:=
تحياتي
-
[align=center]ههههههههههههههههههههههههههههههههههههههههه
أهم شي دوراتك و دروسك مجانا
:D::
و ان شاء الله أنا راح ادرس التصميم الآلي في الكبيوميوتر
و عسى أقدر أفيدكم مستقبلا
و شكرا مقدما على الدروس اللي ما شرحتها و مؤخرا على الدرس الأول
تحياتي [/align]
-
الدرس الاول
المعالج
المعالج عبارة عن القلب النابض للحاسوب فهو يقوم بتنفيذ الاوامر والبرامج المكتوبة بلغة الماكنة فقط. هنالك عدة شركات تنتج معالجات منها شركة انتل التي انتجت معالجات 8086 وغيرها. في هذه الدروس سوف يتم التعامل مع المعالج 8086.
الذاكرة
تستخدم الذاكرة لتخزين البيانات بها . وتقسم الذاكرة الى عدة اقسام اهمها ذاكرة القراءة فقط (ROM) بحيث يمكن القراءة منها ولا يمكن الكتابة عليها وعند انقطاع التيار الكهربائي تبقى البيانات مخزنة فيها.
ملاحظة: هنالك انواع من هذه الذاكرة التي تسمح بالكتابة عليها بمساعدة اجهزة خاصة ومنها من يسمح بالكتابة عليها بمساعدة برامج خاصة.
ذاكرة الوصول العشوائي (RAM): هي ذاكرة للتخزين المؤقت وعند انقطاع التيار الكهربائي عنها تمحى البيانات الموجودة فيها.
تتكون الذاكرة من خلايا. لكل خلية عنوان (address ) وفحوى وكل خلية تتكون من 8 بتات أي بطول بايت واحد ويمكن تخزين رمزا واحدا فقط في كل خلية. عنوان الخلية الاولى في الذاكرة هو صفر (0)
وحدات الذاكرة
1-البت (bit) وهي اصغر وحدة تخزين بحيث تسمح بتخزين 1 أو 0 (1 , 0)
2-النيبل (nibble): وهي 4 بتات
3-بايت (byte): وهو عبارة عن 8 بتات ويمكن تخزين رمزا واحدا فقط . الرموز هي كل ما يمكن كتابته على لوحة المفاتيح ورؤيته على الشاشة. ولكل رمز يوجد قيمة عددية تقابله واذا اردنا معرفة قيمة رمز معين ننظهر في جدول ASCII فهو يحتوي على الرموز والقيم العددية المقابلة لكل رمز
4-كلمة (word) وهي عبارة عن 16 بتا (16 bits)
5-الكلمة المزدوجة (Double word) وهي عبارة عن 32 بتا (32 bits)
6-كيلو بايت (kilo byte): وهي عبارة عن 1024 بايت (1024 byte)
7-ميجا بايت (mega byte): وهي عبارة عن 1024 كيلو بايت
وهنالك وحدات اخرى ولكن لا نريد ان نتطرق اليها لانها ليست مهمة في تدريس هذا الموضوع
الناقل bus
الناقل: هو عبارة عن مجموعة من الاسلاك التي تقوم بنقل بيانات بين المعالج والذاكرة ووحدات الادخال والاخراج
وحدات الادخال :بمساعدتها يمكن ادخال البيانات للمعالج مثل لوحة المفاتيح الفارة وغيرها
وحدات الاخراج: بعد معالجة البيانات في المعالج يقوم المعالج باخراج النتائج على وحدات الاخراج ومنها الشاشة والطابعة وغيرها
1-ناقل العناوين (Address bus): بمساعدتها يختار المعالج خلية الذاكرة او وحدة الادخال او وحدة الاخراج المطلوبة .
2-ناقل البيانات (Data bus): بمساعدتها يتم ارسال او استقبال البيانات
3-خطوط السيطرة (control lines): تستخدم لتنظيم العمليات في الحاسوب مثل اختيار عملية القراءة او اختيار عملية الكتابة وغيرها
مكونات المعالج
1-وحدة الحساب والمنطق (ALU) Arithmetic –loic unit : وهي احدى مكونات المعالج وهي تقوم بجميع العمليات الحسابية (جمع ، طرح، ضرب، قسمة) وجميع العمليات المنطقية مثل او ، وايضا وغيرها (OR , AND) والعمليات الخاصة بالتعامل مع البتات
2-مسجل الرايات (flags register): هو من مكونات المعالج ويحتوي على 16 بتا وكل بت يحتوي على القيمة 0 او 1 وهذه القيمة تعطي معلومة اضافية عن العملية الاخيرة التي قام بها المعالج
3-المسجلات (registers):وظيفة المسجلات الحفظ المؤقت للبيانات لكل مسجل اسم ووظيفة خاصة به
ملاحظة هنالك مكونات اخرى للمعالج مثل (command decoder) ، (instruction queue) , (address buffer)
لغات البرمجة
يمكن تقسيم لغات البرمجة الى عدة اقسام منها
-لغة الماكنة (machine language): وهي اللغة الوحيدة التي يفهما المعالج وهي تتكون من (0 , 1) تمتاز هذه اللغة بالسرعة ولكنها صعبة للبرمجة
-لغة التجميع (assembly language): وهي عبارة عن اختصارات خاصة يستعملها المبرمج لبرمجة المعالجات تمتاز بالسرعة وايضا اقل صعوبة من لغة الماكنة. على المبرمج ان يعرف اقسام واسماء مكونات المعالج. لكل عائلة من المعالجات لها اختصارات خاصة بها.
-لغات عليا (high level language): وهي تتكون من كلمات قريبة على لغة الانسان تمتاز بسهولة البرمجة ولكنها بطيئة بالنسبة للغة الماكنة والتجميع. مثل اللغات C , C++ , visual basic
ملاحظة: عند كتابة برنامج بلغة التجميع او بلغة عليا نحتاج الى مترجم (compiler) يقوم بترجمة البرنامج الى لغة الماكنة حتى يفهمها المعالج
لغة اسمبلي ، اسمبلر و اسمبلي
لغة اسمبلي (assembly language) : هي لغة التجميع
-اسمبلر (assembler): هو المترجم (compiler) وهو عبارة عن برنامج يقوم بتحويل البرامج التي تكتب بلغة التجميع الى لغة الماكنة
-اسمبلي (assembly): وهي عملية تحويل برنامج مكتوب بلغة التجميع بمساعدة الاسمبلر الى لغة الماكنة
الموازين
في لغة التجميع نتعامل مع 3 موازين
1-الميزان الثنائي: يتكون من الرموز 0 , 1 فقط ومن هنا الاسم ثنائي بقدر عدد الرموز التي يحق استعمالها
امثلة:
11011100 , 10001000
لكل بت توجد قيمة مثل الميزان العشري خانة الاحاد خانة العشرات خانة المئات وغيرها هنا القيم كما يلي:
البت القيمة
الاولى 1
الثانية 2
الثالثة 4
الرابعة 8
الخامسة 16
السادسة 32
السابعة 64
الثامنة 128
نرى ان قيمة البت في الميزان العشري تساوي 2 للقوة (مكان البت ناقص 1)
البت الموجودة في جهة اليمين هي البت ذات القيمة الصغرى والبت الموجودة في اقصى اليسار تدعى البت ذات القيمة الكبرى
2-الميزان العشري : يتكون من الرموز 0,1,2,3,4,5,6,7,8,9 اذا هنا نرى ان عدد الرموز هو 10 ومن هنا الاسم
امثلة: 123 ,234, 567
3-ميزان السادس عشر (hexa): يتكون من الرموز 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
امثلة
1A2 , 111, DE1
قيم خانات العدد
الخانة القيمة
الاولى 1
الثانية 16
الثالثة 256
القانون العام:
قيمة الخانة في الميزان العشري=16 للقوة (مكان الخانة ناقص 1)
امثلة
الميزان الثنائي
الميزان العشري
10001000
136
101
5
وهنا شرح الربط بين الموازين
العشري
الثنائي
السادس عشر
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
كتابة الاعداد في لغة التجميع
1-الثنائي: العدد المسجل في الميزان الثنائي يكتب عن يمينه الرمز B
امثلة 10111B , 110B
2-السادس عشر: العدد المسجل في الميزان السادس عشر يكتب عن يمينه الرمز H
امثلة: 11H , 12AH , 10H
3-العشري: يكتب عن يمينه الرمز D او يترك بدون اضافات
امثلة: 11D , 102 , 100 , 100D
ملاحظة: اي سؤال اني حاضر ولاتضوجون ترى سهل بس شوي يراد تفكير
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
اخي منتصر
السلام عليكم ورحمة الله
اخي منتصر في الحقيقة سمعت كثيرا عن الاسمبلي لكن لم اتصور انها بهذه الصعوبة فهل بالامكان تسهيلها لنا قليلا وعذرا لك وتمنياتنا لك بالتوفيق .
( الله يساعدك يمكن شعرك مشيب مو )
[align=center]الله لو انت الماني[/align]
§¤~¤§¤~¤§ [move=down][align=center]اتق شر من احسنت اليه .... والاقارب عقارب[/align][/move]§¤~¤§¤~¤§
-
شكرا اخي الكرخي والاخوة مشرف واحة الرياصة والصور والكمبيوتر
السلام عليكم
في الحقيقة اخي الكرخي هذه اللغة صعبة قليلة وكما شرحت في الدرس الاول تحتاج الى تركيز وجد وستتعلمها وشكرا مجددا لك .
الاخوة المشرفيين :
شكرا جزيلا لكم وبارك الله فيكم في الحقيقة انا دائم السعي لكي يكون هذا المنتدى منتدى معرفة وشكرا مجددا
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
الدرس الثاني
بسم الله الرحمن الرحيم
والصلاة والسلام على اشرف الكائنات محمد وعلى اله الطيبين الطاهرين وعلى بعض اصحابه المنتجبين
السلام عليكم ورحمة الله
ساشرح الدرس الثاني من هذه اللغة الان انشاء الله
في الحقيقة اسهل معالج للعمل للدراسة هو المعالج 8086 وسندرسه في درسنا هذا وفي الدروس السابقة
المعالج 8086
لهذا المعالج 16 ناقل بيانات (data bus) بحيث يسمح بقراءة/كتابة كلمة كاملة 16 بت وايضا يمكن
قراءة /كتابة نصف كلمة 8 بت
لهذا المعالج 20 ناقل عناوين (address bus) بحيث يسمح بالتوجه ل- 1 ميغا عناوين.
وبما ان لكل خلية عنوان خاص اذا يمكن التوجه الى 1 ميغا خلايا ذاكرة
يوجد في هذا المعالج 14 مسجلا. كل مسجل بطول 16 بت.
المسجلات
تقسم المسجلات الى عدة اقسام حسب الوظائف
المجموعة الاولى: المسجلات العامة وتسخدم هذه المسجلات في العمليات الحسابية والمنطقية والتخزين
المؤقت للبيانات. تتكون هذه المجموعة من 4 مسجلات. طول كل مسجل 16 بت.
يمكن تقسيم كل مسجل منها الى قسمين بحيث يكون كل جزء بطول 8 بت. يمكن التوجه الى المسجل باكمله
او الى جزء من المسجل.
في حالة التوجه الى المسجل بأكمله فان المسجل باكمله يتأثر واذا توجهنا الى جزء واحد منه فهو
الذي يتاثر ولكن الجزء الاخر لا يتأثر.
المسجل الاول يدعى ACCUMULATOR ويرمز له في AX . يقسم هذا المسجل الى قسمين AH و AL.
كل قسم بطول 8 بت
Ah Al
مثال : نفرض ان AX=2030H
اذا AH=20H و AL=30H
لو عوضنا 50H في المسجل AL نحصل على AX=2050H أي ان التأثير فقط على AL
ولكن لو عوضنا 402H في AX
نحصل على AL=02H و AH=04H
هنا نرى ان التأثير كان على الجزئين لاننا توجهنا الى AX
هذه مسجلا ت المجموعة الاولى:
AX :Accumulator
BX :Base
CX: Count
DX : Data
ويقسم كل مسجل الى جزئين كالتالي:
Ah Al
BH BL
CH CL
DH DL
المجموعة الثانية:
هي مجموعة تتكون من خمسة مسجلات وطول كل مسجل 16 بت . لا يمكن تقسيم المسجلات الى اجزاء بل نتعامل مع المسجل باكمله والسبب ان هذه المسجلات تحتوي على عناوين وطول كل عنوان 16 بت
SP
Bp
SI
DI
IP
Sp: Stack pointer يؤشر على اخر معطى تم ادخاله الى ال stack . stack هو عبارة عن منطقة في ذاكرة القراءة والكتابة RAM تستخدم للتخزين المؤقت سوف نتطرق لها في دروس قادمة.
BP: Base pointer يستخدم للتأشير على معطى في داخل ال stack
SI:Source index يحتوي على عنوان معطى في مقطع البيانات
DI: Destination Index يحتوي على عنوان معين في مقطع البيانات
IP: Instruction Pointer يحتوي على عنوان الامر التالي الذي يجب ان ينفذه المعالج بعد انهاء الامر الحالي أي الامر الذي ينفذه حاليا
ملاحظات:
-لا يمكن تقسيم أي من هذه المسجلات
-المقطع هو عبارة عن مكان في الذاكرة طوله الاكبر هو 64 كيلوبايت. يمكن ان يحتوي البرنامج على 4 مقاطع ويمكن اقل حسب الحاجة. المقاطع هي كما يلي:
1_مقطع ال stack segment
2-مقطع البيانات Data segmentيحتوي على المتغيرات والثوابت
3-مقطع البيانات الاضافية extra segment يستخدم لتخزين البيانات الاضافية في حالة اذا لم يكن هنالك مكانا في مقطع البيانات ويمكن ايضا استخدامه حتى ولو كان هنالك اماكن فارغة في مقطع البيانات. سوف نرى ذلك في الدروس المقبلة
4-مقطع الاوامر code segment يحتوي على اوامر البرنامج
المجموعة الثالثة:
مجموعة مسجلات المقاطع وهي تحتوي على عناوين بداية المقاطع وطول كل مسجل 16 بت ولا يمكن تقسيمه أي يجب التعامل معه باكمله.وهي 4 مسجلات (registers)
CS
DS
SS
ES
CS: code segment DS:data segment ES: extra segment SS:stack segment
المجموعة الاخيرة:
تحتوي على مسجل واحد وهو مسجل الرايات flags registers . وهو بطول 16 بت يمكن التوجه لكل بت على حدة . كل بت تعطي معلومة معينة عن اخر عملية قامت بها وحدة الحساب والمنطق في المعالج .
على كل مبرمج ان يفهم هذا المسجل بشكل جيد حتى يستطيع ان يبرمج بشكل جيد. تقسم الرايات الى ثلاثة اقسام:
-رايات غير مستعملة أي انها لا تفيد في الحكم على اخر عملية وهي موجودة فقط في حالة تطوير المعالج ربما يحتاجون الى رايات اضافية فيمكن استغلال هذه الرايات. في الوقت الحالي نحن لسنا بحاجة اليها
-رايات الوضع: وهي الرايات التي تتأثر وتتغير حسب وضع العمليات التي تقوم بها وحدة الحساب والمنطق في المعالج
-رايات السيطرة: وهي رايات المبرمج يتحكم بوضعها فاذا وضع بداخلها القيمة 1 تبقى هذه القيمة حتى يغيرها المبرمج في البرنامج عن طريق اوامر برمجة خاصة بها
مسجل الرايات في المعالج 8086 يحتوي على 7 رايات غير مستخدمة 6 رايات وضع و 3 رايات سيطرة
X X X X OF DF IF TF SF ZF X AF X PF X CF
كل راية تحتوي على الاشارة X فهي غير مستخدمة
وهنا لصعوبة رسم الحدول سندرج البيانات كل الاتي
الرمز
اسم الراية
النوع
ملاحظات
CF
Carry flag
وضع
يأخذ 1 اذا اعطت البت الاخيرة عن اليسار 1 الى الخارج او اخذت 1 من الخارج والا يأخذ صفر
PF
Parity flag
وضع
اذا كان عدد ال 1 في اول 8 بتات من النتيجة زوجي تأخذ هذه الراية 1 والا تأخذ صفر
AF
Auxiliary flag
وضع
اذا اعطت البت الرابعة البت الخامسه 1 او اخذت البت الرابعة من البت الخامسة 1 تأخذ هذه الراية 1 والا صفر
ZF
Zero flag
وضع
اذا كانت النتيجة صفر تأخذ هذه الراية 1 والا تأخذ صفر
SF
Sign flag
وضع
اذا كانت النتيجة سالبة تأخذ هذه الراية القيمة1 والا تأخذ القيمة صفر
TF
Trap flag
سيطرة
اذا وضع المبرمج بها القيمة 1 يتم تنفيذ امر واحد فقط من الاوامر وبعدها تأخذ القيمة صفر
IF
Interrupt flag
سيطرة
نضعه 1 للسماح لعمليات interrupt في مدخل interrupt للمعالج
DF
Direction Flag
سيطرة
لتحديد اتجاه الحركة في حالة قراءة النصوص
OF
Overflow flag
وضع
تأخذ 1 اذا كانت النتيجة اكبر من المكان المخصص لحفظها والا تأخذ صفر
وصلى الله على محمد وعلى اله الطاهرين
وكما قلت بالمشاركات يكون العلم اسهل وافضل
منتصر
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
الدرس الثالث من الاسمبلي
[align=center]بسم الله الرحمن الرحيم
والصلاة والسلام على سيد الكائنات والمرسلين محمد واله الطاهرين .
السلام عليكم
ارفق لكم الدرس الثالث من الاسمبلي متمني منكم المشاركة وبارك الله فيكم [/align]
الموازيين الثلاث الرئيسية
هنالك العديد من الموازين ولكن ما يهمنا الان هو
1-الميزان الثنائي: رموز هذا الميزان 1 , 0 وبمساعدة هذه الرموز يتم تكوين الاعداد في هذا الميزان
مثلا: هذه اربعة اعداد في الميزان الثنائي
1001 0101 1100110 101010
الاعداد التالية غير صحيحة لان بها رموز لا تنتمي لرموز الميزان
العدد السبب
102 لان الرمز 2 ليس من رموز الميزان
11013 بسبب الرمز 3 فهذا الرمز لا يتبع لرموز الميزان
2-الميزان العشري : رموز هذا الميزان 0,1,2,3,4,5,6,7,8,9 وكما نلاحظ عددها 10 رموز
امثلة: 201 , 100 , 532 , 1234
الاعداد التالية غير صحيحة لان بها رموز لا تنتمي لرموز الميزان
العدد السبب
10A2 لان الرمز A ليس من رموز الميزان
11013F بسبب الرمز F فهذا الرمز لا يتبع لرموز الميزان
3-الميزان السادس عشر: رموز هذا الميزان 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
امثلة:
217 , 2A3 , 5FA1 , FF , 101
الاعداد التالية غير صحيحة لان بها رموز لا تنتمي لرموز الميزان
العدد السبب
102G لان الرمز G ليس من رموز الميزان
1101K3 بسبب الرمز K فهذا الرمز لا يتبع لرموز الميزان
التحويل بين الموازين
لتحويل أي عدد في أي ميزان الى الميزان العشري نعمل ما يلي:
1-نحول العدد المراد تحويله الى صورة مجموع القوى
2-نجمع القيم للحصول على القيمة المطلوبة
القانون العام لصورة قانون مجموع القوى
X=an*bn-1+an-1*bn-2+….+a1*b0
ملاحظة:أي عدد للقوة صفر = واحد
ما عدا الصفر
لذلك b0=1
مثال: حول العدد 1101)) في الميزان الثنائي الى الميزان العشري
الحل: هنا n=4 b=2
X=1*23+1*22+0*21+1*20
X=1*8+1*4+0*2+1*1
X=8+4+0+1
X=13
اذا
الميزان الثنائي
العشري
(1101)2=(13)10
مثال اخر معطى العدد 1A في الميزان السادس عشر جد قيمة هذا العدد في الميزان العشري.
هنا: b=16 n=2
X=1*161+A*160
X=1*16+10*1
X=16+10
X=26
ملاحظة:
العشري السادس عشر
10 A
11 B
12 C
13 D
14 E
15 F
مثال اخر
حول العدد 2F الى الميزان العشري
X=2*161+F*160
X=2*16+15*1
X=32+15
X=47
(2F)16=(47)10
التحويل من الميزان 16 الى الميزان 2
كل خانة في ميزان السادس عشر عبارة عن 4 خانات في الميزان الثنائي
لفهم عملية التحويل يجب ان نعرف ما يلي:
لكل خانة يوجد وزن ووزنها هو الاساس للقوة المكان ناقص واحد
أي bn-1
في الجدول التالي قيم الخانات في الميزان الثنائي b=2
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 2 4 8 16 32 64 128
في الجدول التالي قيم الخانات في الميزان العشري b=10
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 10 100 1000 10000 105 106 107
في الجدول التالي قيم الخانات في الميزان السادس عشر b=16
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 16 256 4096 164 165 166 167
الجدول التالي يربط بين الميزان السادس عشر والثنائي
تذكر كل خانة في الميزان السادس عشر عبارة عن 4 خانات في الميزان الثنائي
العشري ا لميزان الثنائي السادس عشر
الخانة الاولى الخانة الثانية الخانة الثالثة الخانة الرابعة
1 2 4 8
0 0 0 0 0 0
1 1 0 0 0 1
2 0 1 0 0 2
3 1 1 0 0 3
4 0 0 1 0 4
5 1 0 1 0 5
6 0 1 1 0 6
7 1 1 1 0 7
8 0 0 0 1 8
9 1 0 0 1 9
10 0 1 0 1 A
11 1 1 0 1 B
12 0 0 1 1 C
13 1 0 1 1 D
14 0 1 1 1 E
15 1 1 1 1 F
معطى العدد 12 في الميزان السادس عشر جد قيمته في الميزان الثنائي
1 2
0001 0010
اذا الجواب النهائي هو 00010010
(12)16=(00010010)2
الجدول السابق يصلح للتحويل من السادس عشر الى الميزان الثنائي وبالعكس
مع مراعاة الملاحظة الاولى الا وهي ان كل 4 خانات في الميزان الثنائي عبارة عن خانة في الميزان السادس عشر
امثلة:
معطى العدد 10110011 في الميزان الثنائي جد العدد في الميزان السادس عشر
الحل:
نعمل مجموعة كل مجموعة عبارة عن 4 خانات نبدأ دائما من اليمين
المجموعة الاولى: 0011 وحسب الجدول هي الرقم 3
المجموعة الثانية: 1011 وحسب الجدول هي B
الحل النهائي:
(10110011)2=(B3)16
ملاحظة مهمة: اذا كان عدد الخانات اقل من 4 نضيف اصفار على يسار العدد حتى نكمل المجموعة الى 4 خانات
مثال:
معطى العدد التالي في الثنائي 1010110 جد العدد في السادس عشر
المجموعة الاولى: 0110 وحسب الجدول هذه 6
المجموعة الثانية : 101 وهي تتكون من 3 خانات لذا علينا ان نضيف 0 على يسار المجموعة لنحصل على 4 خانات
المجموعة الجديدة: 0101 وحسب الجدول هي 5
الحل النهائي
1010110)2=(53)16)
التحويل من العشري الى الميزان الثنائي
لفهم الطريقة علينا الاتفاق على الاشياء التالية:
-الخانة الاولى هي الخانة اليمنى وهي ذات القيمة الصغرى وقيمتها 20=1
الخانة التي تليها هي الخانة الثانية وهي تقع على يسارها وهكذا
-عملية التحويل عن طريق القسمة نقسم العدد العشري على 2 والخانة التي عليها الدور تأخذ باقي القسمة ونقسم الناتج الصحيح مرة ثانية على 2 وتأخذ الخانة التالية باقي القسمة نستمر في هذه الطريقة حتى يكون المقسوم اقل من المقسوم عليه فتأخذ الخانة الحالية قيمة المقسوم وينتهي التحويل.
نقوم الان بكتابة الألغوريثم
1. عوض n=1
2. عوض المقسوم عليه b=2
3. عوض العدد العشري في المقسوم x
4. طالما x اكبر او يساوي b نفذ
4.1 قسم x على b
4.2 ضع الباقي في الخانة n
4.3 ضع في x الناتج الصحيح
4.4 اضف 1 لرقم الخانة n
5.ضع X في الخانة n
مثال:
معطى العدد 12 عشري حول العدد الى الميزان الثنائي
الحل:
العدد الناتج الصحيح الباقي هل X>=b العدد الثنائي رقم الخانة n
1
12
نعم
6 0 0 2
6 نعم
3 0 00 3
3 نعم
1 1 100 4
1 لا
1100
طريقة اخرى نقسم على 2 حتى يكون الناتج صفر
مثال:
معطى العدد العشري 57 حول العدد الى الثنائي
المقسوم المقسوم عليه الناتج الصحيح الباقي
57 2 28 1
28 2 14 0
14 2 7 0
7 2 3 1
3 2 1 1
1 2 0 1
الان نكتب العدد نبدأ من الاسفل
111001
ملاحظة اذا اردنا تحويل عدد عشري الى الميزان السادس عشر نعمل نفس الشيء ولكن بدلا من b=2 يكون b=16
مع مراعاة الجدول السابق
A=10 b=11 C=12 D=13 E=14 F=15
مثال :
حول العدد 254 الى الميزان السادس عشر
المقسوم المقسوم عليه الناتج الصحيح الباقي
254 16 15 14
15 16 0 15
عند تسجيل العدد نتذكر الجدول E=14 F=15
الجواب النهائي
(254)10=(FE)16
طريقة اخرى هي الانتقال من الميزان العشري الى الثنائي وبعدها من الثنائي الى السادس عشر
طريقة اخرى لتحويل العدد من العشري الى الثنائي هي كما يلي:
نحن نعرف ان لكل خانة قيمة حسب قانون bn-1
اذا نظرنا بتمعن نجد ان قيمة الخانة التالية هي دائما قيمة الخانة الحالية مضروبة بالعدد 2
عند تحويل عدد عشري نبدأ بتسجيل القيم حتى الحصول على قيمة خانة تساوي العدد المطلوب او اكبر منه مثال:
حول العدد 104 الى الميزان الثنائي
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 2 4 8 16 32 64 128
نحن هنا بحاجة الى 8 خانات لان 104 اكبر من 64 واصغر من 128
الحل الان كما يلي:
نبدأ من اليسار ونسأل السؤال هل قيمة الخانة اقل او تساوي العدد الذي معنا اذا كان الجواب نعم نضع القيمة 1 تحت الخانة ونطرح من العدد قيمة الخانة وننتقل الى الخانة التي عن يمينها والا نضع 0 تحت الخانة ولا نطرح شيء وننتقل الى الخانة التي عن يمينها وهكذا
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 2 4 8 16 32 64 128
-هل 128 اصغر او تساوي 104 الجواب كلا اذا نضع صفر
-هل 64 اصغر او تساوي 104 الجواب نعم اذا نضع 1 ونطرح 64 يبقى معنا 40
- هل 32 اصغر او تساوي 40 الجواب نعم اذا نضع 1 ونطرح 32 يبقى معنا 8
-هل 16 اصغر او تساوي 8 الجواب الجواب لا اذا نضع صفر
-هل 8 اصغر او تساوي 8 الجواب نعم اذا نضع 1 ونطرح 8 يبقى معنا صفر
-هل 4 اصغر او تساوي 0 الجواب كلا اذا نضع صفر
-هل 2 اصغر او تساوي 0 الجواب كلا اذا نضع صفر
-هل 1 اصغر او تساوي 0 الجواب كلا اذا نضع صفر
الحل النهائي
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الثامنة
1 2 4 8 16 32 64 128
0 0 0 1 0 1 1 0
الحل النهائي
(104)10=(01101000)2
ملاحظة: جميع الطرق التي تم شرحها في هذا الدرس تناسب الاعداد الموجبة فقط
الاخوة الاعزاء يرجى المشاركةفي الدروس واي سؤال انا حاضر
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
الدرس الرابع
بسم الله الرحمن الرحيم
والسلام عليكم ورحمة الله
وتكلمة لوعدي اضع الدرس الرابع ارجوا القبول
الاعداد الموجهة ( السالبة والموجبة )
تقسم الاعداد الى قسمين اعداد موجبة واعداد سالبة والسؤال هو كيف يمكن
ان نفرق بين هذه الاعداد. من المعروف ان العدد في الميزان الثنائي يتكون
من بتات . البت الاولى الموجودة في الجهة اليمنى هي البت ذات القيمة
الصغرى واما البت الموجودة في الجهة اليسرى فهي بت الاشارة . اذا كانت
قيمتها 1 فالعدد سالب واذا كانت قيمتها 0 فالعدد موجب.
اذا لمعرفة نوع العدد يجب تحويله الى الميزان الثنائي. ولكن هنالك طرق
اخرى يمكن بمساعدتها معرفة نوع العدد . في البداية نركز على الطريقة
الاولى.
مثال: معطى المتغير X من نوع byte . x=7DH هل قيمة المتغير قيمة موجبة
ام سالبة؟ الرمز H يدل على الميزان السادس عشر
الحل :
اولا علينا ان نحول العدد الى الميزان الثنائي
7DH=011111012
اذا نظرنا الى البت الاخيرة في الجهة اليسرى نرى ان قيمتها 0 لذلك قيمة
المتغير موجبة.
مثال اخر
X=92H
92H=10010010 القيمة سالبة لان البت الاخيرة المسؤلة عن الاشارة
قيمتها 1 استنتاج : اكبر قيمة موجبة للمتغير x هي 01111111 وهي تساوي
7FH وهي تساوي 127 عشري
الاعداد السالبة
معطى ان المتغير x= -6 في الميزان العشري سجل العدد في الميزان الثنائي
والميزان السادس عشر
الحل:
حسب المعطيات فان المتغير x من نوع byte اذا سوف نستخدم 8 بتات
الخطوة الاولى: نكتب القيمة المطلقة (العدد الموجب) للمتغير في الميزان
الثنائي حسب ما تعلمناه في الدروس السابقة:
الاولى الثانية الثالثة الرابعة الخامسة السادسة السابعة الاشارة
1 2 4 8 16 32 64 0
1 1 0 0 0 0 0
اذا
6)10=(00000110)2)
الخطوة الثانية : نبدأ بكتابة العدد من جهة اليمين كما هو حتى ان نصادف
خانة قيمتها واحد فنسجلها ونعكس كل الخانات التي بعدها (أي نسجل بدلا
من 1 صفر وبدلا من صفر 1)
(-6)10=111110102=(FA)16
طريقة اخرى هي كما يلي:
-نحول القيمة المطلق للقيمة السالبة في الميزان السادس عشر
610=(06)16 لقد سجلنا 06 لاننا بحاجة الى 8 بتات
-الخطوة الثانية نطرح 06 من الصفر والسبب هو
-6=0-6
اذا:
00
-
06
-----
0 ناقص 6 لا يجوز تأخذ الصفر الاولى 16 من الصفر الثانية 16 ناقص 6
تساوي 10 عشري وهي A في الميزان السادس عشرالصفر الثانية اعطت الصفر
الاولى لهذا السبب هي الان -1 فتأخذ 16 الان 16-1 يبقى معها 15 الان 15-0=15 وهي تساوي F في الميزان السادس عشر
الجواب النهائي
-6=(FA)16=(11111010)2
والصلاة والسلام على افضل الكائنات والمرسلين ابو القاسم محمد واله اجمعين
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
أحسنت أخي منتصر على هذه المعلومات القيمة و المفيدة.
نرجو منك الأستمرار لتعم الفائدة.
و شكراً جزيلاً لك =X:
-
عفوا
بسم الله الرحمن الرحيم
السلام عليكم
الاخ صفاء عفوا وانا خدام الطيبين
منتصر
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
كتب حول لغة الاسمبلي
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
بارك الله بالاخ منتصر على هذا المجهود الطيب، ووفق الله الجميع الى ما فيه صالحهم انشاء الله.
ارجو ان تتقبلوا هذه المساهمة البسيطة مني في هذا الموضوع، وهي كتابين عربي وانكليزي حول لغة الاسمبلي لكي يسهل على الاخوة والاخوات مراجعة المواضيع التي يتطرق اليها اخونا منتصر بتفصيل اكثر.
الكتاب العربي:
الجزء الاول
http://www.al-waeli.com/Books/Asm/assemply_part1.rar
الجزء الثاني
http://www.al-waeli.com/Books/Asm/assemply_part2.rar
الكتاب الانكليزي
http://www.al-waeli.com/Books/Asm/Th...f_Assembly.rar
مع امنياتي القلبية لكم بالموفقية
-
شكرا
بسم الله الرحمن الرحيم
والسلام عليكم ورحمة الله وبركاته
الاخ وادي السلام المحترم
شكرا جزيلا لك بمساعدتي ومساعدة الاخوة اعضاء المنتدى وفي الحقيقة الكتب في غاية الروعة .
وفي الحقيقة كما قلت في بداية كتابتي لهذه الدروس اني الان انا ادرسها وهي صعبة نوعا ما واعتذر ان كان اسلوبي ركيك في توصيلي المعلومة . وشكر ا مرة اخرى
منتصر
اجمل لعبة متصفح للعب عبر الانترنت اضغط على الرابط
أو
-
السلام عليكم ورحمة الله وبركاته
اغاتي منتصر انا بالخدمة، ولا داعي للشكر فزكاة العلم نشره عيوني انته.
اتمنى عليكم ان تخبروني عن اي كتاب تحتاجون اليه وساكون بخدمتكم انشاء الله دوما وابدا.
اقترح عليكم وعلى الاخوة في المنتدى انشاء واحة للكتب سواء العلمية منها ام الدينية او اي نوع اخر من الكتب لكي نفتح الافاق امام احبتنا في الاطلاع عليها، او يمكن لطالب العلم من توجيه نداء الى الاخوة الزائرين حول اسم الكتاب الذي يحتاج اليه.
كذلك يمكننا واياكم في المستقبل القريب انشاء الله فتح ما يسمى بال HUB في برنامج ال DC++ لكي نقوم بنشر ليس فقط الكتب وانما افلام البرامج التعليمية، على سبيل المثال فلم تعليم الفوتوشوب وغيرها من الافلام التعليمية الجيدة جدا والتي تختصر الوقت على طالب العلم.
ارجو دراسة الاقتراحات واعلامي، وانا بخدمتكم انشاء الله.
اخوكم / وادي السلام
[align=center]أعلمتم أن التشيع مذهبي * إني أقول به ولست بناقض
إن كان رفضا حب آل محمد * فليشهد الثقلان أني رافضي [/align]
-
جهد مبارك اخي منتصر
بالحقيقة انا درست مادة assembly language وهي من أصعب مواد البرمجة. حتى حصلت على c+ :) دوختني
آمل أن تعم الفائدة ويفهم الجميع . وعندي إقتراح اذا سمحتوا . من الواضح انكم متخصصين في مواد البرمجة من الشرح فيا حبذا تشرحوا كذلك برنامج oracle لأنه المنتشر الان تقريباً وتستخدمه الشركات للبرمجة وخصوصا في مواقع الانترنت والاسيمبلي لا يستخدم الان.
ولكن الذي يريد تعلم مواد البرمجة لا بد له من تعلم الاساسيات مثل البرنامج الذي تشرحه الان وغيره منpascal , c++ ,visual basiv
بارك الله في جهودكم وفي خدمتكم ان شاء الله
يا محوّل الحول والاحوال ، حوّل حالنا إلى أحسن الحال......
ضوابط المشاركة
- لا تستطيع إضافة مواضيع جديدة
- لا تستطيع الرد على المواضيع
- لا تستطيع إرفاق ملفات
- لا تستطيع تعديل مشاركاتك
-
قوانين المنتدى
|
|