السلام عليكم,
أشكر الأخ حاتم على اهتمامه بهدا.
فيما يخص الكود اللي أعطيت لم أجربه. ولكن حسب النضرة الأولية يبدو أنه شغال.
وسأعطي بعض الملاحضات البسيطة :
يمكن مثلا أن نقتصر على تعليمة cmp al,35h واحدة فمثلا يمكن أن نكتب :
cmp al,35h
jz CorrectNumber
jl Less
Code for Bigger
وحتى الكود الدي أعطيت فهو صح وهده الطريقة ستمكننا من ربح بعض الأسطر.
الآن يمكن أن تضيف إلى برنامجك أنه لا ينتهي عند إدخال حرف واحد بل يبقى مستمرا حتى أن نعثر على الرقم الصحيح. وكما يمكن أن نزيد مثلا كود لنتيقن أن المستعمل قد أدخل بالفعل رقما بين 0 و 9 وفي الحالة الأخرى نقول له أن معطياته خاطئة.وبعد ربما الدرس القادم يمكن أن نزيد عدادا إلى برنامجنا ليحسب عدد المرات التي استعملناها لنعثر على الرقم الصحيح. علما أنه يمكن برمجته الآن بطريقة بدائية.
فيما يخص سؤالك الثاني المتعلق بإدخال حرفين أو أكثر فهدا لم نشاهده قبل ولدلك اقتصرت على رقم من حرف واحد للسهولة علما أن التحويل مثلا لعدد من حرفين لا يتم تلقائيا تحويله إلى الرقم المشار إليه بل يجب إما كتابة الكود لهدا أو استعمال بعض المكتبات لأجل دلك. فكل ما ندخله من الكايبورد يعتبر حروف فلو أدخلنا مثلا العدد 13 وهدا يحتاج Interrupt أخرى تقوم بقراءة جملة مثلا سنقرأ الرقم 13 كأنه جملة نقرأ كود أسكي ل 3 وننقص منه 30 هيكس ليعطينا اللرقم 3 نقرأ الحرف الثاني 1 وننقص منه 30 هكس ونضربه في 10 عشاري ونضيف له الرقم 3 حتى نعثر على الرقم 13 عشاري.
ولهدا قلت تبدأ الآن بحرف واحد ونرجع إلى هده المشاكل في وقتها إن شاء الله.
إلى اللقاء.