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.346 ]

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

sdfgsd

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

Escrita de número em binário em Assembly Puro para Linux 64 bits (Nasm - Netwide Assembler)

Expressão matemática em C

GAS Bubblesort


  

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