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

التمييز بين ال 16 بت وال 32 بت

بدأه Shanx في 7 مايو 2008 · 16 رد · 3,550 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

بالبداية اعتذر اذا كانت بأسألتي شي مكرر

انا بحثت ولم أجد مطلبي

لازلت ببداية الاسمبلي بل وقبل البداية

ولما بحثت عن الفرق بين اسمبلي 16 بت و32 بت

وجدت المفهوم العام

بس كيف نميز بين الاثنين من خلال الشفرة

مثلا انا اقرأ كتاب عن الاسمبلي

لكن لم يطري الكاتب الـ 16 و32

هو للاسمبلي التابعه لاجهزة الـ IBM

كيف اميز بين الاسمبلي 16 و32

سمعت لا اذكر أين ان الاسمبلي 16 هي التي تكون بها المقاطعات

أيعني الـ 32 ما فيها مقاطعات؟

ولو بدأت بتلعم الـ 16 ثم أردت أن اتجه للـ 32

هل احتاج لدراسة جديدة وطويلة أم فروقات بسيطه

ولو كانت فروقات بسيطه بماذا "تقريبا"

اعتذر على الازعاج

وامنيتي أن ألقى الاجابه ها هنا

والشكر موصول مقدما

#2

أبسط شئ

أسماء الريجيستر المستخدمه فى كل كود لأن أسماء المسجلات فى ال32 مختلفه عنها فى ال16

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

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#3

يعنى مثلا

هذه أسماء المسجلات الأساسية المشهورة فى ال16 بت

ax,bx,dx,cx

أما فى ال32بت

EAX, EBX, ECX, and EDX

الأولى بطول 16 بت و الثانية بطول 32 بت

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

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#4
اقتباس
بس كيف نميز بين الاثنين من خلال الشفرة

من ال header الخاص بالكود

مثل

.586

.model flat,stdcall

option casemap:none

include windows.inc

include advapi32.inc

هذا خاص بال 32 بت ،لاحظ الكلمات المؤشر عليها بالاحمر ولاحظ ال32

.model smallتتواجد في header ال16 بت

في حال لم يتوفر ال Header:

هناك تعليمات لا يقبل ال 32 بت التعامل معها فاذا وجدتها فاععلم انها ل 16 بت مثل:

out

in

int XX ; وهي التعليمة الخاصة بالمقاطعة

بينما في ال32 بت سترى وجود اسماء لدوال ال api مثل:

call GetModuleHandle

invoke CreateFile ,invoke CloseHandle ....etc

وكما اشار الاخ نوربعض أسماء الريجيسترمثل:

CS,DS --------> 16بت

اقتباس
مثلا انا اقرأ كتاب عن الاسمبلي

لكن لم يطري الكاتب الـ 16 و32

هو للاسمبلي التابعه لاجهزة الـ IBM

يبقى الكتاب اكيد 16 بت

اقتباس
أيعني الـ 32 ما فيها مقاطعات؟

كلا ليس فيها مقاطعات.

اقتباس
ولو بدأت بتلعم الـ 16 ثم أردت أن اتجه للـ 32

هل احتاج لدراسة جديدة وطويلة أم فروقات بسيطه

ولو كانت فروقات بسيطه بماذا "تقريبا"

ليس بالوقت الطويل على حسب نشاطك، ستتغير بعض المفاهيم

نصيحة:

اتجه مباشرة لل 32 بت فهي اسهل الف مرة من ال16 بت ، و تقريبا ال16 انقرض فستضيع جزء كبير من وقتك ،

وغير ذلك سوف تبعدك ال 16 بت عن البرمجة بالاسمبلي بسرعة قصوى وستتجه الى لغة اخرى مباشرة وستتعقد منها

حتى انك لن تفكر بال32 بت، اضف الى ذلك ال32 بت هي الواقع الذي نعيش وهي التي تستطيع ان تعمل بها شي مفيد وجيد حاليا

