ما هي تعليمات التجميع التي تعيش في سجل التمهيد الرئيسي؟

StackOverflow https://stackoverflow.com/questions/2142063

  •  22-09-2019
  •  | 
  •  

سؤال

فضولي حول تعليمات التجميع الصريحة التي تشكل بالفعل سجل التمهيد الرئيسي في بنية x86. شكرا على أي رؤى.

ترحب بنيات أخرى ، ولكن هذا في المقام الأول ل x86.

هل كانت مفيدة؟

المحلول

ابحث هنا عن جهاز تحميل mbr-bootload من المرحلة 1 في GRUB1: http://thestarman.pcministry.com/asm/mbr/grub.htm

نصائح أخرى

يتكون سجل التمهيد الرئيسي من 512 بايت ، آخر بايتان يجب يكون 0x55 0xaa. هذا هو 510 بايت اليسار ، إدخالات جدول القسم هي 16 بايت ، في إدخالات جدول أقسام 4 أقسام ، وهي 64 بايت. هنا هو ما يبدو عليه إدخال القسم.

ما تبقى هو 446 بايت من رمز التجميع. عادةً ما تتكون البايتات القليلة الأولى من سجل معرف التمهيد ، يصف بيانات قرص لوادر التمهيد ، مثل المعرف ، معرف النظام ، إلى تسمية قليلة ، ثم تتوقع BIOS رمز التمهيد على 0x000: 0x07C00 ، ثم ينقل نفسه إلى أسفل أسفل في قطاع الذاكرة. يرى هنا للحصول على مثال البرنامج التعليمي على لوادر التمهيد. هناك نظرة فنية مفصلة على Wikibooks حول هذا الموضوع هنا.

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

إن كتابة قطاع التمهيد الذي تم تجميعه ثنائيًا إلى القرص قد تتضمن طريقة فوضوية وخطيرة لإثارة الكمبيوتر عادة ، تحت Linux ، سيكون الأمر مشابهًا لـ:

# Assume that /dev/hda1 is the first hard disk then...
dd if=mybootldr.bin of=/dev/hda1 bs=512 cnt=1

تتضمن الطريقة الأخرى استخدام برنامج محرر قرص منخفض المستوى أو حتى استخدام Debug.exe القديم البسيط (الموجود على أقراص MSDOS القديمة) أو حتى باستخدام فريدوس.

C:\DEBUG.EXE mybootldr.bin 
-W 100 0 0 1 
-Q

إذا كنت أتذكر ، استخدم Dr.Dos (Digital Research DOS) منافسًا لـ MS-DOS ، واستخدم حماية كلمة المرور على رمز تحميل التمهيد قبل تشغيل DR-DOS.

تعديل: إذا كنت فضوليًا حقًا ، فيما يتعلق بكيفية ظهور BIOS عن 0x0000: 0x7C00 ، ألق نظرة على هذا الرابط الذي يمكنك فيه تنزيل رمز BIOS الأصلي IBM XT هنا.

أتمنى أن يساعد هذا ، مع أطيب التحيات ، توم.

أحب هذه الموضوعات المدرسية القديمة ؛-)

هنا اثنين من التجميع القوائم لأنك تطلب explicit assembly instructions

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top