Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Listeiro 037 em (última atualização em 01/04/2013)   [ 3298 hits ]

Login: Listeiro 037, 190636 pontos

Download:

Versão 2:

Versão 3:


Descrição

Método semelhante à da escrita em binário do outro código.

A diferença é a de trocar a string dos caracteres de escrita binária "01" pela string dos caracteres de escrita em decimal "0123456789".

E trocar o valor do divisor, que é 2, por 10.


[ Download: decimal001.s ]   [ Enviar nova versão ]

Versões atualizadas deste script (NOVO)
Linux user

Publicado por Listeiro 037 em 31/07/2012

Changelog: Este método de escrita não usa mais a string com os caracteres a serem usados na impressão.

É feita normalmente a sequência de divisões por 10 e acumulados os restos para impressão de caracteres.

Ao invés disso os caracteres são colocados diretamente na pilha.

Daí o endereço da pilha com o caracter é enviado ao registrador para ser usado na impressão de um único caracter.

Sendo repetido isto em loop, até ser encontrado por comparação o valor que identifica o final da série de caracteres, que é o ' \ 0 ', o mesmo da linguagem C.

(versão 2)

 

Linux user

Publicado por Listeiro 037 em 28/02/2013

Changelog: Este versão de código, semelhante à versão de número 3, coloca os caracteres diretamente na pilha.

Nas duas versões anteriores, os caracteres eram desempilhados e impressos um a um por loop.

Aqui neste caso, quando a interrupção para a escrita é chamada, ao invés dos caracteres serem escritos um a um na tela, é passada para a interrupção um endereço de valor inicial dos caracteres na pilha (esp) e a quantidade total de caracteres que foram empilhados.

Deste modo são impressos todos os caracteres de uma só vez.

(versão 3)

 

[ Esconder código-fonte ]

####################################
#      Comentários:
####################################
#
#    as decimal001.s -o decimal001.o
#    ld -s decimal001.o -o decimal001
#    a opção -s no linkeditor faz
#     "strip -s" automaticamente
#
####################################

.section      .rodata

   digit:   .ascii   "0123456789"
   nl:   .ascii   "\n"
   valor:   .long   4952488

.section   .text         
.globl       _start         

_start:   

   pushl   $nl
   movl   valor,   %eax

_empilha:

   xorl    %edx,   %edx
   movl   $10,   %ecx
   divl   %ecx
   addl   $digit,   %edx
   pushl   %edx
   cmpl    $0,    %eax
   jg    _empilha

_escreve:

   movl    $4,    %eax         
   movl    $1,    %ebx         
   popl    %ecx
   movl    $1,    %edx
   int    $0x80

   cmpl   $nl,   %ecx
   jne   _escreve

_fim:

   movl    %eax,    %ebx
   movl    $1,    %eax
   int    $0x80



Scripts recomendados
   Script Linux recomendado Escrita de um número em decimal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembly)
   Script Linux recomendado Calculadora em C com Assembly (multiplataforma)
   Script Linux recomendado GAS Calculadora de um dígito
   Script Linux recomendado GAS Inteiro para String
   Script Linux recomendado GAS Informações do sistema

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.