سؤال

لديّ برنامج نصي ASM يعرض التاريخ (اليوم والشهر والسنة) والوقت (ساعات ، دقائق ، ثوان).

هذا يطبع DateTime الحالي على DOS-Box. الشيء هو ، إنه ثابت. ما أريد القيام به هو جعلها ديناميكية ، وهذا يعني أنني يجب أن أكتب القيمة الجديدة في المكان المحدد الذي تقف فيه القيمة الحالية على الشاشة. كيف تفعل هذا في ASM؟

ليس لدي أي فكرة على الإطلاق ولم تكن Google صديقي لهذا الغرض.

هل كانت مفيدة؟

المحلول

استخدم رمز ASM لوضع المؤشر قبل طباعة السلسلة الخاصة بك. فمثلا:

        MOV     DX,1629H                ; (LINE 16H, COL 29H)
        MOV     AH,2                    ; Move cursor to DH,DL
        INT     10H
        ; now print your string

نصائح أخرى

إذا كان DOS-Box الخاص بك هو command.com ، أو cmd.exe قبل Windows 2000 (لا تقدم CMD.exe الأحدث دعم ANSI) ، فسيدعم تسلسل ANSI Escape. يمكنك استخدام مختلف أوامر المؤشر لوضع المؤشر في بداية ساعتك قبل عرض الوقت الجديد.

هذه ليست في الحقيقة مشكلة خاصة باللغة ، ولكن أكثر من مجموعة خاصة من النظام الأساسي. قلت إنك تعمل على مربع DOS ، حتى تتمكن من استخدام أحد ما يلي:

  1. إذا كنت تستخدم روتين طباعة DOS (مثل INT 21H مع AH = 9) ، يمكنك طباعة حرف إرجاع النقل (ASCII 13) بدون حرف جديد لاحقة (ASCII 10) لإعادة المؤشر إلى بداية الخط الحالي. وبالمثل ، إذا كان هذا بالفعل تطبيق Windows يعتمد على وحدة التحكم ، وكنت تستخدم WriteConsole ، فيجب عليك تحقيق نفس التأثير.
  2. إذا كنت تستخدم DOS حقًا ، فيمكنك استخدام BIOS لتحديث موضع المؤشر الحالي مع INT 10H ، AH = 2.
  3. كما ذكر SPARR ، يمكنك إرسال تسلسل الهروب "ANSI" (إذا تم تحميل ANSI.Sys) للتحكم في المؤشر ، وكذلك أشياء أخرى ، مثل اللون. سيتم طباعة تسلسل الهروب هذه (على سبيل المثال ، ala int 21h ، ah = 9) ، تمامًا مثل النص الخاص بك.

إذا كنت ستقوم بالكثير من برامج التجميع في DOS ، فسأحتفظ بوضع إشارة مرجعية واحد من العديد من مقاطعة المراجع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top