Algoritmo de Raiz Quadrada Inteira em Assembly Puro para Linux x86 (NASM - Netwide Assembler)

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

[ Hits: 5.348 ]

Download raizquadrada001.asm




Algoritmo de obtenção de raiz quadrada inteira em assembly puro para Linux.

Sem uso de alguma instrução para a operação ou algoritmo iterativo que necessite de valores de ponto flutuante.

  



Esconder código-fonte

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;      Comentários:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    nasm -f elf raizquadrada001.asm -o raizquadrada001.o
;    ld -s raizquadrada001.o -o raizquadrada001
;    a opção -s no linkeditor faz "strip -s" automaticamente
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

section   .text         
global       _start   

_start:   

   mov   ebx,   valor
   xor   ecx,   ecx

_separa:

   mov   eax,   ebx
   and   eax,   0x03

   push   eax

   inc   ecx

   shr   ebx,   0x02
   cmp    ebx,   0x00

   jg    _separa

   xor   eax,   eax
   xor   ebx,   ebx

_raiz:

   pop   edx

   shl   ebx,   0x02
   add   ebx,   edx

   shl   eax,   0x01
   mov   edx,   eax
   shl   edx,   0x01

   inc   edx

   cmp   ebx,   edx
   jl   _zero

   sub   ebx,   edx
   add   eax,   0x01

_zero:

   dec   ecx
   cmp   ecx,   0x00

   jg   _raiz

   push   0x0a
   xor    ebx,   ebx
   mov   ebx,   0x04

_empilha:

   xor    edx,   edx
   mov   ecx,   0x0a
   div   ecx
   add   edx,   0x30
   push   edx
   add   ebx,   0x04
   cmp    eax,   0x00
   jg    _empilha

_escreve:

   mov   edx,   ebx
   mov    ecx,   esp
   mov    ebx,   0x01
   mov    eax,   0x04

   int    0x80

_fim:

   pop   eax
   add   esp,   eax

   xor    ebx,    ebx
   mov    eax,   0x01
   int    0x80

section      .rodata

   valor   equ   4097

Scripts recomendados

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

Retorna o maior e menor elemento de um vetor em Assembly

Escrita de um número em decimal na tela em Assembly Puro para Linux 64 bits (GNU Assembly)

Expressão matemática em C

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


  

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