Tengo el siguiente código de ensamblador nasm que no funciona pero no se porque:
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 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;
%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