تعليم الكراك

    • تعليم الكراك

      مدخل إلى الأسمبلى

      يعتبر المعالج أهم جزء في جهاز الكمبيوتر وتنتج هذه المعالجات أكثر من شركة وكل شركة تضع معالجاتها في عائلة وتعطيها اسم

      فمثلا هناك شركة "موتوريلا" التي تنتج معالجات (processors) وتعطيها الاسم "موتوريلا" وبالمثل توجد شركة "انتل" وتنتج

      معالجات باسم انتل وأجهزة IBM تقوم على معالجات شركة انتل وقد بدأت شركة انتل منتجاتها ابتداء من المعالج رقم 8088 وكان

      الجهاز الذي يبنى على هذا المعالج يسمى XT ثم انتجت الشركة المعالج 80286 ثم 80386 ثم المعالج 80486 وأخيرا المعالج

      80586 وعلى هذه المعالجات قامت أجهزة IBM والأجهزة المتوافقة معها وجميع المعالجات تتفق في التركيب العام وتشمل المعالجات

      في داخلها على أجزاء دقيقة تسمى السّجلات (registers) فما هي السّجلات , وما هي الحاجة لمعرفة هذه السّجلات , وما هي

      السّجلات العامة للمعالج ؟

      السّجلات : هي وحدات ذاكرة من نوع خاص تشبه عناصر الذاكرة وتستخدم لتخزين البيانات وهي التي يتم فيها إجراء العمليات

      الحسابية وإرسال المعلومات إلى الذاكرة أو استقبال البيانات منها. معرفة هذه السّجلات ضرورية لأن استدعاء روتينات الذاكرة

      ROM يتم من خلالها وتوضع فيها معاملات الروتينات وكذلك نتائج العمليات.

      ما هي السّجلات العامة للمعالج intel ؟

      ينقسم المعالج إلى مجموعات من السّجلات من هذه المجموعات مجموعة تسمى السّجلات العامة وهى التي تهمنا من وجهة نظر

      البرمجة وتأخذ الأسماء AX,BX,CX,DX وهذه السّجلات كما أشرنا هي وحدات ذاكرة من نوع خاص سعة التخزين الطبيعية

      لها 16بت وتقسم هذه السّجلات إلى 8 بت. السجل AX ينقسم إلى AH يسمى (HIGH) وAL يسمى (LOW) وهكذا


      وقد تكون سعة التخزين لها 32 بت وفي الحالة سوف نضيف حرف (E) في الأمام فمثلا AX ستصبح EAX ونحن نتعامل في هذه الذواكر وبذلك نكون قد انتهينا من التعريف بلغة الأسمبلي.

      مدخل إلى أوامر الأسمبلى

      يوجد كثير من أوامر الأسمبلى ولكن سنستخدم نحن عشرين أمر تقريباً ومعظم إستخدماتنا سوف تقوم على هذه الأوامر ومعظم الأوامر

      تتكون من ثلاثة أحرف كهذا المثال :-

      mov ax,10 ; put 10 into ax

      mov bx,20 ; put 20 into bx

      mov cx,30 ; put 30 into cx

      mov dx,40 ; put 40 into dx

      ملاحظة : أي شيء بعد الفاصلة يعتبر تعليق.

      وهناك Push وPop أمرين لإستخدام الكومة , والكومة هي عبارة مساحة من الذاكرة نستطيع أن نخزن ونسترجع القيم منها. وإليك

      شرح هذين الأمرين

      Push: وضع جزء من البيانات على القمة من الكومة

      Push data

      Pop: وضع جزء البيانات من قمة الكومة في سجل محدد أو متغير

      pop register (or variable)

      وهذا مثال على هذه الأكواد

      push cx ; put cx on the stack
      push ax ; put ax on the stack
      pop cx ; put value from stack into cx
      pop ax ; put value from stack into ax

      وهناك بعض أوامر الأسمبلى التي يجب أن نعرفها قبل أن نبدأ بفهم الأسمبلى أو كتابة برامج الأسمبلى.

      MOV : نقل قيمة من مكان إلى آخر

      MOV destination, source

      مثال على ذلك

      mov ax,10 ; moves an immediate value into ax
      mov bx,cx ; moves value from cx into bx



      INT: نداء للدوس أو وظيفة للنظام الأساسي لإدخال وإخراج البيانات من الكومبيوتر وهو يمثل روتين

      INT interrupt number

      مثال على ذلك

      int 21h ; Calls DOS service
      int 10h ; Calls the Video BIOS interrupt

      شرح معنى الInterrupt :-

      تأخذ الروتينات الموجودة في الذاكرة شكل برامج كل برنامج يحتوى على مجمموعة دوال تؤدى عمل تقارب كلها تدور حول خدمات

      معينة وكل برنامج يسمى interrupt وكل interrupt مخصص لموضوع معين فمثلاً تجد interrupt مسئول عن خدمات الشاشة

      (Video interrupt) وتختص جميع دواله بهذا الموضوع فنجد به دوال تغيير الألوان ودوال التعامل مع المؤشر وهكذا ومثال آخر

      وهو interrupt القرص (disk interrupt) ويحتوى على دوال لجميع الوظائف المتعلقة بالاسطوانة مثل كيفية تحديد حالة القرص

      سليمة أم لا وكيفية الكتابة في أي مكان عليها وكثير من الخدمات التي لا يمكن أن تؤدى إلا بهذه الروتينات وكل interrupt له رقم

      بالنظام السادس عشر (HEX) فمثلا video interrupt رقمة 10 بالنظام السادس عشر كما في المثال السابق.



      ADD destination, value إضافة القيمة إلى الهدف

      MOV AX, 10h ; AX is now 10h

      ADD AX, 10h ; AX is now 20h

      ADD AX, 5h ; AX is now 25h



      SUB destination, value طرح شيء ما من القيمة المخزنة في الهدف

      MOV AX, 10h ; AX is now 10h

      SUB AX, 2h ; AX is now 8h



      INC destination (زيادة شيء ما (سّجل أو متغير أو أي شيء

      MOV AX, 10h ; AX is 10h

      INC AX ; AX is now 11h



      DEC destination, (نقصان شيء ما (سّجل أو متغير أو أي شيء

      MOV AX, 10h ; AX is 10h

      DEC AX ; AX is now Fh



      CMP destination, source مقارنة بين المصدر والهدف

      MOV AX, 10h ; AX is 10h

      MOV BX, 11h ; BX is 11h

      CMP AX, BX ; compares AX with BX



      Test destination, source يجرى إختبار بين المصدر والهدف



      JMP location القفز إلى مكان آخر في الكود

      JMP 200h ; the program would here jump to offset 200h



      CALL procedure إجراء النداءات وبعد إنتهاء الإجراءات تكرار نفس الإجراءات

      CALL 4020 ; jumps to the offset 4020 and continues the execution there untill it reaches a Ret

      ;then it continues on the next line.



      NOP(no operation) لا يحدث شيء عند كتابة هذا الكود وقيمتها 90

      كل هذه الأوامر السابقة لابد أن نفهمها جيداً حتى تُسهل علينا عملية الكراك وبذلك نكون قد إنتهينا من معرفة بعض أاومر الأسمبلى.


      __________________