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

Publicado por Perfil removido (última atualização em 25/02/2013)

[ Hits: 7.396 ]

Download binario001.s




Este programa utiliza-se da pilha por causa da reordenação dos dígitos após a divisões.

Do modo como foi escrito, trabalha com variáveis locais. Não são tão adequadas ou elegantes como algum tipo de variável local ou pilha, mas facilita a compreensão para se ter uma visão intuitiva do programa.

Conforme os restos são obtidos, são empilhados e ao término são desempilhados conforme vai sendo feita a impressão de cada dígito.

O último item a ser desempilhado é o endereço de um "new line", ponteiro para '\n' definido antecipadamente no código.

A interrupção de escrita trabalha com endereços de memória do que se deseja que seja enviado para uma saída, no caso a tela.

Este caractere identifica o final da escrita dos dígitos.

  



Esconder código-fonte

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

.section      .rodata

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

.section   .text         
.globl       _start         

_start:   

   pushl   $nl
   movl   valor,   %eax

_empilha:

   xorl    %edx,   %edx
   movl   $2,   %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

GAS Inteiro para String

Árvore binária de busca em Assembly - com comentários

GAS "Hello World" o número de vezes definido pelo usuário

"Clear Screen" para Linux x86 em Assembly Puro (GNU Assembly)

Retorna o maior elemento de um vetor


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts