التقييم : 3 نقاط : 360522 تاريخ التسجيل : 01/01/1970
| موضوع: تعلم صنع الكراك - مقدمة عن لغة الاسمبلي + شرح اشهر تعليماتها بالعربية - الخميس نوفمبر 29, 2012 12:54 pm | |
|
هي لغة تم تطويرها وتصميمها لتناسب المبرمج وليس الآلة. هذه اللغة تكتب التعليمات باستخدام أسماء رمزية Symbolic Names تمثل شيفرات لدوال معينة Function Codes أو لعناوين Addresses داخل الذاكرة. وهذه الأسماء غالبا مختصرة Mnemonic وسهلة التذكر. فمثلا يستخدم الرمز ADD كاختصار لعملية الجمع Addition والأمر SUB كاختصار لعملية الطرح Subtraction والأمر MPY كاختصار لعملية الضرب Multiplication وهكذا.
وينبغي أن يترجم البرنامج المكتوب بلغة التجميع إلى لغة الآلة قبل تنفيذه. وذلك لأن الآلة تستطيع تنفيذ التعليمات المكتوبة فقط بلغة الآلة. وعملية الترجمة تتم بواسطة الحاسوب بمساعدة المُجمع Assembler وهو برنامج مكتوب بلغة الآلة.
وحيث أن لغة التجميع تستخدم أسماء رمزية فإنها سهلت البرمجة و إلى حد ما مكنت من اكتشاف الأخطاء في البرنامج. وهي لغة تعتمد على الحاسوب بمعنى أنها صممت للاستخدام على أجهزة ذات تصميمات ومواصفات محددة.
والصيغة العامة لكتابة الأمر (التعليمة) في لغة الأسمبلي هي: لافتة : تعليمة ; تعليق
عادة فإن التعليقات أو الملاحظات التي تصف الأوامر توضع على الطرف الأيمن. و هذا النوع من التوثيق بين التعليمة و التعليق يجعل من السهل على المبرمج كتابة و قراءة و تصحيح الشيفرة. و نقصد بكلمة الشيفرة أن البرنامج مكتوب بلغة الآلة للمعالج و الذي يُعرف بشيفرة الهدف object code أما البرنامج المكتوب بلغة الأسمبلي فيدعى بشيفرة المصدر source code . هذا و إن كل تعليمة في برنامج المصدر تطابق أمراً واحداً في لغة الأسمبلي حيث أن الأمر يجب أن يحدِّد أي عملية سيتم تنفيذها و ما هي متحولات المعطيات التي ستُعالج. لهذا السبب تُقسم التعليمة إلى قسمين منفصلين: رمز التعليمة opcode = operation code و المتحولات operands. رمز العملية هو جزء من التعليمة و الذي يحدد العملية التي ستُنفذ.
أهم أوامر لغة التجميع: الأمر (الكلمة المختزلة) الوظيفة MOV نقل XCHG تبديل XLAT ترجمة LEA تحميل عنوان فعال LDS تحميل مسجل و المسجل DS LES تحميل مسجل و المسجل ES ADD جمع ADC جمع مع أخذ الإنزياح بعين الإعتبار INC الزيادة بمقدار واحد AAA تصحيح ناتج جمع عددين بشيفرة الآسكي DAA تصحيح ناتج جمع عددين بشيفرة BCD SUB طرح SBB الطرح مع الاستعارة DEC الإنقاص بمقدار واحد NEG المتمم الثنائي DAS تصحيح ناتج طرح عددين بشيفرة BCD AAS تصحيح ناتج جمع عددين بشيفرة الآسكي MUL وفي بعض النسخ MPY ضرب بدن أخذ الإشارة في الإعتبار DIV قسمة بدن أخذ الإشارة في الإعتبار AAM تصحيح الناتج في AL من ضرب عددين BCD أو عددين ثنائيين AAD تصحيح AX من أجل القسمة حيث AX ليس ناتج القسمة و إنما هو متحول الهدف في عملية القسمة. لذلك نطبق هذه التعليمة قبل تعليمة القسمة على عكس باقي تعليمات التصحيح CBW تحويل بايت إلى كلمة CWD تحويل كلمة إلى كلمة مضاعفة AND عملية "و" المنطقية OR عملية "أو" المنطقية XOR عملية "XOR" المنطقية NOT عملية النفي المنطقية SAL/SHL إزاحة رياضية/إزاحة منطقية و كلاهما نحو اليسار SHR إزاحة منطقية نحو اليمين SAR إزاحة رياضية نحو اليمين ROL تدوير نحو اليمين ROR تدوير نحو اليسار RCL تدوير نحو اليسار عبر الـ CF RCR تدوير نحو اليمين عبر الـ CF LAHF تحميل AH من مسجل الأعلام SAHF تخزين قيمة AH في مسجل الأعلام CLC تنظيف الـ CF STC توضيع الـ CF CMC متمم أحادي لـ CF CLI تنظيف IF STI توضيع الـ IF CMP مقارنة عددين JMP قفز غير مشروط Jcc قفز مشروط CALL مناداة برنامج فرعي RET العودة إلى البرنامج المُستدعِي PUSH دفع كلمة إلى المكدس POP سحب كلمة من المكدس LOOP تنفيذ حلقة دورانية معينة MOVS نقل عنصر من سلسلة MOVSB نقل عنصر بايت من سلسلة MOVSW نقل عنصر كلمة من السلسلة CMPS مقارنة عنصر سلسلة SCAS(B or W) مسح عنصر سلسلة LODS (B or W) تحميل عنصر سلسلة STOS(B or W) تخزين عنصر سلسلة REP التكرار طالما لم نصل إلى نهاية السلسلة أي CX ? 0 REPE/REPZ التكرار طالما لم نصل إلى نهاية السلسلة و السلسلتان متساويتان أي ZF=1, CX?0 REPNE/REPNZ التكرار طالما لم نصل إلى نهاية السلسلة و السلسلتان غير متساويتان أي ZF=0, CX?0 CLD تنظيف DF STD توضيع DE IN تعليمة دخل قد تكون مباشرة أو غير مباشرة OUT تعليمة خرج قد تكون مباشرة أو غير مباشرة وهنا مثال لبرنامج يقوم بإضافة العدد 7 إلى العدد 10 مثلا مكتوب بواسطة لغة التجميع: LDA 7 ADD 10 HLT
| |
|