المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Assembly language....)برمجة لغة التجميع(


heroking2005
17-01-2006, 08:15 PM
ان شاء الله سنتناول في هذا الموضوع كيفية كتابة وتجهيز وتشغيل برنامج لغة التجميع وبنهاية الدرس سنستطيع ان نكتب برنامج لغة تجميع وان نقوم بتشغيله ورؤية النتيجة.

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

يتم تحويل برنامج لغة التجميع للغة الالة بواسطة برنامــج يسمى Assembler وبالتالـي يجـب علينا كتابـة التعليمـات بصورة محـددة حتى يتعرف عليهـا الـ Assembler عمومـا نتعـرف الان على الشكل العـام للاوامــر المستخدمــة .

يتكون البرنامج من مجموعة من التعليمات او الاوامر بحيث يحتوي كل سطـر على امــر واحد فقط كما ان هناك نوعين من التعليمات .
الاوامر او التعليمات والتي يقوم الـ Assembler بتحويلها الى لغة الالة .
والايعــازات Assembler - Directives وهي ايعازات للاسمبلـر للقيـام ببعـض العمليــات المحـددة مثل تخصيص جـزء من الذاكـرة لمتغير محـدد . عمومـا كـل الاوامــر في لغــة التجميــع تأخـــذ الصــورة :
كود:
NAME: OPERATION operands COMMENT



. يتـم الفصــــل بين الحقـــول بواسطــة مفتــاح TAB او المسطــرة اي يكـــون هنـاك فــراغ واحـد على الاقـل بين كـل حـقل والحـقل التـالي.

. يتم استخدام الاسم NAME ويطلق عليه معـرف السطـر في حـالة حـدوث عمليـة تفريـع لهذا الامر ( لهـذا السطـر من االبرنامـج ) في جـزء ما من البرنامـج وهو حقـل اختيـاري .

.الحقل OPERATION يحتوي على الامر المطلوب تنفيذه .

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

.حــــقل الملحوظــــات الـ COMMENT يستخــدم عــادة للتعليـــق علـى الامـر الحـالي وهــو يستخـــدم لتوثيـــق البرنامـــــج.

ملاحظـــات عـــلى حقـــل العنــــوان Name Field
===================================

يتم استخــدام هـــذا الحقــل لاعطــاء عنــوان لامــر محــدد او لاعطــاء اســم لبرنامــج فرعـــي كــذلك لاعــــلان أسمــــاء المتغيـــرات ، يتــم تحويـــل هـــذا الحقـــل الــى عناويـن فــي الذاكــرة . يمكــن ان يكــون هــذا الحقــل بطــول حتى 31 حـرف وغيـر مسمــوح وجــود مسافــات بداخــل الحقــل كــذلك لا يستخــدم الحــرف "."الا فـــي بــداية الاســم ولا يبــدأ برقـم ولا يتم التفريــق بين الحــروف الكبيرة والصـغيرة فـيه .

===========================
=البيانات المستخدمة في البرنامج : =
===========================

يقوم البرنامــج بالتعامــل مع البيانــات في صــورة ارقــام ثنائية وفـي برنامـج لغــة التجميــع يتـم التعامــل مع الارقــام في الصــورة الثنائـيـة او السداسيــة او العشريــة او حتى في صـــورة حـــروف.


اما انــواع البيانــات فهى كالتالــي :

الاعـــــــداد - الحـــــــروف-المتغيــــرات-المتغــيرات الحرفيـــــــة- متغــيرات الجمـــــل-الثوابــــت-المصفوفـــــات - الرســــــائل والنصــــــوص.


الاعـــــــــــــــــــــداد
================

يتـــم كتـابـــة الأرقـــام الثنائيـــة فــي صـــــورة 1 و 0 وتنتهـــي بالحــــرف B او b لـلدلالــة علـــى ان الرقــــم ثنائـــي Binary مثــــل 01010111B.

الارقـــام العشـــرية يتـــم كتابتهــا فـــــي الصـــورة المعتـــادة ، كمـــا يمكـــن ان تنتهــــي بالحـــرف D دلالــة علــــى أنهـــا عشريــــة .

الارقــــام السداسيــة عشـــر يجــــب ان تبـــدأ برقـــــم وتنتهـــي بالحــــرف H او h لـلدلالـــة عـــلى أنهــا سداسيــة عشـــر Hexadecimal مثـــــل 0abh او 56H .
( الســبب فــي استعمـــال 0 فــي المثـــال الاول لتوضيــــح أن المطلـــوب هــو الرقم السداســـي عشـــر ab وليــس المتغيــر المسمــى ab )

مثال 10011 رقم عشري 10011b رقم ثنائي

الحــــــــــــــــــروف
===============

يتـــم وضـــع الحــــروف والجمــــل داخــــل علامـــات التنصيـص مثـل "A" او "ARAB" ويتــم داخليــا تحويـــل الحـــروف الــى الارقـــام المناظــــرة فـــي كـــود الـــ ASCII وبالتالــي تخزينهــا فـــي الذاكــــرة وعلـــى ذلك لا يوجـــد فــــرق بين الحــرف "A" والرقــــم 41h داخــــل البرنامــــج او من ناحيــــة التخزيــن فـــي الذاكــــرة ( 41hهو الرقــــم المناظــــر للحـــرف A فـي الجـــــدول ) .


المتغيـــــــــــــــــــرات
================

المتغيـرات ومــا أدراك مـا المتغيــرات . المتغيــرات تلعـــب في لغــة التجميـــع نفـــس الـــدور الـذي تلعبـــه فـــي البرامـــج باللغـــات ذات المستـــوى العــــالي مثــل لغـة البسكـــال والســـي . وعـــلى ذلك يجـــب تحديـــد اسمـــاء المتغيــرات المستخدمـــة فـــي البرنامـــج ونـــوع كــل متغــير حيـــث سيـتم حجـــز مكــــان فـــي الذاكــــرة لكـــل متغـــير وبطـــــول يتناســــب مــــع نــــوع المتغــــير وذلك بمجــــرد تعـــريف المتغـــير .

ايعـــــــــــازات المتغيرات
===================
DB == لتعــريف متغيــر حرفــي يشغـل خانـة واحـدة بمقـدار بايت واحـد في الذاكرة .
Byte ==لتعـريف متغيــر حرفــي يشغـل خانـة واحـدة فـي الذاكــــرة او المتغيـــــرات العدديــــة الموجبـــــة والتـي لا تزيـــد قيمتهـــا عن 255 وحجــم المكـان بايــت واحـد .

Sbyte ==لتعريف متغير عددي موجب او سالب والتي لا تزيد قيمتها عن 128 +- وحجم المكان بايت واحد .

DW لتعريف متغير كلمة يشغل خانتين متتاليتين في الذاكرة وحجم المكان 2 بايت .

Word لتعريف متغير كلمة يشغل خانتين متتاليتين في الذاكرة أو المتغيرات العددية الموجبة والتي لا تزيد عن 65000وحجم المكان 2 بايت .

ايضـــا يوجــــد Sword و DD و Dword و SDWord و DQ و DT ولا يوجـــــد اختــلاف بينهـم وبيـــن ما سبــــق ذكـــرة فقــــط حجــــم المكـــان مثــــلا المتغيــر مــن النـوع DT يحجـــز مكـــان في الذاكــرة يســاوي 10 خانـــات متتاليـــة .

اكتفــي بالحديــث عـــن الاعـــداد والحـــروف والمتغيـــرات امــا باقـــي انـــــــواع البيــــانات إن شــــاء اللــه عنـــد الحاجـــة اليهــــا ســــــوف اقــــــوم بشرحهــــا .



(أعتــذر الموضــوع طويــل بعـــــض الشـــئ عمـــومـا اذا كـــان يوجـــد شـئ غامـض فـــي الموضــوع اتمنـى منكم ذكـره كمــا اتمنــى ان تكــــون الاسئلــة فــي حــــدود الموضــــــوع واتمنــــى ان لا نتطــــرق الــى مواضيـــع متقدمـــــة حـــــاليـا الـــى ان انتهــــي مـــن الاساسيــــات حتـــى لا يجــــد بعــــض منـا صعــــوبة فــي المتابعـــة)


الأمر الأساسية في لغة التجميع
======================
سنتعـــرف علـىبعـــض الاوامـــر الاساسيــة وكيفيـــة استخـدامهـا والقيـود علــى استخـدامهــا وسنفتــرض ان لدينـا متغيـرات حرفيـه باسـم Byte1 و Byte2 ومتغيــرات كلمــــة باســـم Word1 و word2 .

1- الامــــــر MOV
يستخــــدم الامـــر MOV في نقـــل البيانـــات مـــن مكـــان لاخـــر وهـــذه الاماكـــن هـــي المسجــــلات العامـــة او المسجـــلات الخاصـــة او المتغيـــرات فــي الذاكــــرة او حتـى فـي نقـــل ( وضــع ) قيمــــة ثابتـــة فــي مكــان محـــدد مــن الذاكـــرة او علــى مسجـــــــــل والصــــــورة العامـــــة للامــــر هـــي :
كود:
MOV Destination , Source



حيــث يتـــم نقـــــل محتويــــات المصــدر Source الــى المستــــودع Destination ولا تتأثــــر قيمــــة المصــــدر بعــــد تنفيــــذ الامــــر مثــال علـى ذلك :

كود:
MOV AX , Word1



حيــث يتــم نســـخ محتويــات ( قيمـــة ) المتغيـــر Word1 الـى المسجـــل AX وبالطبع يتـم فقــد القيمـــة الأوليـــة للمسجـــل AX بعـــد تنفيـــذ الامــــر .

كود:
MOV AL , 'A'




يقـــوم بوضــع الرقـــم 041h في المسجـــل AL .

لكــن مــا هــي قيــود استخـــدام الامـــر MOV
هنـــاك بعـــض الحـــالات التـي لا يصـــح استخــدام الامـــر اذا مــا كــان المصـــــدر والمستــــودع غيــر مسمـــوح النســــخ بينهمــــا.

اذا مــــا كــان المصـــدر مــن النـــــوع :
مسجـــــل عــــام
=============
والمستـــــودع مـــن النـــوع
=====================
مسجـــــــل عام (#) مسموح .

مسجــــل مقطع (#) مسموح .

متغيـــــــــــــــر (#) مسموح .

ثابــــــــــــــــت (#) مسموح .


مسجـــــل مقطع
============
والمستـــــــودع مـــن النــوع
======================

مسجـــــــــل عام (#) مسموح .

مسجـــــــل مقطع (x) غير مسموح .

متغيــــــــــــــــــر (#) مسموح .

ثابــــــــــــــــــــت (x) غير مسموح .

متغيــــــــــــــر
============
والمستــــــــودع مــن النـــوع
=======================
مسجـــــــــــل عام (#) مسموح .

مسجـــــــل مقطع (#) مسموح .

متغيـــــــــــــــر (x) غير مسموح .

ثابـــــــــــــــــت (x) غير مسموح .


ثابــــــــــــت
==========
والمستـــــــــودع مــن النــــوع
=======================

مسجــــــــــل عام (#) مسموح .

مسجـــــــل مقطع (x) غير مسموح .

متغيــــــــــــــــــر (#) مسموح .

ثابـــــــــــــــــــت (x) غير مسموح .


مثــــلا اذا كـــان المصـــــدر مـــن النــــوع متغيــــر والمستـــودع مـــن النــــوع ثابــت فـــــي هـــذه الحالـــة لا يصـــح استخــــدام الامــــر MOV

ولابــــد ان نراعـــي ذلك جيـــدا لاننـــا ســـوف نستخـــدم الامــــر MOV كثيـــرا وللعلــم ان اي برنامــج لـن يخلـو مــن هــذا الامــر .

ايضــــا لابـــد ان نراعـــي حجــم كـــل بيــان فـي عمليــة النســخ او النقـــل
يعنــي هــذا ان عنــد التعامـــل مــع البيانــات يتطلــب الامــر ان تكـــون متوافقــة في الحجـــم ويمكـــن التعامـــل مــع البيانــات ذات المساحــة التخزينيــة المختلفــة عن طريـــق الارشـــاد PTR فمثــلا يمكــن نقـل البايـت الاول مـن متغيــر يعــرف بكلمة ووضعــه فـي متغيــر اخـر معــرف ببايـت .

كود:
MOV AX , WORD PTR num[0]

MOV DX , WORD PTR num[2]




مــن المعلــوم ان التعليمــة MOV لا تسمــح بالتعامـــل مــع موقعيــن فـي الذاكــــرة فــي امــر واحـــد ولكـــن يمكــن تفـــادي هــذا القيــد باستخــدام مسجــل وسيــــط كمــــا يلـــي :

كود:
MOV AX , WORD2

MOV WORD1 , AX




ايضــا لا تسمــح التعليمــة بالتعامـــل مــع موقعيــن فــي الذاكــرة او مسجليــن ليسا لهـم نفـس الحجــم يعنــي ان الجملــة التاليــة غيــر صحيحــة .

كود:
MOV AX , BL



لكــن يمكــن تفــادي هــذا القيــد باستخــدام مجمــوعة مــن التعليمـــات التاليــة :

CBW تحويل القيمة الموجـودة فـي المسجـل AL الـى كلمـة تخـزن في المسجل AX .

CWD تحويــل القيمــة الموجــودة فــي المسجــل AX الــى كلمتيــن يتـم تخزينهـا فــي المسجــلات DX:AX فــي حالــة المعالــج 8086 .

CEDE تحــويل القيمــة الموجــودة فــي المسجـل AX الـى كلمتيـن يتـم تخزينهمـــا فـي المسجــل EAX فــي حالة 86380 .




ادرس الامثلــة التاليــة ولاحــظ كلهــا امثلــة للتعليمــة MOV حــاول تحــديد العبــارات الصحيحـــة منهــا :

كود:
mov word_1 , word_2

mov ds , 1000h

mov ip , ax

mov al , bx

mov word_1, al

mov 1000h , ax

mov byte_1 , ax




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

نلتقــي فـــي المشاركــة القادمـــة ان شــاء اللــه

مع احترامي (أخوكم)
heroking

--...فى انتظار الردود....isa والوعود.....

hashem897
18-01-2006, 02:03 AM
كمل يا باشا
اللغة دي انا باخدها في الجامعة ومش فاهم منها حاجة ...... يمكن افهم منك
اخوك هشام :bye10000:

alahlawy
18-01-2006, 03:16 AM
بسم الله الرحمن الرحيم
مشكور اخى الفاضل على هذا الموضوع الجميل و تم تثبيته :)
و ان شاء الله عندما نقوم بانشاء مواضيع للشرح سوف تقوم انت بشرح ال assembly و ارجو منك التكرم بقبول تلك المهمه
و مرة اخرى مشكور اخى الفاضل و الى الامام دوما

heroking2005
18-01-2006, 10:30 PM
مش عارف أقول آه على الردود المشجعة.....المشاركــة القادمـــة يوم الخميس ان شــاء اللــه

ahmedsayed_86
20-01-2006, 08:00 AM
تماام أوي كدة يا رجالة............
عااااااش أوي يا heroking2005 وأشكرك أوي على هذه المبادرة

mansatan
21-01-2006, 08:36 PM
البداية قوية لكن المهم الأستمرارية
انت داخل بحماس جامد قوى
المهم ما تزهقش على طول

heroking2005
21-01-2006, 09:05 PM
- الامــــــر LEA
==============
نحتـاج فـي بعـض الاحيـان نقـل عنـوان مكـان معيـن وليـس محتـوى المكـان ولعمـل ذلـك يتـم تنفيـذ الامــر LEA .

كود:
LEA Destination , Source



حيـث المستــودع هـو احـد المسجـلات العامـة والمصـدر هـو اسـم المتغيـر ( موقـع فـي الذاكـرة ) . يقـوم الامـر بوضـع عنـوان الازاحـة للمتغيـر المصـدر فـي المسجــل المستـودع فمثـلا الامــر :
كود:
LEA DX , MSG



يقــوم بوضـع قيمـة الازاحــة لعنــوان المتغيـر MSG فــي المسجــل DX .

يمكـن القيــام بوظيفـة الامــر LEA عــن طريــق الصــورة التاليــة من الامــر MOV :

كود:
MOV DEST , OFFSET SOURCE

MOV DX , OFFSET MSG




لاحـظ استخدمنـا كلمـة OFFSET والتـي تخبـر الامـر MOV بنقـل عنـوان المتغيـر ولـيس محتــوى المتغيــر .


العمليـــــات الحسابيـــة
==================

يتــم استخــدام الامــرين ADD و SUB لجمــع او طــــرح محتويــات مسجليــن او مسجــل وموقــع فــي الذاكــرة او موقـع فـي الذاكــرة مــع مسجــل او مسجـل مـع موقـع فـي الذاكـرة والصيغـة العامـة للامريـن هـي :

كود:
ADD DESTINATION , SOURCE

SUB DESTINATION , SOURCE


ADD WORD1 , AX

SUB AX , DX

ADD BL , 5




جمــع الرقــم 5 الـى محتـويات المسجـل BL وتخـزن النتيجـة فـي المسجـل BL

ملاحظــة عامــة يجــب ان يكــون المتغيريـن لهمـا نفـس الطـول .

برنامــج لجمــع اربــع قيــم

كود:
ADD AL , ASD1

ADD AL , ASD2

ADD AL , ASD3

ADD AL , ASD4

ADD SUM , AL




يتــم استخــدام الامـرين DEC و INC لزيــادة او نقصــان قيمــة مسجــل او موقـع فـي الذاكـرة بمقـدار 1 .

كود:
INC DESTINATION ; DESTINATION = DESTINATION +1

DEC DESTINATION ; DESTINATION = DESTINATION -1




نحــاول الان تحوبـل عمليـة مـن لغـات البرمجـة العليـا الـى تعليمـات بلغـة التجميـع

كود:

A = B - 2*A

MOV AX , B

SUB AX , A

SUB AX , A

MOV A , AX





اخيــرا نتحـدث عـن الامـر NEG والـذي يستعمـل لتحويـل إشـارة الرقـم الموجـب الـى رقـم سالـب والرقـم السالـب الـى رقـم موجـب وذلك بتحويلـه الـى المكمـل لاثنيــن او بالعاميـة نضــرب في -1.


الــى هنــا يمكنـك التعامـل مـع العمليـات الحسابيــة البسيطـة بشكـل ميسـر حــاول مـع نفسـك كتابـة امثلـة علـى التعليمــات السابـق ذكرهـا وحـاول التدرب علـــى كتابـة الاوامــر علـى الـورق قبــل تنفيذهـا علـى الحاسـب ( خاصة مع لغة التجميع ).

************************************************** *
(وده كمان كتاب بالعربــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــى::::::)

فـــــــــــــــــــــــــــىا لملفات المرفقة...........................

Tymyah
22-01-2006, 12:39 AM
معذرة أخي العزيز على تدخلي ولكنك لم تذكر الـ Assembler الذي ستستخدمة لتحويل البرنامج إلى EXE أو Machine Code في هذا الموضوع ولكن فعلا مجهود لا يستهان به أشكرك.
عموما أيها الإخوة هذة الطريقة في البرمجة هي نوع من أنواع برمجة الـ Assembly Language وهي خاصة بـ Assembler يدعى Turbo Assembler وقامت Borland الشركة المفضلة لدي بعمله وذلك في السبعينات أو الثمانينات لا أذكر ولاكن هذة هي أول لغة برمجة مبسطة عن اللغة الأصلية للـ Assembly فهناك مرحلة سابقة لهذه اللغة كانت بإستخدام برنامج بدعى Debug وهو موجود على أي ويندوز بالمناسبة ويمكن تشغيلة عن طريق Start Menu < Run < Debug وتقوم بعرض أوامر البرنامج بكتابة "?" ثم Enter وهذا البرنامج يستخدم لغة Assembly تعتبر الأقدم والأقرب للـ machine Code ومن إسمة يتضح أننا نستخدمة في عمل الـ Debug للبرامج أو خاصة الملفات من النوع executables والأخص الـ 16 بت لأن البرنامج لا يستطيع قراءة أكثر من 16 بت للـ Register الواحد وهو متكافء تماما مع المعالجات من عائلات Intel 8086/80186/80286/80386/80486 وأيضا عائلات الـ Pentium جميعا وهذا إخواني الأعزاء ما جعل شركة إنتل متقدمة على جميع شركات صناعة المعالجات لأنها شركة لا تنسى قديمها بل تقوم بعمل الجديد والحديث ولكن القديم له مكانه لكي لا يضيع ما تم عملة سابقا بخلاف الشركات الأخرى أمثال AMD و" VIA التيوانية" التان بمجرد ما يتم عمل معالج جيل جديد لا يقومون بعمل Support للقديم.

أما الـ TASM أو إختصار Turbo Assembler فهو برنامج ولقد قمت بوضعة بالمرفقات في المشاركة التالية وتقوم فيه بكتابة البرنامج بالطريقة التي تفضل بها الأخ صاحب الموضوع مشكورا ووضعها في ملف Txt وتحويل الإمتداد لـ .asm ثم تدخل الـ Command Prompt تم تقوم بعمل Assembling لأجزاء البرنامج عن طريق إستخدام الأمر
tasm programname
ثم تقوم بعمل exe عن طريق إستخدام الأمر tlink programname
وهناك برنامج يسمى AsmStudio يختصر عليك كل هذا العناء ولكنة لا يوجد عندي الآن وصلة له على الإنترنت لإنزالة ولكن هو يشبة تماما الـ Visual Studio 6.0 الخاص بميكروسوفت وسأحاول أن أفتش له عن وصلة تعمل وأرفقها في هذا الموضوع.
نصيحة لإخواني جميعا لغة الـ Assembly هي من أقوى اللغات التي يجب على أي مطور لبرامج System Programming أن يتعلمها.... عن طريق هذة اللغة تستطيع فعل الكثير فالـ Crackers والـ Hackers والـ Virus Writers لا يستغنون عن هذة اللغة فهي العمود الفقري لعملهم. لذلك أرجو ألا يستهين أحد بها لأنها تعني الكثير.
وشكرا لك أخي صاحب الموضوع على هذا المجهود وأعتذر عن المداخلة.
والله من وراء القصد وهو أعلى وأعلم.
والسلام عليكم جميعا ورحمة الله وبركاته

Tymyah
22-01-2006, 12:48 AM
البرنامج في المرفقات

alahlawy
22-01-2006, 07:20 AM
بسم الله الرحمن الرحيم
أولا أحب أشكر الاخ صاحب الموضوع مرة أخرى و أحب أن أشكر الأخ العزيز تيميه على مروره و مشاركته معنا فى هذا الموضوع و أنا أوافقه الرأى تماما فى أهمية ال assembly و أشكره على توضيحه حتى لا يختلط الأمر على المبتدئين و أرجو أخى تيميه عدم حرماننا من مشاركاتك الغالية و أنا عارف ان منتدى الشبكات واخدك منا :) يلا ياعم يا بختهم بيك بجد :)
احنا زى ما قال الاخ تيميه بعد مابنحول الامتداد الى asm بدل من txt بنيجى ع ال command prompt و بنقوم بعمل assembling للبرنامج و ده عن طريق استخدام الامر tasm prgramname و العمليه دى هتطلعلنا programname.obj و بعد كده هنقوم بتحويله الى exe عن طريق استخدام هذا الامر tlink programname.obj و على فكرة ممكن مانقولش خالص الامتداد برضه يعنى ممكن اقول tlink programname و مافيش مشاكل عادى زى ما قال الاخ تيميه فى مشاركته
انا بس حبيت اوضح انه بعد ما بنعمل assembling بيطلعلنا ال .obj و بعد مابنعمل Linking بيطلعلنا ال .exe
و شكرا اخى الفاضل لمرورك و شكرا اخى صاحب الموضوع على موضوع الاكثر من رائع و بجد لو الناس تعرف أهمية ال assembly كانوا يهتموا بيه جدا بس اكبر دليل انك و كل من شارك فى الموضوع ناس جامدة فى البرمجة هو انكوا مهتمين باللغة دى لانها زى ما قال الاخ تيميه اصل كل لغات البرمجه و مافيش غنى عنها

Tymyah
22-01-2006, 02:23 PM
شكرا اخى alahlawy على التوضيح البسيط و ان شاء الله تعم الفائدة علينا اجمعين
والسلام عليكم ورحمة الله وبركاته

Tymyah
22-01-2006, 02:47 PM
لقد وجدت وصلة لبرنامج AsmStudio وهاكم الوصلة:

AsmStudioInstall.exe (http://www.negatory.com/download/AsmStudioInstall.exe)

صوره للبرنامج

http://www.negatory.com/asmstudio/screen1.gif

alahlawy
22-01-2006, 04:52 PM
بسم الله الرحمن الرحيم
شكرا اخى تيميه على مرورك و شكرا على البرنامج و هو فعلا هيوفر حاجات كتير علينا
و فى برنامج تانى انا اشتغلت بيه شوية اسمه emulator غالبا و برضه بيعمل نفس الغرض بس طلاما انت مجرب البرنامج ده يبقى ناخده و احنا مغمضين و شكرا اخى الفاضل ع البرنامج و شكرا مرة اخرى لصاحب الموضوع

mansatan
23-01-2006, 12:19 AM
مجهود أكتر من رائع وإلى الأمام يا روميل :)
وعندى إقتراح
بقترح تحط المصطلح english جنب العربى عشان اللى درس بالإنجليزى ما يتوهش منك
متغير variable
مسجل register
مكمل complement
إلخ
وكمان حتة عن الregisters AX,BX...
وإن register AX مثلا بيتقسم لAH,AL=High and Low
بس بجد مجهود جامد وعقبال ما نشوف قسم Assembly كامل

mansatan
23-01-2006, 12:32 AM
وشكرا كمان لTymyah على AsmStudio فعلا برنامج رائع

Tymyah
23-01-2006, 02:36 AM
العفو يا أخ أهلاوي وشكرا جزيلا على كل شيء
وأشكرك يا اخ mansatan على كلماتك والعفو يا أخي العزيز

heroking2005
24-01-2006, 01:06 PM
السلام عليكم..............................

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

sorry ,, i'll write in english coz my laptop plastic arabic cover was removed so writing arabic was to poor soo.plz forgive me



-first there are two types of standard assenbler for IBM the mother company for the assemblers::::

1)-ASM assembler::

=it needs 64 k byte of memory
=doesn't support macros

2)-MASM asembler::

=it needs 96 k of memory
=full version of assembler
************************************************** *
soooooooooooooo,,, the question is how to assembler(execute) ur assembly program?????????????????


= there are many ways ::
1)- by using DOS (MS DOS PROMPT)::: as

start-run-cmd-(go to the path that u put the assembler files in it ,,say u put the 2 files in a folder named by TA)-
c:\>cd TA
c:\TA>TASM programname
c:\TA>TLINK programname
c:\TA>programname

note::: write ur programname without any extension.
.....
2)- by using EMULATORS/already studio asm
((((((i upload the emulator program at)))))))))))))))