فما بالك اذا اخبرتك ان 64 بت مطروحة منذ زمن ومستقبلا العمل سيكون عليها (اعمل بسرعة مفيش وقت :D )

تم تعديل هذه المشاركة بواسطة AND في 7 مايو 2008 في 18:23

#5
اقتباس
هذه أسماء المسجلات الأساسية المشهورة فى ال16 بت

ax,bx,dx,cx

أما فى ال32بت

EAX, EBX, ECX, and EDX

اها

الكتاب الذي أقرأه يتكلم عن الـ 16 اذن

ولكنه يتطرق للمعالجين 386/486 ويذكر الفرق في نهاية بعض المواضيع

كما المسجلات ذكر الأسماء التابعة للـ 16 ثم بنهاية الفقرة تطرق لهذين المعالجين واختلاف المسجلين

أيعني انه يتحدث عن النوعين ؟ يبدو هذا مشوشا :lol:

اقتباس
نصيحة:

اتجه مباشرة لل 32 بت فهي اسهل الف مرة من ال16 بت ، و تقريبا ال16 انقرض فستضيع جزء كبير من وقتك ،

وغير ذلك سوف تبعدك ال 16 بت عن البرمجة بالاسمبلي بسرعة قصوى وستتجه الى لغة اخرى مباشرة وستتعقد منها

حتى انك لن تفكر بال32 بت، اضف الى ذلك ال32 بت هي الواقع الذي نعيش وهي التي تستطيع ان تعمل بها شي مفيد وجيد حاليا

فما بالك اذا اخبرتك ان 64 بت مطروحة منذ زمن ومستقبلا العمل سيكون عليها (اعمل بسرعة مفيش وقت )

يبدو انني سأحول للـ 32 بت مباشرة من كلامك

ولكني مجرد انني احرص على ان الا اغفل شيئا قد ينقص احترافي مستقبلا في هذا المجال لو قدر الله

ولكن بما انها بدأت تنقرض "وقد سمعت هذا الكلام كثيرا لكني مع ذلك ارى دروسها بكل مكان فانتابني شك"

ولكن من كلامك يبدو ان لا تأثير قوي بها ..خاصة مستقبلا ..

اشكركم جزيل الشكر

#6
اقتباس
اتجه مباشرة لل 32 بت فهي اسهل الف مرة من ال16 بت ، و تقريبا ال16 انقرض فستضيع جزء كبير من وقتك ،

وغير ذلك سوف تبعدك ال 16 بت عن البرمجة بالاسمبلي بسرعة قصوى وستتجه الى لغة اخرى مباشرة وستتعقد منها

حتى انك لن تفكر بال32 بت، اضف الى ذلك ال32 بت هي الواقع الذي نعيش وهي التي تستطيع ان تعمل بها شي مفيد وجيد حاليا

فما بالك اذا اخبرتك ان 64 بت مطروحة منذ زمن ومستقبلا العمل سيكون عليها (اعمل بسرعة مفيش وقت )

أخى بارك الله فيك

مع إحترامى الشديد لكلامك الذى أعتبره صحيحا

و لكن تعلم الأسمبلى سواء كانت 16 32 64 أو حتى 128 "لو أنهم ينون إيجادها"

يكون حسب الهدف منها

فمثلا من أجل البرمجة فى النظم المخبئية لا تستطيع بأي حال أن تبتعد عن ال16 بت بل أغلب عملك على ال16 بت و لا تحتاج الى 32بت إلا فى الأشياء المتقدمة جدا عادة

ثانيا لابد أن يبدأ المرء التعلم على ال8086 على الأقل حتى يتعلم المبادئ الأساسية :) و حتى يستطيع أن يتقن المصطلحات الرسمية التى أصلها الجيل الأول من الذين صنعوا الUProcessor

هذا و الله أعلم

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

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#7

