"Clear Screen" para Linux x86 em Assembly Puro (GNU Assembly)
Publicado por Perfil removido (última atualização em 08/05/2012)
[ Hits: 4.105 ]
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
Escrita de um número em binário na tela em Assembly Puro para Linux 64 bits (GNU Assem
"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C
Árvore binária de busca em Assembler 8086
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
O FIM da minha distro predileta: ARCOLINUX ...que pena (5)
Copiar Layout do Teclado para aplicar em outra Distribuição (1)
Não acesso a conta do Banco do Brasil pelo Google Chrome [RESOLVIDO] (3)