

Tengo el siguiente código de ensamblador nasm que no funciona

Código
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
%include "io.inc" %macro print 1 %%msg2 dw 12 ; esta la linea del error :( push eax push ecx mov eax, %1 mov ecx, -1 while: add ecx, 1 cmp byte [eax+ecx], 0 jmp PRINT_CHAR [eax+ecx] jne while pop ecx pop eax %endmacro section .data msg db "Hola", 13, 0 section .text global CMAIN CMAIN: xor eax, eax print msg ret 0



Código
No funciona
%%msg2 db "Hola mundo"
Gracias por las respuestas

Edit:
Logre hacerlo funcionar con el siguiente codigo:
Código
%macro print 1 section .data msg2 db "Hola mundo"; section .text push eax push ecx mov eax, %1 mov ecx, -1 while: add ecx, 1 cmp byte [eax+ecx], 0 jmp PRINT_CHAR [eax+ecx] jne while pop ecx pop eax %endmacro