Escrita de um número em hexadecimal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assemble

Publicado por Perfil removido (última atualização em 08/04/2013)

[ Hits: 6.986 ]

Download hexadecimal001.asm




Método semelhante à da escrita em decimal do outro código já postado em: http://www.vivaolinux.com.br/script/Escrita-de-um-numero-em-decimal-na-tela-em-Assembly-Puro-para-Li...

Há uma versão para este mesmo método de escrita em hexadecimal feita para o GNU Assembly (estilo AT&T), já publicada. Para uma melhor comparação das diferenças entre os dois modelos de codificação: http://www.vivaolinux.com.br/script/Escrita-de-um-numero-em-hexadecimal-na-tela-em-Assembly-Puro-par...

A diferença é a de trocar a string dos caracteres de escrita decimal "0123456789" pela string dos caracteres de escrita em hexadecimal "0123456789abcdef".

E trocar o valor do divisor, que é 10, por 16.

  



Esconder código-fonte

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;      Comentários:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    nasm -f elf hexadecimal001.asm
;    ld -s hexadecimal001.o -o hexadecimal001
;    a opção -s no linkeditor faz 
;     "strip -s" automaticamente
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

section   .text         
global       _start         

_start:   

   push    nl
   mov    eax,   valor

_empilha:

   xor    edx,   edx
   mov    ecx,   0x10
   div   ecx
   add   edx,   digit
   push    edx
   cmp    eax,   0x00
   jg    _empilha

_escreve:

   mov    eax,   0x04
   mov    ebx,   0x01         
   pop    ecx
   mov    edx,   0x01
   int    0x80

   cmp    ecx,   nl
   jne   _escreve

_fim:

   mov    eax,   0x01
   int    0x80

section      .rodata

   digit   db   "0123456789abcdef"
   nl   db   `\n`
   valor   equ   4952488

Scripts recomendados

Retorna a diferença entre dois vetores em Assemly

Ano bissexto em assembly

"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C

Assembler 8086 - Simples código que mostra horas e minutos em pontos

Hora do sistema


  

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