elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Variables macros de NASM
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Variables macros de NASM  (Leído 3,027 veces)
alienxz77b

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Variables macros de NASM
« en: 20 Octubre 2021, 02:26 am »

Hola  :D gracias por las repuestas a esta pregunta :)
Tengo el siguiente código de ensamblador nasm que no funciona  :-\ pero no se porque:
Código
  1. %include "io.inc"
  2. %macro print 1
  3.    %%msg2 dw 12 ; esta la linea del error :(
  4.    push eax
  5.    push ecx
  6.    mov eax, %1
  7.    mov ecx, -1
  8.    while:
  9.    add ecx, 1
  10.    cmp byte [eax+ecx], 0
  11.    jmp PRINT_CHAR [eax+ecx]
  12.    jne while
  13.    pop ecx
  14.    pop eax
  15. %endmacro
  16. section .data
  17. msg db "Hola", 13, 0
  18. section .text
  19. global CMAIN
  20. CMAIN:
  21.    xor eax, eax
  22.    print msg
  23.    ret 0
  24.  
Mi intención con esto es crear una variable en una macro para usarla en un bucle, esta en una macro que imprime caracteres para que sepa si funciona o no  ;D pero no funciona  :(, si cambio el valor de 12 a 500 o 250, se traba el programa y no ejecuta :(, tambien si uso algo como;
Código
  1. %%msg2 db "Hola mundo"
No funciona
Gracias por las respuestas :)
Edit:
Logre hacerlo funcionar con el siguiente codigo:
Código
  1. %macro print 1
  2. section .data
  3.    msg2 db "Hola mundo";
  4.    section .text
  5.    push eax
  6.    push ecx
  7.    mov eax, %1
  8.    mov ecx, -1
  9.    while:
  10.    add ecx, 1
  11.    cmp byte [eax+ecx], 0
  12.    jmp PRINT_CHAR [eax+ecx]
  13.    jne while
  14.    pop ecx
  15.    pop eax
  16. %endmacro


« Última modificación: 20 Octubre 2021, 06:26 am por alienxz77b » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Variables macros de NASM
« Respuesta #1 en: 20 Octubre 2021, 11:34 am »

No funciona correctamente, a mi me imprime la siguiente cadena: " ola". ¿A que se debe esto? A que en el bucle primero haces la comparacion, despues el PRINT_CHAR y finalmente el salto a while o no asi que cuando llega al 0 terminador tambien lo escribe y como antes se encontro con un retorno de carro (\r = 13) volvio al principio de la linea.


PD. ¿Que funcion cumple msg2 exactamente?


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
alienxz77b

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Variables macros de NASM
« Respuesta #2 en: 20 Octubre 2021, 23:29 pm »

msg2 es una variable de ejemplo que quiero utilizar para imprimir un Hola mundo
Ejemplo:
Código
  1.  
  2. %macro printHelloWorld 0
  3. section .data
  4.    msg db "Hola mundo", 0
  5.    section .text
  6.    push ecx
  7.    mov ecx, -1
  8.    while:
  9.    add ecx, 1
  10.    cmp byte [msg +ecx], 0
  11.    jmp PRINT_CHAR [msg +ecx]
  12.    jne while
  13.    pop ecx
  14. %endmacro
  15. section .text
  16. global CMAIN
  17. CMAIN:
  18.    xor eax, eax
  19.    printHelloWorld
  20.    ret 0
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Variables macros de NASM
« Respuesta #3 en: 21 Octubre 2021, 00:13 am »

Si bueno, con tantas versiones es imposible no perderse, en el codigo que yo cite msg2 era irrelevante.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar variables por formulario sin variables globales¿? « 1 2 »
PHP
hardkoo 11 9,193 Último mensaje 22 Noviembre 2006, 12:55 pm
por chicuela66
Eso es bug del hypervisor o del NASM....
ASM
ño_ño 1 2,897 Último mensaje 15 Julio 2010, 03:58 am
por ño_ño
NASM en Linux
ASM
Stroncio 5 6,055 Último mensaje 28 Enero 2011, 02:01 am
por Stroncio
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
Meine programmen 1 3,826 Último mensaje 24 Marzo 2012, 16:48 pm
por Eleкtro
¿Como crear variables en C# que coincidan con las variables de un servidor sql?
.NET (C#, VB.NET, ASP)
dr4 0 1,876 Último mensaje 22 Mayo 2015, 13:15 pm
por dr4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines