Autor Tema: Equivalente de CALL en ensamblador para C  (Leído 3756 veces)

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

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Equivalente de CALL en ensamblador para C
« en: 10 de Diciembre de 2010, 10:41:26 »
Hola,

Utilizo el lenguaje C para programar el Pic 16f876 y para saltar a una linea determinada utilizo en goto. Cuando el programa es corto va bien pero para programas largos se complica la programación.

Me gustaria saber el equivalente de CALL en ensamblador para C, cuando hago el programa en C, que pueda enviar a una linea determinada y una vez que ha hecho la rutina vuelva desde donde lo habia dejado, como ocurre en ensamblador con la instruccion CALL.

Gracias de antemano.


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Equivalente de CALL en ensamblador para C
« Respuesta #1 en: 10 de Diciembre de 2010, 10:43:46 »
En C son las funciones. Lee un buen tutorial de C para que aprendas a usarlo.

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Re: Equivalente de CALL en ensamblador para C
« Respuesta #2 en: 10 de Diciembre de 2010, 13:14:03 »
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Equivalente de CALL en ensamblador para C
« Respuesta #3 en: 10 de Diciembre de 2010, 13:21:01 »
goto no suele usarse en C, es poco recomendable. Estudia sobre las estructuras de control y funciones. Revisa el foro, hay muuuuuchos ejemplos de todo tipo.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Equivalente de CALL en ensamblador para C
« Respuesta #4 en: 10 de Diciembre de 2010, 13:29:17 »
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez

Tienes que estudiar lo básico de lenguaje C. Lo mejor es que inicies con algún tutorial desde cero que encuentres en Google. Aprender C no tiene que ver con el manual del compilador que estás usando.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Equivalente de CALL en ensamblador para C
« Respuesta #5 en: 10 de Diciembre de 2010, 14:01:04 »
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez

Tienes que estudiar lo básico de lenguaje C. Lo mejor es que inicies con algún tutorial desde cero que encuentres en Google. Aprender C no tiene que ver con el manual del compilador que estás usando.

  Concuerdo plenamente con migsantiago. Yo empecé a programar en C los PIC (nunca antes había programado en C) y uno de los libros que encontré en la web fue "aprenda ANSI C como si estuviera en primero" y realmente es muy sencillo entenderlo
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado dolphin_96

  • PIC12
  • **
  • Mensajes: 73
    • Ezkybel Electronics
Re: Equivalente de CALL en ensamblador para C
« Respuesta #6 en: 10 de Diciembre de 2010, 14:02:09 »
te pongo un pequeño ejemplillo que te explicara algunas ventajas de las funciones hay muchas mas cosas y es un tema muy extenso pero te expli tres de los casos mas usuales para el uso de las funciones:

void funcion_1(void)
{
  //aqui haces lo que quieras
}

int funcion_2(void)
{
   int variable1;
  variable1= 20 /5;
 return variable1;
}

int funcion_3 (int x)
{
   int variable1;
  variable1= x * 3;
 return variable1;
}

void main (void)
{
   int valor,resultado; //declaracion devariables

    funcion_1();
    valor = funcion _ 2();
    resutado = funcion _ 3 (20);
}

en este ejmplo, desde la funcion pricipal (main) mandas llamar la funcion "funcion1" lo de void significa que no regreara ningun valor y el void dentro del parentesis significa que no recivira algun valor, en esta funcion haces lo que quieras al terminar de hacerlo regresa a seguir donde se quedo el programa en este caso la linea "valor = funcion _ 2();" bueno este es otro caso vas a asignar el valor que te regrese la funcion "funcion_2" si te fijas ya la declaramos como "int funcion_2" lo que significa que devolvera un valor tipo "int", asi que dentro de la funion he creado una variable llamada "variable1" luego hago una operacion  20/5, al poner return dice que al volver al main le retornara el valor de "variable1" en este caso un  4, por lo tanto en el main la variable valor valdra 4, y seguira en el programa con la linea "resutado = funcion _ 3 (20);" y aqui por ultimo te explico que hace esta funcion: si te fijas dentro del parentesis puse el numero 20, este es un valor cualquiera del tipo int (0 a 255 en el caso del compilador CCS) y debe ser del tipo int por que si te fijas tambien declare en la funcion_3 dentro del parentesis: "int x" bueno lo que haces es que le cargas 20 a funcion 3, la cual se lo asignara a la variable local de dicha funcion llamada x y dentro de esta funcion trabajara con este valor al meno que lo cambies, entonces hace la operacion "x * 3" es decir 20 * 3 asi y se lo asigna a "variable1" que es la que se devuelve al regresar a el main, por lo tanto en el main la variable "resltado" valdra 60.

espero que te sirva de algo esta pequeña explicacion y como te dijo "migsantiago" estudia un manual por que hay muchas mas cosas interesantes en este lenguaje como con el uso de los punteros en las funciones etc etc, a por cierto como dice Suky aunque puedes usar el goto en el lenguaje C, te recomiendo que no lo hagas, la verdad se ve mal y se sale un poco del sistema de programacion en C, pero eso es cuetion de gustos.

Saludos
Visiten: www.xbot.es/ezkybel tengo tutoriales para pics con visual basic...:)

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Re: Equivalente de CALL en ensamblador para C
« Respuesta #7 en: 10 de Diciembre de 2010, 14:05:18 »
Muchas gracias a todos.

Saludos.


Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Equivalente de CALL en ensamblador para C
« Respuesta #8 en: 11 de Diciembre de 2010, 08:57:27 »
Hola amigo, acá te dejo un tutorial sencillo para que te inicies, Tutorial CCS

saludos.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Equivalente de CALL en ensamblador para C
« Respuesta #9 en: 11 de Diciembre de 2010, 11:47:38 »
Hola amigo, acá te dejo un tutorial sencillo para que te inicies, Tutorial CCS

saludos.

Yo no le daría un tutorial de un compilador, le daría un tutorial estándar de lenguaje C. El empezar a aprender C con un compilador específico (y malo como CCS) no creo que sea buena idea.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Equivalente de CALL en ensamblador para C
« Respuesta #10 en: 11 de Diciembre de 2010, 12:48:35 »
Citar
Yo no le daría un tutorial de un compilador, le daría un tutorial estándar de lenguaje C. El empezar a aprender C con un compilador específico (y malo como CCS) no creo que sea buena idea.

IDEM...

Hay otro que promete lo siguiente:

Aprendiendo C en 21 Días


 

anything