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

[ تمت الإجابة ]كيف ينتقل البرنامج من وضع 16 بت إلى 32؟؟؟

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

السلام عليكم

كيف ينتقل البرنامج من وضع 16 بت إلى 32؟؟؟

لو أحد يشرح الموضوع ده مهم

وياريت بالسي أو السي++

من لديه القدرة على الشرح ويملك المعلومات لا يبخل علينا

تحياتي

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية

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

#2

البرنامج لا ينتقل من وضع لآخر.

لديك معالج يدعم 32 بت فسيقوم بمعالجته على هذا الأساس.

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

إن كان البرنامج مكتوب لـ 32بت وتقوم بتشغيله على معالج 16بت فلن يعمل لأن الملف التنفيذي يحوي بايتين في File Header تحدد المعالج الأدنى الذي يمكن العمل عليه ونظام التشغيل سيقوم بقراءة هذه المعلومات ويحدد فيما إذا كان سيكون قادر على تنفيذه أم لا.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

الاخ mandareka

هل تقصد في حالة نظام تشغيل??

يعني انك تجعل نظامك يعمل على 32بت ام انك تقصد شيئ اخر

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#4

بارك الله بكم

اخي الكريم،، نعم أقصد في حالة نظام التشغيل

((بالشرح))

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية

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

#5

حسنا ساحاول الشرح على الرغم اني لم اتعاطى مع برمجة انظمة التشغيل مند سنتين -_-

لعمل نطام التشغيل طريقتين

تستطيع ان تكتب النواة في ال 16 بت او ما يعرف بالنمط الحقيقي real mode

او تستطيع ان تكتبها في 32بت او ما نعرفه بالنمط المحمي protected mode

الشيئ الجميل حول 16 بت انه يسمح لك بمناداة المقاطعات الموجودة في البيوس

لكنه سوف يقيدك بحاجز 1 ميغا

لكن هدا لن يقيدك ادا كنت تنوي ان تكتب نواة من المتوقع ان تزيد فيها كل مرة

الحل ادن ان تتحول الى 32بت -----> 4Gb of memory ;)

لكن كيف....

الجواب هو ان تقوم بتفعيل البوابة 20... :lol:

لا تسالني عنها لاني بكل صراحة لا اتدكر -_-

الامر بسيط جدا

يجب ان تعطي محمل النظام القدرة على تفعيل البوابة قبل ال يقوم بتحميل النواة

نقوم بتمرير قيم خاصة عبر البورت و 0x60 ايضا البورت 0x64

الكود التالي سوف يفعل البوابة 20

;;
;; NASM 32bit assembler
;;

[bits 32]
[section .text]

enable_A20:
		cli

		call	a20wait
		mov	 al,0xAD
		out	 0x64,al

		call	a20wait
		mov	 al,0xD0
		out	 0x64,al

		call	a20wait2
		in	  al,0x60
		push	eax

		call	a20wait
		mov	 al,0xD1
		out	 0x64,al

		call	a20wait
		pop	 eax
		or	  al,2
		out	 0x60,al

		call	a20wait
		mov	 al,0xAE
		out	 0x64,al

		call	a20wait
		sti
		ret

a20wait:
		in	  al,0x64
		test	al,2
		jnz	 a20wait
		ret


a20wait2:
		in	  al,0x64
		test	al,1
		jz	  a20wait2
		ret

للامانة العلمية الكود ليس لي

http://wiki.osdev.org/A20_Line

ارجو ان اكون افدتك

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#6

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

وأطعمك لحم ديك

مشكور كتير

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية

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

#7

ادا كان عندك اي استفسار يمكنك ان تطرحه

و يمكنك ادا كنت خبير في الاسمبلي ان تراجع سورس محمل النظام قروب

keep in touch ;)

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#8

ما هذا الكود الضخم اخى fkugd2003 :lol: الموضوع ابسط من ذلك

للتحويل من ال real mode الى ال protected mode فقط قم عمل set ل PE bit الموجوده داخل ال cr0 register

والكود كالتالى :-

  1.  
  2. ; set PE bit
  3. mov eax, cr0
  4. or al, 1
  5. mov cr0, eax
  6.  
  7. ; far jump (cs = selector of code segment)
  8. jmp cs:@pm
  9.  
  10. @pm:
  11. ; Now we are in PM.
  12.  
  13.  

تكوين ال cr0 هو

CR0: |PG|----RESERVED----|ET|TS|EM|MP|PE|

لا تنسى ان كل ذلك بعدما قمت باعداد جدول GDT

EraMaX :wink:

amdvsintel22.jpg

--i use AMD--

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

أستعن بالله و لا تعجز

تابعنى على تويتر

***

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

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

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

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

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