Pregunta

Tengo un script ASM que muestra la fecha (día, mes, año) y la hora (horas, minutos, segundos).

Esto imprime la fecha y hora actual en el cuadro de DOS. La cosa es que es estática. Lo que quiero hacer es hacerlo dinámico, lo que significa que tengo que escribir el nuevo valor en el lugar exacto donde el valor actual se encuentra en la pantalla. ¿Cómo haces esto en ASM?

No tengo ninguna pista en absoluto y Google no ha sido mi amigo para esto.

¿Fue útil?

Solución

Use el código ASM para posicionar el cursor antes de imprimir su cadena. Por ejemplo:

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

Otros consejos

Si su cuadro de DOS es COMMAND.COM o CMD.EXE antes de Windows 2000 (el CMD.EXE más reciente no ofrece soporte ANSI), entonces admitirá secuencias de escape ANSI. Puede usar varios comandos de cursor para colocar el cursor al comienzo de su reloj antes de mostrar la nueva hora.

Este no es realmente un problema específico del idioma, sino más bien un problema específico de la plataforma. Usted dijo que se está ejecutando en un cuadro de DOS, por lo que podría usar uno de los siguientes:

  1. Si está utilizando una rutina de impresión de DOS (como INT 21h con AH = 9), puede imprimir un carácter de retorno de carro (ASCII 13) sin un carácter de nueva línea posterior (ASCII 10) para devolver el cursor al principio de la línea actual. De manera similar, si esta es realmente una aplicación de Windows basada en la consola, y está usando WriteConsole, debería lograr el mismo efecto.
  2. Si realmente estás usando DOS, puedes usar la BIOS para actualizar la posición actual del cursor con INT 10h, AH = 2.
  3. Como lo menciona Sparr, puede enviar " ANSI " secuencias de escape (si está cargado ansi.sys) para controlar el cursor, así como otras cosas, como el color. Estas secuencias de escape se imprimirían (por ejemplo, ala INT 21h, AH = 9), al igual que su texto.

Si va a hacer mucha programación en ensamblador en DOS, mantendría un marcador para one de interrupt references .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top