http://rapidshare.de/files/11708991/Emu8086Setup302.rar.html

*******************************************
i hope u got it

heroking

mansatan
05-02-2006, 12:28 AM
أنت زهقت يا heroking ولا إيه؟ :)

heroking2005
06-02-2006, 06:26 PM
من هنـــــــــــــــــــــــــــــــــــــــــا يبدا الاستفادة العملية الAssembly:

تعالــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــوا نشوف:

برمجه الماوس:

وسوف اكمل الموضوع بطريقه الشرح كالتالي:
وتعني المقاطعه 33
يقدم لنا هذا الملحق كافه المعلومات الاساسيه لدعم جهاز الفاره
:(inturrupt 33h)
يدور محور ذلك حول المقاطعه 33 h
التي تؤمن عمليه الموائمه (interface)
مع الفاره اعتمادا على هذه المقاطعه سنوضح
1: كيفيه تهيئتها للعمل
2: قراءه معلومات الازرار وموقعها الحالي على الشاشه بالاضافه الى التعامل مع الاشاره ؤعقسخق
تمثل المقاطعه 33 الطريقه التي نتعامل بها مع الفاره والتي يوفرها نظام التشغيل dos
dos
لذلك سيقدم لنا هذا الملحق الشرح الكامل لاعلى وظائفها
ملاحـــــــــــــــــــــــــظه:يعتبر استخدام الفاره في العديد من البرامج مساله اختياريهويعتمد في الحقيقه على وجود سواقهالفاره
في الذاكره ويجب ان تعلم انك تستطيع استخدام كافه وظائف الفارهدون اي مشاكل حتى وان كان برمامج قياده الفارهغير موجود فعندئذ ستصادف
موادا تقاببل عدم وجود الفاره
ناتي الان الى المهم:___________________

