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

برنامج أقلاع عربي BOOT LOADER + الشفرة المصدرية

مغلق
بدأه neo في 12 أبريل 2003 · 10 رد · 7,793 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخيرا كود الأقلاع هاهو جربوة أن ألحقت معه الـnasm الذى يتجم البرنامج برنامج الأقلاع مصمم بالأسيمبلي

[BITS 16]      ; بدء العمل مع البيوس بنظام16 بت

[ORG 0]	; أنزياح البيانات = 0



jmp start      ; القفز لبداية البرنامج 



[BITS 16]      ;  بدء العمل مع البيوس بنظام16 بت

[ORG 0]	;  أنزياح البيانات = 0



jmp start      ; القفز لبداية البرنامج 


; -------------------------------------
; البانات المستخدمة فى عملية الأقلاع و بعض الرسائل
; ------------------------------------------------------------------------

        bootdrv         db 0

        bootmsg         db 'Ahmed Essam system ',39,' -> Boot Sector Example',13,10,0



        rebootmsg    db 'Ahmed Essam Boot loader Press to reboot',13,10,0



        processormsg    db 'Ahmed Essam OS Checking for 386+ processor: ',0

        need386         db 'Sorry... 386+ required!',13,10,0

        found386        db 'Found!',13,10,0



	whatever	db 'in the name of ALLAH -> good Bluss us Arab',13,10,0


;*******************************************
; بعض الدوال المستخدمة
;*******************************************

        detect_cpu:

                mov si, processormsg   ; أخبار المستخدم بما نقوم به

                call message



               ; أختبار ما أذا كان المعالج 80386 أما لا

                pushf                  ; حفظ القيمة الأصلية للأعلام

                

                xor ah,ah              ; ah = 0

                push ax                ; نسخ ax فى الأعلام

                popf                   ; مع مسخ 15-12بت

                

                pushf                  ; قراْة الأعلام الخارجة من ax

                pop ax       

                and ah,0f0h            ; أختبار البت 12- 15 م أذا وضعت أم لا

                cmp ah,0f0h

                je no386               ; فى حالة عدم وجدو المعالج 386



               ; أختبار 286

                mov ah,0f0h            ; وضع البت 12-15

                push ax                ;نسخ الـ ax فى الأعلام

                popf

                

                pushf                  ; نسخ العلم فى ax

                pop ax

                and ah,0f0h            ; أختبار ما أذا كانت البت 12-15 تم مسحها

                jz no386               ; فى حالة عدم وجدو المعالج 386

                popf                   ; أرجع القيم الأصلية للأعلام

                

                mov si, found386     ; نقل محتوى المتغير found386 الى si

                call message	; أظهار ما يوجد فى si

                

                ret                    ; عدم وجود 386

         no386:

                mov si,need386         ; نقل محتوى المتغير need386 الى si

                call message	; أظهار ما يوجد فى si

                jmp reboot             ; أعادة التشغيل عند الضغط على أى مفتاح

                     
;       الدالة message و التى تظهر أى قيمة موجودة فى si

        message:                       ; 

                lodsb                  ; تحميل الحروف الموجودة فى الـsi

                or al,al               ; أختبار ما أذا كان الحرف 0 موجود

                jz done

                mov ah,0eh             ; وضع الحروف

                mov bx,0007            ; 

                int 0x10               ; نداء البيوس و مجموعة الدوال الـ21

                jmp message

        done:

                ret
;       أخذ المفتيح 

        getkey:

                mov ah, 0              ; الأنتظار حتى الضغط

                int 016h

                ret


;       أعاة التحميل

        reboot:

                mov si, rebootmsg      ; وضع قيمة rebootmsg فى الـsi

                call message  ; عرض ما هو موجود فى الـsi

                call getkey            ; الأنتظار حتى الضغط على أى زر



                db 0EAh                ; أعادة التحميل



                dw 0000h

                dw 0FFFFh

                
; *******************************************
; بداية الكود الأساسى
; *******************************************

