"Clear Screen" para Linux x86 em Assembly Puro (GNU Assembly)
Publicado por Perfil removido (última atualização em 08/05/2012)
[ Hits: 4.113 ]
Obs[1]: Testado apenas para o as (GNU Assembly.). Não tentei com o Nasm.
Obs[2]: Óbvio, mas bom ressaltar: não funciona em nada que rode "INT 21h". TASM está fora...
Obs[3]: (De última hora) Está aparecendo um sinal entre chaves escrito em maiúsculo "FONTE" no lugar do BACKSLASHZERO (barra invertida-zero), sinal de caractere zero e de fim de string em C, quando alguma coisa lê uma string e entende o símbolo como zero.
"\" + "0" = BACKSLASHZERO = Caractere nulo.
Ditando a grosso modo, caso não dê pra ver corretamente, fica sendo a seguinte linha deste modo:
.ascii "BACKSLASHZERO33cBACKSLASHZERO"
O "33" fica aonde está, junto com a letra "c" (minúscula). Apenas troca-se o nome da barra pela barra e o ZERO pelo algarismo "0".
=======================================
Este código simplesmente retira os caracteres do console após executado muito parecido com o comando "clear" do Unix/Linux.
Para gerar o executável, usar:
"$ as clrscr001.s -o clrscr001.o"
Em seguida usar:
"ld clrscr001.o -o clrscr001"
Depois para executar:
"$ ./clrscr001"
Após a montagem, por aqui ficou com apenas 591 bytes.
E logo depois ao usar "$ strip -s clrscr001" para retirar informações de montagem, link edição etc ficou com apenas 308 bytes.
Quer dizer, menor que os 512 bytes da MBR de um HD convencional.
Obs: O comando "strip" retira informações usadas para depurar com o gdb. Como está tudo ok, estas serão retiradas para ficar menor ainda.
############################################## # Comentários: ############################################## # Para gerar o executável, usar: # "$ as clrscr001.s -o clrscr001.o" # # e em seguida usar: # "$ ld clrscr001.o -o clrscr001" # # depois para executar: # "$ ./clrscr001" ############################################## .section .rodata clear: .ascii "{FONTE}33c{FONTE}" size: .int . -clear .section .text .globl _start _start: movl $4, %eax movl $1, %ebx movl $clear, %ecx movl size, %edx int $0x80 movl %eax, %ebx movl $1, %eax int $0x80
Árvore binária de busca em Assembly - com comentários
Escrita de um número em octal na tela em Assembly Puro para Linux 64 bits (GNU Assembler)
Assembler 8086 - Simples código que mostra horas e minutos em pontos
Calculadora em C com Assembly (multiplataforma)
Escrita de um número em hexadecimal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assemble
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Erro ao atualizar o archlinux [RESOLVIDO] (2)
Erro ao executar o comando para dar um get email (0)