بدايه تشغيل الفاره:
يوجد امران اثنان يجب ان تعلمهما قبل ان تبدا باستخدام الفاره
الاولـــــــــــــــــــــ:هو ضروره تحت النظام دوز
الثاني: هو ضروره تهيئه الفاره للعمل قبل استخدامها
دعنــــــــــــــــــــــــــــنا نبــــــــــــدا بتنفيذ ذلك:
*اكتب في المفكره ما يلي
.model small
.data
.code
begin proc far
mov ax,0
int 33h
begin endp
end begin

*اظهــــــــــار مشيره الفاره:لاظهارها على الشاشه ويمكننا تحقيق ذلك بسهوله
بواسطه الخدمه 1 من المقاطعه 33ا ونبين فيما يلي
begin proc far
mov ax,0
int 33h
mov ax,1
int 33h
begin endp
end begin


واخبروني عن اي استفسار

heroking

mansatan
09-02-2006, 12:27 PM
ماشى تمام يا heroking
يبقى أولا نعرف بس إن فيه 14 register فى البرسيسور:-
4 segment registers:
code ,data ,stack , extra
4 general registers :
AX,BX,CX,DXو ممكن نقسمهم نصين high,lowزى.. AX=AH+AL,BX=BH+BL
3 pointer registers :
IP,SP,BP
2 index registers :
SI, DI
كل الregisters طولهم 16 bit

