Pular para o conteúdo

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

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.
Perfil removido removido
Hits: 6.354 Categoria: C/C++ Subcategoria: Assembly
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download binario001.asm Enviar nova versão

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

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

"Clear Screen" para Linux x86 em Assembly Puro (Nasm - Netwide Assembler)

FreeBSD Execve

script corewars

Ano bissexto em assembly

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.