start:

        mov ax,0x7c0   ; البيوس فى العنوان 0:07C00h, يجب وضعها فى الـDS

        mov ds,ax      ; نقل مختويات الـax الى الـds

data



        mov [bootdrv], dl;



        cli            ; مسح المقاطع 

        mov ax,0x9000   

        mov ss,ax

        mov sp,0xffff   

        sti            ; أعادة المقاطع

                

        mov si,bootmsg ; عرض رسالة الأقلاع

        call message



        call detect_cpu; أختبار المعاج 386



.386   ;أستخدام التعليمات الخاصة بالمعالج 286



        mov si,whatever  

        call message

        call getkey



	call reboot



        times 510-($-$$) db 0

        dw 0xAA55

و هذا هو برنامج نسخ برنامج الأقلاع على الـقرص المرن مصمم بالسي وهو بسيط جدا

#include <bios.h>   

#include <stdio.h> 



void main() 

{ 

        FILE *in; // حجز متغير مؤشر من النوع file

        unsigned char buffer[520]; // حجز متغير buffer



        if((in = fopen("bootsect", "rb"))==NULL) //  أختبار ما أذا كان الملف bootsect موجود أم لا و أذا كان موجود يفتحة على الأساس الثنائي 

        { 

                printf("Error loading filen"); // عرض رسالة خطاء فى حالة عدم القدرة على قراءة الملف أو خطأ فى الفتح



        } 



        fread(&buffer, 512, 1, in); // وضع مختويات الملف فى العنوان الخاص بالمتغير buffer



        while(biosdisk(3, 0, 0, 0, 1, 1, buffer)); // نسخ محتويات العنوان buffer فى القرص المرن على 

// المقطع 1

//  القرص 0

// الرأس 0

// و على مساحة 512 حرف فقط



        fclose(in); // أغلاق الملف 

} 



/*

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



abswrite

absread

biosdisk

_biosdisk



 */

أنتظروا قريبا الكثير

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

أخوكم أحمد عصام

ahmed_essam_os_with_nasm.zip

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#2

مرحبا

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

وملاحظة : أرجو أن تقوم بالبرمجة لأنظمة تشغيل 32 بت

ووفقك الله

#3

أولا أنا مبتدئ فى موضوع تصميم النظم و دراستها + أن الموضوع مش بسيط و محتاج دراسة أكتر و كمان الموضوع ده عامل زي الشجرة فروعة كتيرة جدا و المفروض مهما كانت بسيطة فهى معقولة

أحمد عصام

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#4

شكراً لك جززززززززيلا;)

#5

العفو

على أية

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#6

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

أخي الملف المرفق لا يعمل ؟؟؟؟؟؟؟؟

أخوك عمرو عيسي

#7

ممكن توضح البرنامج شويه او تكتب لى مثال سهل على طباعة كلمة فقط ويكون من برنامج masm

_____________________________

C Language && Windwos_API

_____________________________

#8

البرنامج على ما يبدو انو انحذف

-------------------------------------------------------------------------------------------------------------------

محمد وليد - عرب 48 - Admirer4@Gmail.com

مهندس كهرباء والكترونيكا (B.Sc)- متخصص بقنوات الاتصال عن بعد , والدوائر الكهربائيه المعقده VLSI .

محترف برمجه(B.A) في لغه باسكال , سي , ...

#9

الله يسلمك ويخليك neo ...

بس إنت وين كتبت البرنامج في nasm على طول???

وسؤال اخر... البرنامج أظغط عليه وأعيد تشغيل الجهاز ولا أيش؟؟؟

====================

سامحني إذا كثرت عليك...تحيتي لك

#10

وصلة لتحميل الملف

http://www14.brinkster.com/mo7dra/download...with%20NASM.zip

:) الموضوع قديم قوى :D

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#11

الرجاء ارسال الملف الى على ايميلى وشكرا :-

engmgm@gmail.com

هذا الموضوع مغلق.

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