ثانيا أى جملة أولها نقطة '.' أبقى بقول حاجة للassembler
model small يعنى هستخدم memory قليلة
data يعنى data segment تبدأ هنا
code يعنى الdata segment خلص و هابدأ code segment
ولو قلت .stack يبقى الsegment اللى قبله خلص و هابدأ stack segment وهكذا ..

ثالثا الكود لازم يبقى فى procedure زى كل لغات البرمجة
begin proc يعنى بعرف procedure إسمها begin وممكن أسميها أى حاجة تانية
وكل procedure لازم ليها بداية و نهاية
فبعدbegin proc لازم أقول begin endp
وفى الأخرend begin بتقفل البرنامج و بتقول إبدأ نفذ الكود من أول الbegin

رابعا و أخيرا كلمة far أو near ممكن أكتبها بعد تعريف procedure أو لا أكتبها
بس هأحتاج far لو هعمل حاجة فى address خارج الregister بتاعى
وفى المثال كنت بشتغل فى الaddress بتاع الmouse اللى مكانه فى h33
والaddress ده خارج الcode segment register
ولو لم أقل far أو near هيعتبرها near فلا أقدر أتعامل مع حاجة خارج الregister بتاعى

mansatan
09-02-2006, 01:21 PM
شكللى عشان أخللى الكلام بسيط هلخبط الناس :)
33h ده نوع الinterrupt
و الinterrup معقد شوية
الأمر int ده زى mov بس بيعمل interrupt و h33 بيحدد النوع اللى هيتنفذ
و البرنامج أما يجيله الأمر بيبص فى AX عشان يعرف اللى هينفذه
ويا رب أكون مش بلخبط حد

