Escrita de um número em binário na tela em Assembly Puro para Linux x86 (GNU Assembly)
Publicado por Perfil removido (última atualização em 25/02/2013)
[ Hits: 7.723 ]
Este programa utiliza-se da pilha por causa da reordenação dos dígitos após a divisões.
Do modo como foi escrito, trabalha com variáveis locais. Não são tão adequadas ou elegantes como algum tipo de variável local ou pilha, mas facilita a compreensão para se ter uma visão intuitiva do programa.
Conforme os restos são obtidos, são empilhados e ao término são desempilhados conforme vai sendo feita a impressão de cada dígito.
O último item a ser desempilhado é o endereço de um "new line", ponteiro para '\n' definido antecipadamente no código.
A interrupção de escrita trabalha com endereços de memória do que se deseja que seja enviado para uma saída, no caso a tela.
Este caractere identifica o final da escrita dos dígitos.
############################################################################################ # Comentários: ############################################################################################ # # as binario001.s -o binario001.o # ld -s binario001.o -o binario001 # a opção -s no linkeditor faz # "strip -s" automaticamente # ############################################################################################ .section .rodata digit: .ascii "01" nl: .ascii "\n" valor: .long 4952488 .section .text .globl _start _start: pushl $nl movl valor, %eax _empilha: xorl %edx, %edx movl $2, %ecx divl %ecx addl $digit, %edx pushl %edx cmpl $0, %eax jg _empilha _escreve: movl $4, %eax movl $1, %ebx popl %ecx movl $1, %edx int $0x80 cmpl $nl, %ecx jne _escreve _fim: movl %eax, %ebx movl $1, %eax int $0x80
Soma dois números lidos da memória
"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C
Escrita de um número em binário na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembler)
Escrita de um número em decimal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembly)
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (5)
Instalação do cosmic no archlinux (0)
Formas seguras de instalar Debian Sid [RESOLVIDO] (14)









