Hola!, de antemano dar las gracias por el hecho de mirar las dudas. Yo estoy haciendo un pequeño codigo en ensamblador donde desde c le paso una cadena y un vector de cadenas. Mi funcion en ensamblador busca la cadena dentro del vector y devuelve la posicion (indice) del vector donde se encuentra. Recojo los 2 parametros, realizo un bucle donde almaceno el valor en cada momento del vector y con (strcmp) lo comparo con la cadena. Si el resultado es 0 (son iguales) salto a "escero" y devuelvo la posicion. El problema lo tengo en el strcmp que da error y llevo ya tiempo loco buscando la razón. Graciass!!!
-----------------------------------------------------------------------------------------------------------------------
global buscaretiqueta
SECTION .data ;datos inicializados
SECTION .bss ;datos sin inicializar
SECTION .text ;codigo ensamblador
extern strcmp
buscaretiqueta:
push esp ;puntero pila (coge parametros externos NO TOCAR)
push ebp
mov ebp, esp ;puntero baso pila (con el que me muevo en ella)
push esi
push edi
push ebx
mov ebx, [ebp + 8] ;en ebx esta la etiqueta
mov esi, [ebp + 12] ;en esi esta el vestor de etiquetas
xor edi, edi ;pongo a 0 el contador
push ecx
mov ecx, ebx ;meto la etiqueta (porque despues volvere a usar ebx)
bucle:
push edx ;para usar strcmp, los registros tienen que estar en la pila
mov edx, [esi + edi * 8] ;metes en registro edx el valor del vector etiquetas de la posicion cx call strcmp ;llama a strcmp con los 2 ultimos registros en pila (ecx, edx) pop edx
cmp eax, 0
je escero
add edi, 1
jmp bucle
escero:
mov eax, edi
pop ecx
pop ebx
pop edi
pop esi
pop ebp
pop esp
ret-------------------------------------------------------------------------------------