vb5-rocket
28-02-2006, 05:03 PM
موضوع ممتاز
شكرا لصاحب الموضوع ولكل من ساهم فيه
لكن ليا تعليق صغير وهو ان الاخ هيرو دخل جامد شوية وكان فى كدا حبة تعريفات مهمة كان لازم التأنى فيها وهو ده اللى الاخ manstan بيحاول يوضحه

Xicus_Bone
05-03-2006, 11:28 PM
شكراااااااااااااااااااااااااااا

TheGhostFish
12-04-2006, 03:50 AM
والله اللغة دى شكلها جميلة بس صعبة شوية فياريت تقولنا لو فيها مميزات عن لغات البرمجة الأخرى علشان يبقى لنا هدف نستعملها
و شكرا على الشرح الجميل

mostafa|lotfy
24-04-2006, 09:07 AM
شكرا لكم جميعاُ
و شكرا لصاحب الموضوع ولكل من ساهم فيه
عندي بعض المواضيع الجيدة عن الأسمبلي هل من الممكن أن ابعتها هنا


قائمة من بعض مشاركاتي

X-File S3 E1 (http://www.dvd4arab.com/forums/showthread.php?t=224191)
ْX-File Season 1 E11 Eve Subtitle (http://www.dvd4arab.com/forums/showthread.php?t=221722)
قدرات الجيش المصري بعيون اسرائيلية (http://www.dvd4arab.com/forums/showthread.php?t=223357)
Funny English jokes about the compuer (http://www.dvd4arab.com/forums/showthread.php?t=222363)

VooDoo-ks
26-04-2006, 12:23 PM
السلام عليكم,,,

اولأ الف شكر لأخي العزيز على الدروس اسئل الله ان ينفع بها ويجازة الله عنا كل خير ....


واكيد لا انسى بالشكل الأخ العزيز الأستاذ .... Tymyah على توضيحة الرائع...

بس يا شباب انا عندي مشكلة اول شئ انا بأدرس الترم هذي كورس في الـمايكروس برووسرز وطلع نص الكورس اسيمبلي:crazy000:
انا كنت اتمنى ادرسها من زمان بس مو بالطريقة هذي,,,

عموماً لا اطول عليكم شوفوا شباب هذا الكود:-

TITLE Find the AvErAge Temps
PAGE 60,132
.MODEL SMALL
.STACK 64
.DATA
SING_DATA DW +13,-10,+19,+14,-18,-9,+12,-19,+16
ORG 0010H
AVERAGE DW ?
REMINDER DW ?
.CODE
MAIN PROC FAR
MOV AX , @DATA
MOV DS , AX
MOV CX , 09H
SUB BX , BX
MOV SI , OFFSET SING_DATA
BACK MOV AL , [SI]
CBW
ADD BX , AX
INC SI
LOOP BACK


MOV AL,09H
CBW
MOV CX,AX
MOV AX,BX
CWD
IDIV CX
MOV AVERAGE , AX
MOV REMINDER , DX
MOV AH , 4CH
INT 21H
ENDP
END MAIN

هذا كود يطلع الأفريج لمجموعة من الأعداد ((درجات حرارة بالاحرى)) وكان مطلوب مني اني اعدل على هذا الكود ((طبعاً في كود ثاني بمطلوب ثاني))واعمل منهم برنامج يرتب الأعداد من الأصغر للأكبر او بالعكس...وبس
المشكلة اني جربت ثلاث ارباع الأسيمبليرز الي تعرفوها ودائماً يطلع لي اخطاء في الأكواد وخاصة في اللوجو ((الي اسمه في هذا الكودBACK )) وجااااااب ليه صداع حتى البورلاند سي جربته وبرضوا ماشغلهم...!
ياليت يا شباب الي يخدمني هذي الخدمة ويساعدني اعدل الكود ((اليوم)) لأن بركة لازم اسلم الكود الساعة 9ونص الصبح....راح ادعيله دعوة ان شاء الله تكون مستجبة ,,,



والف شكر للجميع اخواني في هذا الصرح العامر بأذن الله بمدعية,,,,

تحياتي

VooDoo-ks
26-04-2006, 03:58 PM
السلام عليكم اسف....ولاكن المطلوب كان اكبر رقم او اصغر رقم فقط...

Tymyah
27-04-2006, 08:09 AM
أخ VooDoo-ks بالنسبة لسؤالك عن الأسمبلرز فالكود هو Turbo Assembly كما ذكرت لك مسبقا في مشاركتي

أما بالنسبة للخطأ الذي تسأل عنه
المشكلة اني جربت ثلاث ارباع الأسيمبليرز الي تعرفوها ودائماً يطلع لي اخطاء في الأكواد وخاصة في اللوجو ((الي اسمه في هذا الكودBACK )) وجااااااب ليه صداع حتى البورلاند سي جربته وبرضوا ماشغلهم...!


فهو سهل جدا المشكلة أخي العزيز أنك نسيت وضع : بجانب الكلمة BACK الأولى وليست الثانية لأن هذا ما نسميه Lable في الأسمبلي تضع عنوان لسطر معين إن أردت أن ترجع له عن طريق loop أو خلافة فقط ضع الكلمة هكذا:

BACK: MOV AL , [SI] s

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

VooDoo-ks
27-04-2006, 09:32 AM
الففففففففف شكر لك استذاي العزيزي......تيمية ((الواحد مش عارف يقلك ايش))
على فكرة ترى انا امس جلست شغال على الكودات الييييييييين الساعة 4.30 الفجر وابشرك الساعة 4 الفجر عرفة ويييييييييييين المشكلة.......تصدق ان الدكتور معطينا ايها زي كذا؟؟!!

انا قعدت ادور امس في كتاب ارت اوف اسيمبلي ومالقيت شئ؟! ((هو من جد موسوعة بس احسة ملخبطة))!
ولقيت الموضوع هذا في وحدة من الشروحات,,,


عموماًًَ تفضل هذا الكود الي عملته...((المشكلة مش عارف شغال ولا لا؟!)) لأن يبغالي اعمل Output ((للأس مادورت كيف اسويها بس حلقها ان شاء الله))

TITLE max number
PAGE 60,132
.MODEL SMALL
.STACK 64
.DATA
SING_DATA DW +13,-10,+19,+14,-18,-9,+12,-19,+16
ORG 0011H
MAX DW ?

.CODE
MAIN PROC FAR
MOV AX , @DATA
MOV DS , AX
MOV CX , 09H
SUB AX , AX
MOV BX , OFFSET SING_DATA
AGAIN:CMP AL , [BX]
JA NEXT
MOV AX , [BX]
NEXT: INC BX
LOOP AGAIN

MOV MAX , AX
MOV AX , 4CH
INT 21H
END
END MAIN

ويالله نشوووفك:icon30:

على فكرة اليوم رحت اوريه للدكتور قلي خلاص راحت عليك:no000000: :busted_r:

Tymyah
27-04-2006, 12:22 PM
إذا أردت أن تتطلع على الخارج من هذا البرنامج فهو عن طريق برنامج الـ Debug الموجود على أي ويندوز
إتبع الآتي:
1) ضع الـ exe الذي قمت بعملة في مكان سهل وليكن على الـ C: مثلاً بإسم file.exe
2) إدخل الـ Command Prompet أو الـ cmd.exe عن طريق كتابة الأمر في الـ RUN
3) إكتب Debug C:\file.exe في الـ cmd سيدخل البرنامج ويحمل الـ exe الذي قمت بعملة
4) بعد ذلك ضع حرف u لعمل Unassemble للبرنامج ستجد البرنامج أمامك بالـ Debug Assembly
5) قم بتتبع الـ Registers في كل خطوة بإستخدام الأمر trace ويتم بكتابة الحرف T كل خطوة من البرنامج
6) إذا كنت تريد أن ينفذ البرنامج كلة دفعة واحدة إكتب G لينفذة ثم راجع ما بداخل الـ Registers بالأمر R .

