Para la gente interesada en el tema...
Logre resolver la duda con la ayuda de algunos compañeros de clases...
En ensablandor (en arquitectura IA-32, en la cual era mi duda) se pueden hacer llamadas a funcione spropias de C, en mi caso estoy programando en la consola de LINUX y simplemente se deben hacer los enlaces a las librerias o bibliotecas necesarias para poder hacer el uso a funciones como FOPEN y FGETC..
por ejemplo:
Para abrir un archivo simplemente se tiene le tiene que pasar como parametro a la funcion FOPEN el tipo de archivo que estas abriendo y el nombbre del archivo...
se hace asi:
push $r #se apila R indicando que es un archivo de Lectura (READ)
push ARCHIVO #es la etiquiera que contiene el nombre del archivo a leer
call fopen #se llama a la funcion de C FOPEN y recibe por parametro R y ARCHIVO
add $8,%ebp #Se libera el marco de pila...
esta funcion te va a retornar en el registro %EAX un apuntador a la direccion absoluta del archivo... pór lo cual se debe almacenar dicha variable en algun lado para no perder la referencia. (movl %eax,apuntador)
en el caso de leer caracter a caracer...
push apuntador
call fgetc
add $4,%ebp
En este caso en retorna el valor del caracter en %EAX
y puede validar el Fin de ARchivo cuando %EAX es igual a 0.
si se quiere leer todo un archivo se crea un ciclo que haga un recorrido hasta que %EAX sea igual a 0.
vale?..
Espero que les sirva a futuras personas que tengan la duda que yo tuve...
Hola que tal, estuve buscando por ineternet y casualmente encontre este post que me ha servido porque es justo lo q estaba buscando, se q fue posteado hace mucho pero ojala aun puedan ayudarme, estaba haciendo lo del fgets para leer caracter a caracter d una archivo y bueno resulta que queiro leer todo el archivo y llevar un contador para luego hacer una copia del archivo. Tengo esto:
# leer caracter a caracter
push apuntador
call fgetc
add $4,%ebp
En este caso en retorna el valor del caracter en %EAX
y puede validar el Fin de ARchivo cuando %EAX es igual a 0.
si se quiere leer todo un archivo se crea un ciclo que haga un recorrido hasta que %EAX sea igual a 0.
# movl $1, %ebx # %ebx=0
# addl aux, %ebx # aux = aux + %ebx
# While
while:
cmp $0, %eax
je endwhile
addl p, %ebx # aux = aux + %ebx
jmp while
# End While
endwhile:
pushl %eax
pushl %ecx
pushl %edx
call Metodo1
------------------------------
bueno si hago esto:
# leer caracter a caracter
push apuntador
call fgetc
add $4,%ebp
no m da error
Pero si hago el ciclo while m sale una violacion de segmento
Podrian ayudarme xfis!!