• Jueves 2 de Mayo de 2024, 16:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - oskii

Páginas: [1]
1
ASM (Ensamblador) / Re: duda muy basica
« en: Miércoles 26 de Mayo de 2010, 14:42 »
ya arreglé el problema! xD. Gracias de todos modos

2
ASM (Ensamblador) / Re: duda muy basica
« en: Miércoles 26 de Mayo de 2010, 13:45 »
si en la cabecera lo paso con * y en la llamada con &, no me da errorr al compilar, pero...como logro cambiar el valor en ensamblador para cuando salga de la funcion este valor ya este cambiado??

3
ASM (Ensamblador) / duda muy basica
« en: Miércoles 26 de Mayo de 2010, 12:52 »
Hola a todos, de antemano muchas gracias por la ayuda. Mi duda es muy básica...como pasar una variable por referencia a ensamblador para que este cambie su valor. Tengo esto:

extern char funcion(int &exponente); cabecera funcion
char var =  funcion(exponente);  llamada funcion

construirhexadecimal:
            push ebp
            mov ebp, esp  ;puntero base pila (con el que me muevo en ella)
            push esi
            push edi
            push ebx
            mov esi, [ebp + 8] ;almaceno exponente                      
            mov esi, 3  CAMBIO VALOR          
            jmp salir



al compilar me da error en la llamada en C --> pracensam.c:23: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token

4
ASM (Ensamblador) / Error strcmp
« en: Miércoles 12 de Mayo de 2010, 18:49 »
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

-------------------------------------------------------------------------------------

Páginas: [1]