والله من وراء القصد وهو أعلى وأعلم
والسلام عليكم ورحمة الله وبركاته

Tymyah
27-04-2006, 12:26 PM
نسيت أن أقول لك أن كل الأرقام في الـ Debug هي Hexadecimal ولا يوجد عشري مطلقا لذلك قم بترجمة الأرقام الموجودة في الـ Data Section إلى Hexa وإكتبها لكي تستطيع التعرف عليها وتتبعها.

VooDoo-ks
01-05-2006, 07:10 AM
السلام عليكم ورحمة الله وبركاتة....


نعوووود ونعوووود ونشكر اخونا واستذنا العزيز Tymyah على خدماته الي ماتنقطع عننا ((عسى ربي لا يقطعها)) وعسى كل حرف يكتبة في مساعدة اخوة ينكتب له فيه اجر,,,


على فكرة اسف على التأخير بالرد انا مش مطنش الموضوع بس والله اليومين الي فااتوا كنت مشغووووووووووووووووووووووووووووووووووووووووووووووو ووووووووووووووووول على الأخر وزود الهم همين الدارسة...!


عموماً الف شكر انا على فكرة جربت الديبجر قبل كذا ولاكن للأسف عمرة ماطلع ليه النتيجة الي متوقعها....! تخيل؟!

