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

كود لطباعة الأعداد من 0 الى 10 ولكن للأسف لا يعمل

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

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

هذا كود حاولة كتابته لكي يطبع الأعداد من 0 الى 10 ولكنه لا يستجيب بل يطبع عدد

كبير من الرمووز الغريبة (Special symbol) فيا ليت أحد يستطيع تعديله ولكم مني جزيل الشكر

الكود

.Code
.startup
mov cx,10
mov ah,02
Re:
mov dx,cx
int 21h
dec cx
loop Re

exit

تم تعديل هذه المشاركة بواسطة ibn_als3odiah في 1 ديسمبر 2004 في 15:00

3424.gif
#2

السلام عليكم,

أولا أريد أن أعطي ملاحظة عامة فيما كتبت dec cx داخل الحلقة . وهنا أريد أن أقول أن هذا لا داعي منه لأن الحلقة loop تقوم بذلك بنفسها وإذا زدنا dec cx كأننا نقفز كل مرتين ب 2 واحد ستنقصه الحلقة وواحد آخر ينقصه dec cx .

فيما يخص المقاطعة 21 والدالة ah=2 هنا كما نعلم يجب وضع كود أسكي للحرف الذي نريد أن نطبعه في الرجستر dl وأكرر كود أسكي . وفي برنامجك أنت تعطيه مباشرة الرقم . وإذا أعطيناه مثلا الرقم 8 فهو سيطبع لنا الأسكي المقابل ل 8 وسيكون هو beep عوض أن يكتب لنا الرقم 8 . والأرقام من 0 إلى 9 لكي نحولها إلى أسكي يجب أن نزيد عليها 30 بالهكس. هذا فيما يخص الأعداد من 0 إلى 9 أما إذا كان الرقم يضم أكثر من عددين يعني 10 وما فوق فهنا يجب أن نقسم الرقم إلى هذه الأعداد ونكتب كل واحد على حدة.

سأعطيك تغييرا على الكود السابق ليكتب الأعداد من 9 إلى 1 :

mov cx,9; 9 cause for 10 we need some other things
mov ah,02
Re:
mov dx,cx
add dx,30h ;; add this line
int 21h
;;;;;;;;;dec cx   delete this line
loop Re

هذا سيكتبهم في سطر واحد وإذا أردنا أن يكتب كل رقم في سطر نزيد بعد int 21h السابقة الأسطر التالية :

mov dx,10
int 21h
mov dx,13
int 21h

إلى اللقاء.

#3

Thanks My Brother.

These Hints omitt alot of difficultise i had face it witj reading Number From the User

Thanks again

and Good Bless You

3424.gif
#4

يعطيكم العافية شباب ......... واحد تايه يسأل عن طريق :-

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

سؤالي :

أنا عندما قرأت مشاركة الأخ الكريم تصورت أن المقصود بطباعة الأرقام من 1إلى 10 هو أن تظهر هذه الأرقام على شاشة الدوس بعد ترجمتها وعمل لها ربط

( يعني مثل درس HALLO ) ..

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

طيب ما المقصود بطباعة الأرقام من 1 إلى 10 ؟؟؟

وأين تتم هذه الطباعة ؟؟؟

وما الفرق بين هذا الدرس ودرس HALLO ؟؟

وما الفائدة من ظهور هذه الشاشة واختفائها في نفس الوقت ؟؟

أين برنامج الذي كتبت أكواده ؟؟

أرجو التوضيح بطريقة يفهمها المبتدئ .

ولكم مني خالص الشكر

#5

السلام عليكم

البرنامج بالفعل يقوم بكتابه الاعداد من 0 إلى 10 ولكن يفعل ذالك بسرعه ويغلق النافذه, إذا اردت ان ترى الناتج شغل البرنامج من command prompt وسترى النتيجه.

نفس الشئ بالنسبه لبرنامج hello world إذا شغلته بوصطه الايقونه سيتم إغلاق النافذه بسرعه ولن ترى الجمله مكتوبه على الشاشه .

ارجو ان اكون قد افدتك.

والسلام

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

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

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

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