Creo que esta es la solucion:
%include "io.inc"
%macro print 1
push eax
push ecx
mov eax, %1
mov ecx, 0
while:
add ecx, 1
cmp byte [eax+ecx], 0
jmp PRINT_CHAR [eax+ecx-1]
jne while
pop ecx
pop eax
%endmacro
%macro strcpy 2
push eax
push ecx
push edx
push SI
mov edx, %1
mov eax, %2
mov ecx, -1
.while:
add ecx, 1
cmp byte [eax+ecx], 0
mov SI, [eax+ecx]
mov [edx+ecx], SI
jne .while
pop SI
pop edx
pop ecx
pop eax
%endmacro
;segment data
section .data
msg db "Hola", 13, 0
section .bss
msg2 resb 100
section .text
global CMAIN
CMAIN:
xor eax, eax
strcpy msg2, msg
print msg2
ret 0