على فكرة انا عندي IDE للأسيمبلي وبعيرض لك ايه الي بيحصل داخل الريجسترز ((مرة مفيد)) ولاكن المشكلة هنا انه كل ما اكتب كود داخلة يطلع لي اغلاط غريبة...!
هو مافيش ديبجر يكون اوضح من هذا؟؟!


وعلى فكرة انا كان سؤالي كيف اقدر اعمل برينت من الريجستر او من اي متغير على الشاشة لأن لو ضبطة هذي راح تسهل علييه الشغل كثيييييييييير يعني اقدر اشووف النتاج النهائي وهل برنامجي صح ولا لا؟؟!
ولقيت هذا المثال على النت وجربت اطبقة على كودات ولاكن من غير فائدة:sadwalk0:

احسب واخرج نتيجة مايلي:
2*4-5

mov al,2
mov bl,4
mul bl
sub al,5
mov dl,al
add dl,30h
mov ah,2
int 21h

اممممممممممممممم اش كمان:question:

والله مدري بس هذا الي جاي في بالي الحين.....ويالله نشووووووووووفك على خير عزيزي

VooDoo-ks
01-05-2006, 07:20 AM
نسيت اقلك اخذة بالي من موضوع الـhexa لمن عملت ديبج....

VooDoo-ks
01-05-2006, 07:20 AM
السلام عليكم ورحمة الله وبركاتة....


نعوووود ونعوووود ونشكر اخونا واستذنا العزيز Tymyah على خدماته الي ماتنقطع عننا ((عسى ربي لا يقطعها)) وعسى كل حرف يكتبة في مساعدة اخوة ينكتب له فيه اجر,,,


على فكرة اسف على التأخير بالرد انا مش مطنش الموضوع بس والله اليومين الي فااتوا كنت مشغووووووووووووووووووووووووووووووووووووووووووووووو ووووووووووووووووول على الأخر وزود الهم همين الدارسة...!


عموماً الف شكر انا على فكرة جربت الديبجر قبل كذا ولاكن للأسف عمرة ماطلع ليه النتيجة الي متوقعها....! تخيل؟!

على فكرة انا عندي IDE للأسيمبلي وبعيرض لك ايه الي بيحصل داخل الريجسترز ((مرة مفيد)) ولاكن المشكلة هنا انه كل ما اكتب كود داخلة يطلع لي اغلاط غريبة...!
هو مافيش ديبجر يكون اوضح من هذا؟؟!


وعلى فكرة انا كان سؤالي كيف اقدر اعمل برينت من الريجستر او من اي متغير على الشاشة لأن لو ضبطة هذي راح تسهل علييه الشغل كثيييييييييير يعني اقدر اشووف النتاج النهائي وهل برنامجي صح ولا لا؟؟!
ولقيت هذا المثال على النت وجربت اطبقة على كودات ولاكن من غير فائدة:sadwalk0:

احسب واخرج نتيجة مايلي:
2*4-5

mov al,2
mov bl,4
mul bl
sub al,5
mov dl,al
add dl,30h
mov ah,2
int 21h

