Pergunta

Eu tenho um script ASM que exibe data (dia, mês, ano) e hora (horas, minutos, segundos).

Isso imprime o datetime atual no DOS-Box. A coisa é que é estático. O que eu quero fazer é torná -lo dinâmico, o que significa que tenho que escrever o novo valor no local exato em que o valor atual está na tela. Como você faz isso no ASM?

Não tenho nenhuma idéia e o Google não foi meu amigo por isso.

Foi útil?

Solução

Use o código ASM para posicionar seu cursor antes de imprimir sua string. Por exemplo:

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

Outras dicas

Se o seu DOS-Box for Command.com, ou CMD.exe antes do Windows 2000 (o mais recente cmd.exe não oferecer suporte da ANSI), ele suportará sequências de fuga da ANSI. Você pode usar vários comandos cursor Para posicionar o cursor no início do seu relógio antes de exibir o novo horário.

Esta não é realmente uma questão específica do idioma, mas mais específica da plataforma. Você disse que está correndo em uma caixa do DOS, para que você possa usar um dos seguintes:

  1. Se você estiver usando uma rotina de impressão do DOS (como int 21h com ah = 9), você pode imprimir um caractere de retorno de carruagem (ASCII 13) sem Um caractere subsequente da Newline (ASCII 10) para devolver o cursor ao início da linha atual. Da mesma forma, se este é realmente um aplicativo Windows baseado em console e você estiver usando o WriteConsole, você deve obter o mesmo efeito.
  2. Se você está realmente usando o DOS, pode usar o BIOS para atualizar a posição atual do cursor com int 10h, ah = 2.
  3. Como mencionado pelo Sparr, você pode enviar sequências de escape "ANSI" (se Ansi.sys for carregado) para controlar o cursor, bem como outras coisas, como a cor. Essas seqüências de fuga seriam impressas (por exemplo, ALA INT 21H, AH = 9), assim como o seu texto.

Se você vai fazer muita programação de montagem no DOS, eu manteria um marcador para 1 do de várias interromper referências.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top