Pular para o conteúdo

Algoritmo de Raiz Quadrada Inteira em Assembly Puro para Linux x86 (GNU Assembler)

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.

Perfil removido removido
Hits: 6.564 Categoria: C/C++ Subcategoria: Assembly
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.

Download raizquadrada001.s Enviar nova versão

Esconder código-fonte

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

.section      .rodata

   valor:   .long   4097

.section   .text         
.globl       _start   

_start:   

   movl   valor,   %ebx
   xorl   %ecx,   %ecx

_separa:

   movl   %ebx,   %eax
   andl   $0x03,   %eax

   pushl   %eax

   incl   %ecx

   shrl   $0x02,   %ebx
   cmpl    $0x00,    %ebx

   jg    _separa

   xorl   %eax,   %eax
   xorl   %ebx,   %ebx

_raiz:

   popl   %edx

   shll   $0x02,   %ebx
   addl   %edx,   %ebx

   shll   $0x01,   %eax
   movl   %eax,   %edx
   shll   $0x01,   %edx

   incl   %edx

   cmpl   %edx,   %ebx
   jl   _zero

   subl   %edx,   %ebx
   addl   $0x01,   %eax

_zero:

   decl   %ecx
   cmpl   $0x00,   %ecx

   jg   _raiz

   pushl   $0x0a
   xorl    %ebx,   %ebx
   movl   $4,   %ebx

_empilha:

   xorl    %edx,   %edx
   movl   $10,   %ecx
   divl   %ecx
   addl   $0x30,   %edx
   pushl   %edx
   addl   $4,   %ebx
   cmpl    $0,    %eax
   jg    _empilha

_escreve:

   movl   %ebx,   %edx
   movl    %esp,   %ecx
   movl    $1,    %ebx
   movl    $4,    %eax

   int    $0x80

_fim:

   popl   %eax
   addl   %eax,   %esp

   xorl    %ebx,    %ebx
   movl    $1,    %eax
   int    $0x80

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

Intercessão entre dois vetores em Assembly

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

Árvore binária de busca em Assembler 8086

Assembler 8086 - Recebe um caractere do usuário e imprime o código ASCII em pontos

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.