Duda usando macros en GAS

Iniciado por 0and6, 2 Junio 2017, 21:00 PM

0 Miembros y 1 Visitante están viendo este tema.

0and6

Hola, buen dia estoy aprendiendo a usar las macros en ensamblador, utilizo en compilador GAS, en su version 2.26.1, encontre un ejemplo el caso es que no me lo convierte en codigo fuente, me aparecen los mensajes
Error: unsoported instrucction 'mov'
en las lineas donde mando a llamar a las macros
escribir_cadena  $mensaje1  $longuitud1

He buscado otros ejemplos y al parecer estoy bien, pero a mi no me sale
Les anexo el codigo

Código (asm) [Seleccionar]

# COMPILAR
# as -o macros.o macros.s
# ls -o macros macros.o

.macro terminar
movl $1,%eax
movl $0,%ebx
int $0x80
.endm

# espera ECX=cadena ; EDX=longuitud
.macro escribir_cadena cadena longuitud
movl $4,%eax
movl $1,$ebx
movl \cadena,%ecx
movl \longuitud,%edx
int $0x80
.endm

# espera ECX=cadena ; EDX=longuitud
.macro leer_cadena cadena longuitud
movl $3,%eax
movl $0,%ebx
movl \cadena,%ecx
movl \longuitud,%edx
int 0x80
.endm


.section .data
retorno: .byte 0x0A
mensaje1: .ascii "\nIntroduce una cadena: "
longuitud1 = . - mensaje1
buffer: .ascii "           "


.section .text
.globl _start

_start:
escribir_cadena $mensaje1 $longuitud1
leer_cadena $buffer $10

escribir_cadena $retorno $1
escribir_cadena $buffer $10

escribir_cadena $retorno $1
terminar

ivancea96

El error es la llamada en sí o una instrucción dentro del macro? Verifícalo (puedes comentar todas las instrucciones del amcro a ver si sigue dando el problema?
De ser una instrucción, averigua exactamente cual.


PD: longitud es sin 'u' entre la g y la i :o