Pular para o conteúdo

Algoritmo de Raiz Quadrada Inteira em Assembly Puro para Linux x86 (NASM - Netwide 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: 5.719 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.asm Enviar nova versão

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

Simples JIT (just in time) em C

Fibonnaci de N em Assembly

Soma dois números lidos da memória

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

GAS Informações do sistema

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.