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

اصغر برنامج أسمبلي مشروح!

مغلق
بدأه tHe_Rriddler في 26 يونيو 2004 · 0 رد · 1,118 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1
 .model small
.stack
.data
message   db "Hello world, I'm learning Assembly !!!", "$"

.code

main   proc
   mov   ax,seg message
   mov   ds,ax

   mov   ah,09
   lea   dx,message
   int   21h

   mov   ax,4c00h
   int   21h
main   endp
end main

الأسطر التي تبدأ ب نقطة هذه تزود الأسمبلر ببعض المعلومات عل سبيل المثال

model small تخبر الأسمبلر أننا لا نريد برنامجاً كبيراً. أي لن يحتاج البرنامج إلى

الكثير من الذاكرة.

الكلمة التالية stack تخبر الأسمبر أن الستاك سيجمنت يبدأ من هنا . وهذا ال stack يستخدم لتخزين البيانات مؤقتاً . وهو لا يستخدم في البرنامج بل يجب أن نكتبه هناك.

لما ذا ؟ لأننا نريد تكوين برنامج تنفيذي والبرنامج التنفيذيثexe يجب ان يكون فيه stack.

أما ال data فيدل على أن ال data segment يبدأ من هنا وبطبيعة الحال ال stack segment ينتهي هنا.

code فتدل على أن الكود سيجمنت يبدأ هنا. وال data segment تنتهي هنا كالذي قبله

( الstack segment) .

main تدل على ال code يجب أن يكون في إجراء معين كغيرها من اللغات البرمجية مثل

السي .

اما ال endp فتدل أن الإجراء ينتهي هنا. ولإجراء يجب أن يكون له بداية main proc ونهاية

main endp . وال end main تخبر الأسمبلر أن البرنامج انتهى. وال message db فتعني

عرف البايت أو Define Byte . وهذه البايتات هي التي بين القوسين "XXX "

mov ax, seg message نستطيع ان نتعامل مع Seg message على انهه رقم معين حتى نجعله في ال data segment أو DS .

mov destination , source أي انقل البيانات من اليمين إلى اليسار.

lea dx, message يقوم بتحميل العنوان الفعال Load Efective Address . وهذا الأمر

يقوم بتخزين ال offset في( ال datasegment ) في مسجل DX .

int 21h وهذا امر مقاطعة interrupt وهو هنا خاص بالدوس. وهو له علاقة ب mov ah,09 أي أن البرنامج يستعد لطباعة نص في موجه الدوس.

mov ax, 4c00h . ينقل 4c00h إلى AX register او مسجل ال ax.

ax يحمل 4ch وهذا يعني لدوس انه البرنامج.

اما 00h فتعني بدون أخطاء. بالطبع البرنامج يقوم بطباعة Hello world, I'm learning Assembly !!!

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

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