تصحيح خفيف بعد اذنك AND :

اقتباس
هناك تعليمات لا يقبل ال 32 بت التعامل معها فاذا وجدتها فاععلم انها ل 16 بت مثل:

out

in

int XX ; وهي التعليمة الخاصة بالمقاطعة

يمكن استعمال التعليمات السابقة في asm 32bit لكنها تخضع لـprivilege معينة , اعتقد انك تريد توفير الجهد والشوشرة على السائل لأنه قبل الصفر كما يقول :thumb_up:

انا بدأت بالـ32bit لكن لما اردت فهم اشياء في الـSystem Internals كان لابد من العودة الى الـ16بت لأنها الاساس .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#8
اقتباس
الكتاب الذي أقرأه يتكلم عن الـ 16 اذن

ماهو إسم الكتاب .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#9

السلام عليكم ورحمة الله وبركاته اخي العزيز ابو مقاتل

وفيك بارك الله

اقتباس
البرمجة فى النظم المخبئية

ما هي النظم المخبئية هذه :wacko:

اقتباس
حسب الهدف منها

صحيح ،لكن الواقع يقضي بعدم وجود هدف حقيقي على مستوى ال16 بت حيث يمكن استخدامها في برمجة الBoot الخاص بنظم التشغيل او بناء برامج تعمل في dos مثل حزمة Hirens Boot ، وبالتالي لاتصبح خبار جيد مع وجود ال C والباسكال

اقتباس
ثانيا لابد أن يبدأ المرء التعلم على ال8086 على الأقل حتى يتعلم المبادئ الأساسية و حتى يستطيع أن يتقن المصطلحات الرسمية التى أصلها الجيل الأول من الذين صنعوا الUProcessor

نعم يجب على المبتدئ في الاسمبلي

usama707 كتب:
إبدأ بالقراءة عن الفيزياء الكهربية ثم الإلكترونيات ثم Computer Architecture And Organization يعني الهاردوير

و طبعا شوية رياضيات ثانوي حتكون مفيدة جدا

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

usama707 كتب:
لابد أولا أن تقرأ كتب عن مقدمات في الكمبيوتر و تعرف مما يتكون و ما هي أنظمة العد و ما هو النظام الثنائي و ما هي البوابات المنطقية و كيفية التعامل معها و كيفية تصميمها

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

فطبعا كتب ال 16 بت تشرح المسجلات والمكدس والذاكرة والتعامل معها فضروري قراءة هذه الاقسام بها

اما الاقسام التي تتكلم عن البرمجة بها فلا اراها مناسبة فما الفائدة من العودة الا جدول المقاطعات لمعرفة كيفية تنفيذ هذه العملية!!

هذا من وجهة نظري :D

اقتباس
تصحيح خفيف بعد اذنك AND :

انت تؤمر يا GM :D

اقتباس
يمكن استعمال التعليمات السابقة في asm 32bit لكنها تخضع لـprivilege معينة , اعتقد انك تريد توفير الجهد والشوشرة على السائل لأنه قبل الصفر كما يقول

أفدنا جزاك الله كل خير

بس انت تعلم ان هذه ال privilege تقيد الحرية بشكل كبير

وهل يسمح ال Masm32 أصلا بقبول هذه التعليمات عند عمل compile?

واوعى تقولي ال int 2e مثل باقي المقاطعات :D

أسهب يا Gaming وأفدنا خصوصا انك من المقيمين في الكرنال :D

#10
AND كتب:
ما هي النظم المخبئية هذه

System Internals

AND كتب:
أسهب يا Gaming وأفدنا خصوصا انك من المقيمين في الكرنال :D

انصحك ان تبعد عن Kernel ان لم تعد العدة له يصيبك بصداع و يؤثر عليك سلبا...

ولاتنظر للغة التجميع فقط من خلال Masm32 فهناك Fasm و غيره :D

d4baa0.gif
#11

