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

استاذي احمد غريب تقدر تساعدني ....؟؟

مغلق
بدأه ابي عيونك في 19 يناير 2007 · 5 رد · 829 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوي احمد غريب .\\ اخواني المبرمجين ..

كيف حالكم .. :)

اعذروني ان ازعجتكم ولكن لضيق وقتي بالبحث طلبت المساعده :( من سموك او اي شخص ممكن ينقذني قبل لا يفوت الوقت وتضيع درجاتي بسبب هالاخطاء . :^)

المشكله ان امتحاني مو عملي !!

راح يكون نظري عشان كذا انا خايفه من الاخطاءاللي ممكن تواجهني :o لان الــ compile بيصير عقلي ;)

البرنامج الاول ابكتبه الحين وبعد ما استوعب اخطائي راح اكتب الثاني .. (h)

واتمنى تتحملني لان دكتوري بالجامعه مع احترامي له دكتور بالشهاده فقط ولا يفقه في الماده شي !! :wacko:

ممكن تساعدني ؟؟

اذا ممكن ابنزل لك البرنامج الحين مع محاولتي فيه .. (h)

انتظر ردك اخي سواء بالرفض او القبول

تم تعديل هذه المشاركة بواسطة ابي عيونك في 19 يناير 2007 في 03:40

#2

هذي صيغة السؤال ...

write assembly program to calculate the factoril of given number (num =9)

the factorial should be written in the ax register,and in the memory location of an offset of 200 . si register should have FFFFH if overflow appears, otherwise BBBBH

given that : CS=1000H DS=2000H (hint:USE 16 bit registers for multiplication)

تم تعديل هذه المشاركة بواسطة ابي عيونك في 19 يناير 2007 في 04:29

#3

محاولاتي مع البرنامج هي

#make_COM#

; COM file is loaded at CS:0100h
; (the value of CS is set by Operating System)
ORG 100h

mov ax,01h
mov cx,9h
mov bx,cx
mov ax,2000h
mov ds,ax

calc:


mul bx
cmp dx,0
jne overflow
dec bx
dec cx
jnz calc
nop

nooverflow:
mov ax , 0b800h
mov ds, ax
mov si,0bbbbh
mov [60h] ,'d'
mov [62h] ,'o'
mov [64h] ,'n'
mov [66h] ,'t'
mov [68h] ,'h'
mov [6bh] ,'a'
mov [6ch] ,'v'
mov [6eh] ,'e'
mov [70h] ,'o'
mov [72h] ,'v'
mov [74h] ,'e'
mov [76h] ,'r'
mov [78h] ,'f'
mov [7ah] ,'l'
mov [7ch] ,'o'
mov [7eh] ,'w'
nop
hlt

overflow:
mov si,0ffffh
mov ax , 0b800h
mov ds, ax
mov [60h] ,'y'
mov [62h] ,'o'
mov [64h] ,'u'
mov [68h] ,'h'
mov [6bh] ,'a'
mov [6ch] ,'v'
mov [6eh] ,'e'
mov [70h] ,'o'
mov [72h] ,'v'
mov [74h] ,'e'
mov [76h] ,'r'
mov [78h] ,'f'
mov [7ah] ,'l'
mov [7ch] ,'o'
mov [7eh] ,'w'
nop
hlt

البرنامج مليون بالميه صحيح بس المشكله لما اكتب الخطوتين اللي باللون الاحمر يخرب البرنامج علي !!

شو السبب ؟

#4

السلام عليكم:

في البداية كانت قيمة الـ AX

mov ax,01h

وقبل حساب الـ factorial كانت قيمة الـ AX كما عدلتيها بالكود التالي :

mov ax,2000h
mov ds,ax

**************

ORG 100h

mov ax,2000h
mov ds,ax



mov ax,01h
mov cx,9h
mov bx,cx
calc:



INSTRUCTIONS

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

ENG-GAZA.GIF
#5

السلام عليكم

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

كما ذكر الاخ Eng gaza عندما تقوم بكتابة الامر الذي اضفته بالاحمر يقوم البرنامج بتغير قيمة ax إلى 2000h وهذا ليس هو المطوب, وإنما المطلوب هو ان تضع القيمة فى ds دون ان تؤاثر على قيمة ax لذلك عليك ان ترفع الامر الذي كتبته بالاحمر إلى ما قبل الامر ax,01h حتى لا يتاثر سير البرنامج..

ملاحظة

ما نريد القيام به هو وضع الرقم 2000h فى المسجل ds ولكن المعالج لا يسمح بوضع رقم فى المسجل ds بطريقة مباشرة, لذلك نقوم بوضع الرقم فى ax ثم ننقلة إلى ds, ما حدث معك هو بختصار انك لم تحفظ محتوي ax قبل استخدمها فى عملية نقل القيمة 2000h إلى ds ولذلك حدث الخلل...

بالتوفيق إن شاء الله ...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#6

Eng_Gaza

الله يعطيك العافيه اخوي .. ولك ارفع القبعه ..

هذا يعني ان الكود صحيح اللهم الخلل في من الامر السابق ومن اللاحق

شكرا اخي ..

اخي حمد غريب ..

انا اسفه فلم اقصد من اللقب سوى الاحترام ..

فلك العذر ..

انا اعرف ان الsegment يحتاج الى وسيط ولا يعطي القيمة مباشره وهذا مافعلته بالبرنامج ..

ولكن انت المشكله في تقديم وتاخير الاوامر ..

وهذا اللي احدث مشكله ..

شكرا لكم احبابي في لله

تم تعديل هذه المشاركة بواسطة ابي عيونك في 20 يناير 2007 في 11:12

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

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