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

Publicado por Perfil removido (última atualização em 02/08/2012)

[ Hits: 5.988 ]

Download binario001.asm




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:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    nasm -f elf binario001.asm
;    ld -s binario001.o -o binario001
;    a opção -s no linkeditor faz 
;     "strip -s" automaticamente
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

section   .text         
global       _start         

_start:   

   push    nl
   mov    eax,   valor

_empilha:

   xor    edx,   edx
   mov    ecx,   0x02
   div   ecx
   add   edx,   digit
   push    edx
   cmp    eax,   0x00
   jg    _empilha

_escreve:

   mov    eax,   0x04
   mov    ebx,   0x01         
   pop    ecx
   mov    edx,   0x01
   int    0x80

   cmp    ecx,   nl
   jne   _escreve

_fim:

   mov    eax,   0x01
   int    0x80

section      .rodata

   digit   db   "01"
   nl   db   `\n`
   valor   equ   4952488

Scripts recomendados

Retorna o maior e menor elemento de um vetor em Assembly

"Clear Screen" para Linux 64 bits em Assembly Puro (GNU Assembly)

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

Crivo de Eratóstenes Simples para Linux x86 em Assembly Puro (GNU Assembler)

Árvore binária de busca em Assembler 8086


  

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