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.326 ]
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.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 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
GAS Inteiro para String (formato binário)
Árvore binária de busca em Assembly - com comentários
Soma dois números lidos da memória
Escrita de um número em decimal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembly)
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Formatar NVM Express 1.3 de forma segura por completo (3)
Problema ao usar monitor externo via USB-C/Display... no Ubuntu 24 (1)
Porblema com MergeList [RESOLVIDO] (10)
Melhor hospedagem em nuvem para projetos Laravel com baixo custo? [RES... (7)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta