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

سؤال حول التجميع والربط والتنفيذ

مغلق
بدأه 3lazizi في 3 يناير 2006 · 7 رد · 589 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

كيف الحال ياشباب

ان شاءالله الجميع بخير

المهم انا عندي سؤال حول تجميع الكود

يعني انا فهمت من خلال قراءة بعض الكتب

ان المرحلة اللي تكون بعد كتابة الكود هي التجميع من خلال المجمعات مثل masm OR tasm ...etc

لكي نحصل على برنامج الهدف link

وبعدها راح يكون معنا الملف القابل للتنفيذ اللي هو البرنامج بامتداد EXE

طيب السؤال يأتي هنا

انا عندي الكود هذا

MONO EQU 0B000H
MSK  EQU 0FH
;------------------------
DISP SEGMENT AT MONO
     ORG     160
LINE DB      160 DUP(?)
DISP ENDS
;------------------------
VAR  SEGMENT
CHR  DB      "Ahmad"
VAR  ENDS
;------------------------
STK  SEGMENT STACK
       DW    64 DUP(?)
STK  ENDS
;------------------------
PROG SEGMENT
     ASSUME CS:PROG,ES:DISP,DS:VAR
START
     MOV SI,82H
     CALL READ
     MOV DI,BX
;-----------------------
     MOV AX,DISP
     MOV ES,AX
     MOV AX,VAR
     MOV DS,AX
:----------------------
     MOV DL,LINE[BX]
     MOV AL,LINE[DI]
     MOV LINE[BX],AL
     MOV LINE[DI],DL
     MOV AH,4CH
     INT 21H
;---------------------
READ PROG NEAR
     MOV BL,[SI]
     AND BL,MSK
     SHL BL,1
     XOR BH,BH
     RET
READ ENDP
PROG ENDS
     END START

ممكن احد يشرح لي طريقة التجميع والربط بطريقة عملية

لاني بصراحة مافهمت مرحلة التجميع الربط من الناحية العملية ماهي راضية تجي معي زي ماقريت في الكتب

وياليت يكون الشرح عملي بحت

وفي انتظاركم

وتقبلوا تحيتي

وفمان الله

(وقل ربي زدني علما)

#2

يعني معقوله مافيه احد يعرف يجمع ويربط الكود

اتمنى ان يأتي من يطرح الاجابه

وفي انتظاركم

(وقل ربي زدني علما)

#3

ارجو تحديد السؤال, هل تسال عن شرح للكود, ام طريقة التجميع فقط؟ عليك استخدام masm16 مثلا للتجميع, بواسطة ملف الـ Link.exe تحصل على ملف الـ .obj, بعدها تستخدم الـ masm.exe لتقوم بالتجميع لتحصل على الملف التنفيذي.

Do as I say, not as I do

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

#4

اولاً مشكور على الاستجابه التي طال انتظارها

ثانياً انا اسئل عن طريقة التجميع والتربيط

انا الان عندي برنامج masm بس للاسف ماعرفت اجمع الكود من خلال البرنامج

يعني ياليت تشرح لي طريقة التجميع بالتفصيل الممل

واكون شاكر لك

وتقبل تحيتي

(وقل ربي زدني علما)

#5

الكود يحوي العديد من الاخطاء عند الاطلاع عليه.. اولا يجب ان تغير START الى START: لانها مؤشر label

ايضا الاجرائية read, من READ PROG NEAR الى READ PROC NEAR

وهناك هذه الاسطر

اقتباس
    MOV DL,LINE[bX]

    MOV AL,LINE[DI]

    MOV LINE[bX],AL

    MOV LINE[DI],DL

لم افهم ما استخدامها, نقل في نفس المكان!!!! ثم ما هي قيمة BX في السطر الاول؟

اوضح لنا عمل البرنامج والغاية منه وقم بتصحيح هذه الاخطاء, الان ان كنت متاكد من ان كل شئ يجب ان يعمل بصورة جيدة قم بوضع الكود في ملف وليكن اسمه test.asm في نفس المجلد مع masm و link

افتح masm.exe وقم بكتابة اسم الملف بدون اللاحقة اي "test" وقم بالضغط على انتر, واترك بقية الخيارات فارغة بالنقر على انتر.. يجب ان تحصل على ملف .obj في حال لم يكن هناك اخطاء

الان افتح ملف link واكتب test مرة اخرى وانتر لبقية الخيارات وستحصل على الملف التنفيذي باذن الله.

Do as I say, not as I do

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

#6

الهدف من الكوود انه يبدال بين اي حرفين في الشاشة

البرنامج يأخذ رقمين من المستخدم ( 0 الى 9)

ثم ينظر الى هذين الحرفين وكانهما يدلان على ترتيب حرفين من احرف السطر الثاني من الشاشه

( على ان نعتبر رقم الحرف الذي يظهر في اقصى اليسار السطر مساوياً للصفر )

وسنطلب من المستخدم ان يتبع اسم البرنامج عند طلبه بفراغ واحد ثم بهذين الرقمين

فاذا فرضنا مثلاً ان السطر الثاني من الشاشه كان يبداً من يساره بـ <A

وداخل المستخدم : NameOfProg 01

فان السطر الثاني سيصبح A<

هذا هو عمل الكود

بس اللحين هل ينفع ان اجمع الكود بالـ MASM 32 ؟؟؟

واذا ماينفع ممكن تعطيني رابط لتحميل masm 16

وشاكر لك والله من اعماق قلبي

وتقبل تحيتي

(وقل ربي زدني علما)

#7

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

فيما يخص الكود كما قلت, BX لا يحوي اي قيمة, هذا يسبب خطا, قم بتصحيح هذا الامر وعند التجميع وظهور اي خطا راجع السطر الذي يظهر فيه الخطا وقم بالتصحيح فيه حسبما تراه مناسبا..

بالتوفيق

masm.zip

Do as I say, not as I do

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

#8

قول امين

الله يفتح لك ابواب الرزق والعلم

ومشكور كل الشكر والله يعطيك العافية على المساعده

وانا اللحين بجرب الكود واشوف الخطاء اللي قلت لي عنه

ومره اخرى الله يعطيك العافية

وتقبل تحيتي

وفمان الله

(وقل ربي زدني علما)

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…