Pular para o conteúdo

"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C

Esta função dentro deste código realiza o mítico "clear screen" em ANSI C.

Uma chamada de interrupção de kernel para imprimir uma sequência de escape de terminal que limpe o código.

Nenhum segredo para compilar. Apenas uso simples do GCC.
Perfil removido removido
Hits: 5.563 Categoria: C/C++ Subcategoria: Assembly
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Esta função dentro deste código realiza o mítico "clear screen" em ANSI C.

Uma chamada de interrupção de kernel para imprimir uma sequência de escape de terminal que limpe o código.

Nenhum segredo para compilar. Apenas uso simples do GCC.
Download clrscr001.c Enviar nova versão

Esconder código-fonte

#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "{FONTE}33c{FONTE}";
   const int _$CLRSCR_ = sizeof(_CLRSCR_);
   int _RET_;

   asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4
          "movl $1, %%ebx\n\t"                                 //    saida
          "movl %1, %%ecx\n\t"                                 //    _CLRSCR_
          "movl %2, %%edx\n\t"                                 //    _$CLRSCR_
          "int $0x80"                                                //    chamada ao kernel
          : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve
          : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores
          : "%ebx", "%ecx", "%edx", "%esi", "%edi"
   );

   return;

}

int main (void) {

   clrscr();

   return 0;

}
33c
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "{FONTE}33c{FONTE}";
   const int _$CLRSCR_ = sizeof(_CLRSCR_);
   int _RET_;

   asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4
          "movl $1, %%ebx\n\t"                                 //    saida
          "movl %1, %%ecx\n\t"                                 //    _CLRSCR_
          "movl %2, %%edx\n\t"                                 //    _$CLRSCR_
          "int $0x80"                                                //    chamada ao kernel
          : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve
          : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores
          : "%ebx", "%ecx", "%edx", "%esi", "%edi"
   );

   return;

}

int main (void) {

   clrscr();

   return 0;

}
";    const int _$CLRSCR_ = sizeof(_CLRSCR_);    int _RET_;    asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4           "movl $1, %%ebx\n\t"                                 //    saida           "movl %1, %%ecx\n\t"                                 //    _CLRSCR_           "movl %2, %%edx\n\t"                                 //    _$CLRSCR_           "int $0x80"                                                //    chamada ao kernel           : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve           : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores           : "%ebx", "%ecx", "%edx", "%esi", "%edi"    );    return; } int main (void) {    clrscr();    return 0; }
33c
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "{FONTE}33c{FONTE}";
   const int _$CLRSCR_ = sizeof(_CLRSCR_);
   int _RET_;

   asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4
          "movl $1, %%ebx\n\t"                                 //    saida
          "movl %1, %%ecx\n\t"                                 //    _CLRSCR_
          "movl %2, %%edx\n\t"                                 //    _$CLRSCR_
          "int $0x80"                                                //    chamada ao kernel
          : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve
          : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores
          : "%ebx", "%ecx", "%edx", "%esi", "%edi"
   );

   return;

}

int main (void) {

   clrscr();

   return 0;

}
33c
#include <stdio.h>

void clrscr(void);

void clrscr(void){

   const char *_CLRSCR_ = "{FONTE}33c{FONTE}";
   const int _$CLRSCR_ = sizeof(_CLRSCR_);
   int _RET_;

   asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4
          "movl $1, %%ebx\n\t"                                 //    saida
          "movl %1, %%ecx\n\t"                                 //    _CLRSCR_
          "movl %2, %%edx\n\t"                                 //    _$CLRSCR_
          "int $0x80"                                                //    chamada ao kernel
          : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve
          : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores
          : "%ebx", "%ecx", "%edx", "%esi", "%edi"
   );

   return;

}

int main (void) {

   clrscr();

   return 0;

}
";    const int _$CLRSCR_ = sizeof(_CLRSCR_);    int _RET_;    asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4           "movl $1, %%ebx\n\t"                                 //    saida           "movl %1, %%ecx\n\t"                                 //    _CLRSCR_           "movl %2, %%edx\n\t"                                 //    _$CLRSCR_           "int $0x80"                                                //    chamada ao kernel           : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve           : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores           : "%ebx", "%ecx", "%edx", "%esi", "%edi"    );    return; } int main (void) {    clrscr();    return 0; }
";    const int _$CLRSCR_ = sizeof(_CLRSCR_);    int _RET_;    asm __volatile__("movl $4, %%eax\n\t"               //   interrupcao 4           "movl $1, %%ebx\n\t"                                 //    saida           "movl %1, %%ecx\n\t"                                 //    _CLRSCR_           "movl %2, %%edx\n\t"                                 //    _$CLRSCR_           "int $0x80"                                                //    chamada ao kernel           : "=a"(_RET_)                                             //   (output) armazena o retorno do codigo do que houve           : "g"(_CLRSCR_), "g"(_$CLRSCR_)                  //   (input)  entrada dos valores para os registradores           : "%ebx", "%ecx", "%edx", "%esi", "%edi"    );    return; } int main (void) {    clrscr();    return 0; }

Assembler 8086 - Simples código que mostra horas e minutos em pontos

Escrita de um número em octal na tela em Assembly Puro para Linux x86 (GNU Assembly)

Inverter uma string, Assembly8086

Algoritmo de Raiz Quadrada Inteira em Assembly Puro para Linux x86 (GNU Assembler)

Escrita de um número em binário na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembler)

#1 Comentário enviado por removido em 19/06/2012 - 23:59h

Contribuir com comentário

Entre na sua conta para comentar.