اممممممممممممممم اش كمان:question:

والله مدري بس هذا الي جاي في بالي الحين.....ويالله نشووووووووووفك على خير عزيزي

fire_scorpion
14-08-2006, 10:25 AM
شكرا اخي الفاضل على الشرح الممتع

MR_FURY
08-09-2006, 12:47 PM
shokran a7`ey el 3azez 3al el mawdo3 al gamed da we yaret tedeleny 7ata 3ala ay esm ketab a2dar at3alem meno weykon shamel

craige1984
11-09-2006, 06:23 AM
أنا كنت عايز أسأل عن أستخدام ال Hla و هل هو فعلا أفيد فى تعلم لغة الأسمبلى
و شكرا جزيلا

craige1984
13-09-2006, 09:45 AM
كما أرجو التعليق أيضا على كتاب art of assembly و هل هو فعلا أقوى الكتب فى تعليم الأسمبلى
و شكرا

BlackWhale
29-10-2006, 12:10 AM
thankx man

anan1212
20-12-2006, 06:11 PM
يسلم ايدكم يا شباب ومن زايد لزايد .... وشكرا لكل الي ساهمو بهذا الشرح الرائع وياريت تستمرو فيه لاني باخدها بالجامعة ومش فاهم اشي فيها

Ana_BRo7ee
23-01-2007, 01:21 AM
heroking2005

يا سلااااااااااااااااااااااااااااااااام عليك .... عيني عليك بارده يا سلام والله .. ابدعت ف الشرح ياليتني ... شفت الموضوع من بدايته ... لاني انا بصراحه عندي الماده دي ف الجامعه ومش فاهم فيها اي حاجه ...

وانا جالس اقرا .. يعني في اشياء كنت ضايع فيها .. وفهمتها منك ياخويه ... واشكرك على مجهودك الرائع ..


وصح ولي يكون بعض المصطلحات بالانجليزي بجانب العربي يكون جميل جدا لان في ناس بتعرف الماده دي بالانجليزي ...

واشكر صاحب الموضوع شكر خااااص .. يعني ما ينوصف جهدك الرائع ياخويه ..

BlackTiger_70
19-05-2007, 05:08 PM
الف شكر ياجميل انا من زمان كان نفسى اكتب اسمبلى

[Ä][7][M][£][Ð]
19-06-2007, 06:33 PM
اطربى يا كروان

كلام سليم ورائع وجميل جدا
بارك الله فيك وفى امثالك

وفى ميزان حسناتك ان شاء الله

H.H
20-09-2007, 10:18 PM
إذا أردت أن تتطلع على الخارج من هذا البرنامج فهو عن طريق برنامج الـ Debug الموجود على أي ويندوز
إتبع الآتي:
1) ضع الـ exe الذي قمت بعملة في مكان سهل وليكن على الـ C: مثلاً بإسم file.exe
2) إدخل الـ Command Prompet أو الـ cmd.exe عن طريق كتابة الأمر في الـ RUN
3) إكتب Debug C:\file.exe في الـ cmd سيدخل البرنامج ويحمل الـ exe الذي قمت بعملة
4) بعد ذلك ضع حرف u لعمل Unassemble للبرنامج ستجد البرنامج أمامك بالـ Debug Assembly
5) قم بتتبع الـ Registers في كل خطوة بإستخدام الأمر trace ويتم بكتابة الحرف T كل خطوة من البرنامج
6) إذا كنت تريد أن ينفذ البرنامج كلة دفعة واحدة إكتب G لينفذة ثم راجع ما بداخل الـ Registers بالأمر R .

والله من وراء القصد وهو أعلى وأعلم
والسلام عليكم ورحمة الله وبركاته

السلام عليكم
تقبل الله صيامكم وقيامكم
أخي Tymyah أريد أن أتعمق في DEBUG وأريد أن أتعلم تتبع البرامج وأراك قادر على ذلك فأرجو منك تعليمي وجزاك الله خيرا وبارك الله في أعمالك مع العلم أني أقوم الآن بدراسة الأسمبلي في فنان سات ودرست المبادئ الأساسية في الDEBUGGING وأردت أن أكمل المسيرة :sadwalk:

spilt
25-09-2007, 04:23 AM
الف شكر يا باشا على الموضوع دا بس فى طلب ممكين تشرح الHexadecimal system وطريقه تحويله لى بينارى او ديسيمال سيستيم
وشكرا

bo0oDa
23-10-2007, 12:06 PM
الموضوع ممتاز بس مش مفيد للناس الى بتتعلم من الصفر عموما الموضع ده (http://dvd4arab.com/showthread.php?t=530680) بيتكلم عن اساسيات لغة التجميع

aloush04
18-01-2008, 12:22 AM
salam ya shabab if any one can write aquadratic equation in assembly code and thanx

r_ta7n
23-01-2008, 04:23 PM
الف الف شكر على المجهود الف الف شكر على المجهود

mahana_fnan
09-02-2008, 09:14 PM
بصراحه انا جديد اوى فى عالم البرمجه يادوبك هبدأ اعرف يعنى ايه فيجوال دوت نت فمقدرتش افهم اى حاجه بس اتمنالكم كل توفيق ويا ريت لو تفيدونى بأى حاجه وجزاكم الله خيراً

drhg77
30-03-2008, 07:36 PM
مشكورين اخوانى
تحياتى

badboyilprimo
09-05-2008, 03:41 PM
اولا شكرا جدا على الشرح
بس طبعا مليش فى البتنجان

المهم انا عندى مشكله فى DLL عشان اشغلو
لازم Activation Code
ياريت حد يسعدنى افك ال code ده

add me please IF u can help me
badboyilprimo@hotmail.com

tayaraa
06-10-2008, 02:26 PM
i need a source of assembly program because i work with micro controller please

KHULED
15-01-2009, 06:56 PM
السلام عليكم ورحمه الله وبركاته
شكرا جدا علي المجهود الرائع

سؤال ضروري


write a program in assembly that
1-subtracts
2-multiply
the following number
120,95
دول برنامجين واحد ضرب والتاني طرح
رجاع من الي يعرف يحلهم يكون النهارده
عشان عندي امتحان
السلام عليكم

fariza
28-02-2009, 01:39 AM
مشكور أخى على الجهد الرائع موفق يارب

alaa@virus
09-11-2009, 07:01 PM
ربنا يوفقك طول ما بتراعى ربنا