فقط اضف حرف p قبل الدايركتف الذي يحدد نوع البروسيسور مثال:

.386p
.586p

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#12

int 2e مثل باقي المقاطعات فلها دور مثل الباقين , دورها هو تنفيذ خدمات النظام Services , في xp وما فوقه غير مستعملة ويستخدم sysenter بدلا منها , اذا قمت بعمل redirect للـvector الخاص بها الى كود من عندك سيتم تنفيذه ... طبعا هذا كله يتم في مستوى النظام.

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#13
اقتباس
ما هي النظم المخبئية هذه
اقتباس
System Internals

لا لا لا يا أخ محمد عبد العزيز أنا كان قصدى Embedded system

الأنظمة المخبئية أو الEMBEDDED SYSTEMS هى بساطة الدارات الإلكترونية الموجودة فى كثير من الطرفيات و الطرفيات مثل دارات التحكم فى فرن الميكروويف و التلفاز و جهاز الفيديودى فى دى و الغسالات الحديثة أو فى الأجهزة النقالة كلها سواء كانت هواتف أو أجهزة القياس الى أخرة من تلك الأنظمة التى يستخدمها المستخدم أو المتخصص فى مجال ما و يتم وضع برنامج عليها لإدارتها تماما كالحاسوب الشخصى

فهى تتكون من معالج به وحدة معالجة مركزية و زاكرة متطايرة و أيضا مكان تخزينى

و هذا كله من الممكن أن تجده داخل دارة واحدة ألا و هى الميكروكنترولر مثل الat89c51

و أيضا تجد هذه النظم المخبئية داخل أجهزة الراوتر و الطابعات و الفاكسات و غيرها من الأجهزة التى من حولنا

كلها يتم برمجتها بنظام معين عادة يكون مكتوب بالسى أو بالأسمبلى 16 بت

هذه هى ببساطة الأنظمة المخبئية :D

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

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#14

احم :lol:

يبدو من النقاش ان أهمية الـ 16 بت فيها وجهات نظر تمنع وجود حقيقة واحدة

ويبدو انني لن ادخل بتفاصيلها لكن سألقي نظرة عامة عليها قبل الدخول في الـ 32 بت

واذا شعرت انني احتاج للرجوع للـ 16 سأفعل

أعجز عن شكركم على تفاعلكم الجميل ووفقكم الله

وعلى العموم تم تأجيل مشروع تعلم الاسمبلي لأسباب خارجية لتاريخ قادم

لكن كل هذا فادني حقا في أخذ فكرة عن الموضوع

شكرا ..

#15
نــور كتب:
لا لا لا يا أخ محمد عبد العزيز أنا كان قصدى Embedded system

الأنظمة المخبئية أو الEMBEDDED SYSTEMS

من اين لك بهذا التعريب!!

التعريب الصحيح ل EMBEDDED SYSTEMS هو الانظمة المظمنة او الأنظمة المطمورة

ولو انتبهت قلبلا لنفس رابط الويكي الذي وضعته به المصطلح العربي

http://ar.wikipedia.org/wiki/أنظمة_مضمنة

d4baa0.gif
#16

أعتقد إن مشاركات الشباب صحيحه . بس أعتقد إن أهم إعتبار لبيئة تطوير 16-بت أو 32-بت أو حتى 64-بت هي إعطاء قيمة لا تتعدى هذا المجال .والله أعلم

#17
lightening_man2005 كتب:
أعتقد إن مشاركات الشباب صحيحه . بس أعتقد إن أهم....

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

الفرق ليس فقط في سعة المسجلات، فلسفة البرمجة 16bits تختلف عن فلسفة البرمجة 32bits

ولكي نكون اكثر دقة يجب ان نتحدث على مستوى المعالج 16bits من 8080/8086 الى ظهور 32bits مع 80386 وما فوق حتى Itanium بالنسبة ل64bits

d4baa0.gif

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…