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

كيف افهم أي الكود ؟؟

مغلق
بدأه الشبح الأسود في 20 أكتوبر 2006 · 6 رد · 1,092 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
;------------------------------------------------------------------
;  The First Program														;
;  بعد الفاصلة المنقوطة يمكننا إدراج تعليقات لتوضيح الفكرة
;  هذه التعليقات سيهملها المصرف لاحقا
;------------------------------------------------------------------
; قطاع البيانات 

data16  segment public	  ; التصريح بقطاع البيانات

Hello   db 'Hello World!',13,10,'$'; متغير

data16  ends

; ------------------------------------------------------------------
; قطاع الكود

code16  segment public  ; التصريح بقطاع الكود
		assume  cs:code16, ds:data16, ss:stack16

start16:
; تحضير قطاع البيانات
		mov ax, data16	  ; ax = data16
		mov ds, ax		   ; ds = ax

; طباعة نص على الشاشة
		mov dx, offset Hello; helloفرع الذاكرة الخاص بالجملة 
		mov ah, 09h		; تسمح بطباعة النص على الشاشة 09h
		int 21h			; مقاطعة الدوس

; إنهاء البرنامج
		mov al, 00h		 ; ولا مشكلة
		mov ah, 4ch		 ; تسمح بمغادرة البرنامج 4ch
		int 21h			 ; مقاطعة الدوس

code16  ends			   ; نهاية النص

; ------------------------------------------------------------------
; قطاع المكدس

stack16 segment stack
		db  200h dup (?)
stack16 ends

		end start16		  ; start16 نهاية البرنامج
; ------------------------------------------------------------------

قطاع البيانات :

ما معنى db , والأرقام التي تليها.

قطاع الكود :

أدائمًا يكون التحضير للكود بهذه الطريقة ؟

ما معنى Offset ؟

هل 09h & 4ch & 200h أوامر !!

ليس العلم بكثرة التعلم و إنما هو نور من الله ينزله على من يريد أيهديه

#2
الشبح الأسود كتب:
قطاع البيانات :

ما معنى db , والأرقام التي تليها.

Define Byte

تصريح متغير ان صح التعبير

اقتباس
قطاع الكود :

أدائمًا يكون التحضير للكود بهذه الطريقة ؟

ليس بالضرورة

اقتباس
ما معنى Offset ؟

موضع المتغير في الذاكرة - ان صح التعبير

هناك Segement و Offset

اقتباس
هل 09h & 4ch & 200h أوامر !!

لا

قيم مكتوبة بالنظام 16

قطرة الماء تـثـقب الحجر.. لا بالعنف. لكن بتكرار المحاولة

at4re.gif

منتديات الفريق العربي للهندسة العكسية 不喜欢的勿入! www.at4re.com

#3

مشكور أولاً يا أخ dj-siba

صاحب الكود كاتب: ( تسمح بطباعة النص على الشاشة 09h) , أي أنها كالأمر بغض النظر على أنها عدد مكتوب بنظام 16 !!

ليس العلم بكثرة التعلم و إنما هو نور من الله ينزله على من يريد أيهديه

#4

09h و 21h أسماء مقاطعات يا أخي

#5
net كتب:
09h و 21h أسماء مقاطعات يا أخي

إذًا لماذا نقلنا قيمت 09hإلى ah ؟

سامحني الجديد في اللغة دائمًا تصير عنده تساؤلات وأن ثقلنا عليكم تحملوني :( .

ليس العلم بكثرة التعلم و إنما هو نور من الله ينزله على من يريد أيهديه

#6

لكي تتم طباعة الجملة HELLO WORLD

#7

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

المقاطعات هي المحرك الاساسي من خلال DOS, أي عملية تريد القيام بها يتم تنفيذها من قبل المقاطعات, مثلا قراءة الملفات والتعامل معها, التعامل مع الشاشة والتعامل مع الاجهزة الملحقة كلوحة المفاتيح ومؤشر الفارة وما الى هذا..

هناك مقاطعات عديدة وكثيرة, نظريا عليك ان تعلمها جميعا, لكن فعليا لست بحاجة الى حفظها.. يكفيك ان تلم بكيفية عمل اكثر ما تحتاجه منها وهي المقاطعة 21h, وهناك 10h و 16h .. غالبا لن تحتاج الى اكثر من هذه المقاطعات.

الان كما لاحظت من خلال الشفرة اعلاه, قمنا بوضع القيمة 9 في المسجل AH قبل التنفيذ, السبب ان كل مقاطعة تملك عددا من الخدمات, اي ان كل مقاطعة تراها هي مقاطعة رئيسية تحوي على وظائف فرعية تسمح كل منها بتنفيذ وظيفة معينة. فالمقاطعة 21h على سبيل المثال تستطيع استخدامها للتعامل مع الملفات والتعامل مع النصوص المحرفية وما الى هذا والكثير .. كله من خلالها لكن الاختلاف الوحيد يكون بالوظيفة المطلوبة وبارامتراتها.

هذه البارامترات يتم وضعها في المسجلات .. مسجلات معينة ومحددة طبعا .. بعد ان يتم تهيئة المسجلات بالقيم المطلوبة, والمسجل الاساسي AH بالوظيفة المطلوبة تقوم بطلب المقاطعة التي تحوي على هذه الوظيفة ليتم تنفيذ المطلوب.

لذا افضل طريقة لدراسة المقاطعات هي بالاطلاع على استخدام كل منها والاطلاع على بعض الامثلة المفيدة التي ستجعلك ترى وتميز الاختلافات بين كيفية طلب بعض المقاطعات وكيفية ادائها لعملها.

يمكنك زيارة موقع ralf brown الذي يضم على قائمة شبه كاملة ان لم تكن كذلك بالمقاطعات البرمجية والاخرى المتعلقة بالـ BIOS وما الى هذا..

http://www.cs.cmu.edu/~ralf/files.html

اتمنى ان تكون هذه الاجابة كافية لك لتترك المقاطعات الان بكل ثقة وتبدا بالسؤال عن امر اخر لو احتجت المساعدة فيه.

وكل عام وانتم بالف خير.

السلام عليكم

تم تعديل هذه المشاركة بواسطة Xacker في 23 أكتوبر 2006 في 21:43

Do as I say, not as I do

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

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

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