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: 7.055 ]

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

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

Retorna o maior e menor elemento de um vetor em Assembly

Crivo de Eratóstenes Simples para Linux x86 em Assembly Puro (GNU Assembler)

ToUpperCase em Assembler 8086

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


  

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