Question

J'ai un script ASM qui affiche la date (jour, mois, année) et l'heure (heures, minutes, secondes).

Ceci imprime la date / heure actuelle sur la boîte DOS. La chose est, c'est statique. Ce que je veux faire, c'est le rendre dynamique, ce qui signifie que je dois écrire la nouvelle valeur à l'endroit exact où la valeur actuelle est affichée à l'écran. Comment faites-vous cela en ASM?

Je n'ai aucune idée du tout et Google n'a pas été mon ami pour cela.

Était-ce utile?

La solution

Utilisez le code ASM pour positionner votre curseur avant d’imprimer votre chaîne. Par exemple:

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

Autres conseils

Si votre boîte DOS est COMMAND.COM ou CMD.EXE antérieure à Windows 2000 (les nouvelles versions de CMD.EXE n'offrent pas de prise en charge ANSI), elles prendront en charge les séquences d'échappement ANSI. Vous pouvez utiliser diverses commandes de curseur pour positionner le curseur. au début de votre horloge avant d'afficher la nouvelle heure.

Ce n'est pas vraiment un problème spécifique à la langue, mais plutôt à une plate-forme. Vous avez dit que vous utilisiez une boîte de dialogue DOS. Vous pouvez donc utiliser l’un des éléments suivants:

  1. Si vous utilisez une routine d'impression DOS (telle que INT 21h avec AH = 9), vous pouvez imprimer un caractère de retour chariot (ASCII 13) sans un caractère de nouvelle ligne ultérieur (ASCII 10). pour ramener le curseur au début de la ligne en cours. De même, s'il s'agit en fait d'une application Windows basée sur une console et que vous utilisez WriteConsole, vous devriez obtenir le même effet.
  2. Si vous utilisez réellement DOS, vous pouvez utiliser le BIOS pour mettre à jour la position actuelle du curseur avec INT 10h, AH = 2.
  3. Comme mentionné par Sparr, vous pouvez envoyer le message "ANSI". des séquences d'échappement (si ansi.sys est chargé) pour contrôler le curseur, ainsi que d'autres éléments, tels que la couleur. Ces séquences d'échappement seront imprimées (par exemple ala INT 21h, AH = 9), tout comme votre texte.

Si vous envisagez beaucoup de programmation d'assemblages sous DOS, vous devriez conserver un signet un de interrompre références .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top