Autor Tema: ASM desde C  (Leído 11577 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ASM desde C
« Respuesta #15 en: 20 de Mayo de 2008, 15:30:57 »
... Pues me han pedido el codigo fuente de una aplicacion que hice y ademas el ASM ( el ing. tec. de la empresa no maneja C ) ...

pero pedido es pedido)
...

haberlo dicho antes MLO__   8)

De todas formas suerte con el cometido que te has propuesto y velo por el lado positivo: por lo menos agarras práctica a la hora de reconocer los registros de proposito generales

... tal vez con un 16F pueda hacerse, pero uno no puede andar modificando el .asm de un 18F, es un trabajo casi insoportable si tienes que hacerlo, hay que trabajarlo en C y si llegado el caso necesitamos hacer alguna operación en particular que CCS no la contemple podemos incluir el pedazo de asm en el archivo .C.

...

yo creo que sería al contrario, con un 18F seria mas fácil.

siempre he leido que con los 18F es mas dificil progranmar en asm, en mi corta experiencia, no lo he visto así. Pongamos el ejemplo de la posibilidad de omitir el direccionamientos de bancos.

puede que salga un rebuzno, pero el que los 18F traigan mas instrucciones no implica dificultad, esto lo asumo por llamada compatibilidad ascendente, el cúal toma las mismas instrucciones de las serie 16F (de hecho los 18F traen unas instrucciones que son una bendición en comparación con los anteriores).
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ASM desde C
« Respuesta #16 en: 20 de Mayo de 2008, 17:23:16 »
Hola amigos

Pues ha sido mas sencillo con la opcion del MPLAB que propuso maunix. Lo que si hay que hacer es organizar muy bien todo para que compile.
PalitroqueZ, la verdad programe en ASM cuando estaba en la U y era sencillo con los 18 ya que no habia que cambiar de banco a cada rato como en los 16 asi que comparto tu nocion, pero ya estoy tan amanado al C que no lo cambio, aunque esto involucre aumentar en algo el peso del archivo .hex

Saludos y gracias.  :-/
El papel lo aguanta todo

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: ASM desde C
« Respuesta #17 en: 20 de Mayo de 2008, 21:36:38 »
Interesante punto de vista Palitroquez, la verdad que yo siempre programo los 18F en C y he visto poco el ASM que generan, puede que los halla visto mas complejos por el simple hecho de que en general los programas que hice en los 18F fueron mas complicados que en los 16F. Uno a veces encuentre respuestas realmente utiles cuando no las espera y no cuando las busca  :-/ :-/ :-/.

Saludos a todos.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ASM desde C
« Respuesta #18 en: 21 de Mayo de 2008, 08:55:28 »
Pues ha sido mas sencillo con la opcion del MPLAB que propuso maunix. Lo que si hay que hacer es organizar muy bien todo para que compile.
Pues me alegro que te haya servido,ya veras que este foro es muy participativo , con varios aportando diferentes sugerencias a un mismo tema/problemática y luego tu o quien sea que preguntó elige la que le parece mejor y listo. 

La permanencia de las preguntas en el foro permiten que otros usuarios con dudas similares salgan beneficiados de lo mismo incluso a pesar de no haber preguntado del tema, siempre se puede aprender algo, pequeñas cositas, trucos, caminos más cortos para llegar a lo mismo, etc.


En cuanto al ASM del 18F y del 16F, conozco ambos y debo decir que es cierto que el 16F es más fácil de entender, lo cual no significa que hacer programas complejos con el 16F sea más fácil que con el 18F.  La arquitectura de los 16F también es más simple, su set de instrucciones más reducidos etc, pero los 18F son muuucho más potentes y de comenzar con los PICs yo comenzaría con los 18F sin dudarlo.

Como bien dió a entender Palitroquez los 18F tienen muchas más opciones y permiten con menos instrucciones lograr lo mismo que con un 16F se deben hacer con varias y desarmándose el cerebro jeje.  Pero bueno tantas opciones pueden marear cuando no se las conoce y por ello el iniciarse programando en ASM para los 16F es más simple.

Saludos




- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ASM desde C
« Respuesta #19 en: 21 de Mayo de 2008, 13:07:47 »
Bueno ahí tienes la respuesta de Mauricio que ha trabajado el asm mas que yo.  :)

.. pero ya estoy tan amanado al C que no lo cambio, aunque esto involucre aumentar en algo el peso del archivo .hex
...

igualito. Soy un adicto al c y a menos que la ocasión me obligue a cambiar, seguiré resteado con el c



resteado: fiel seguidor
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ASM desde C
« Respuesta #20 en: 21 de Mayo de 2008, 13:23:18 »
Saludos!
Ey palitroquez está muy bueno tu definición de las palabras coloquiales venezolanas...  :D
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ASM desde C
« Respuesta #21 en: 22 de Mayo de 2008, 15:25:53 »
Hola muchachos.

Pues gracias por todo, ya casi no ha dado problema.... sin embargo el trabajo de organizarlo es muuuuy monotono ( copiar, pegar, copiar, pegar .......  :D ) menos mal esta excel!!!!

Por ahi me entere de que existen programas en pasar de C a ASM y me dieron un nombre: PICC++, he intentado buscarlo en la internet, pero no he encontrado nada de nada  :( si alguien lo ha trabajado o sabe algo de este SW avisenme ok?

Y si maunix, es lo bacano de estos foros ( sobre todo de este!!!!! ) que hay muchas respuestas de todo tipo y eso le da la ventaja a uno de poder escoger o probarlas tooodasss!!!!! ademas las respuestas son rapidas y se nota el interes por colaborar.

Saludos amigos
El papel lo aguanta todo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ASM desde C
« Respuesta #22 en: 22 de Mayo de 2008, 15:34:15 »
No sé si te he entendido bien, pero para pasar de C a ASM lo que se necesita es un compilador :?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ASM desde C
« Respuesta #23 en: 22 de Mayo de 2008, 15:41:23 »
Por ahi me entere de que existen programas en pasar de C a ASM y me dieron un nombre: PICC++, he intentado buscarlo en la internet, pero no he encontrado nada de nada  :( si alguien lo ha trabajado o sabe algo de este SW avisenme ok?

El PICC es el compilador de Hitech

Es como te dijo Manolo,  un compilador generará con el linker el .hex el cual a su vez puedes abrir fácilmente para tomar de ahí el asm generado.

Si usas ccs no necesitas el PICC (aunque este último es mejorcito, al menos desde mi punto de vista).
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ASM desde C
« Respuesta #24 en: 22 de Mayo de 2008, 15:44:14 »
Saludos!
Acabo que el ccs tiene la opción "disassembler"... la acabo de probar y parece funcionar bien, tomando el .hex como dice maunix.
Será que le servirá eso a MLO?  :?
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ASM desde C
« Respuesta #25 en: 22 de Mayo de 2008, 16:56:07 »
Hola.

Pues tambien lo probe firepic. Pero como acostumbro a trabajar en el IDE del MPLAB entonces lo hago mejor alli.

Entonces, resumiendo ....... me estaba complicando la vida!!!!!  :D :D es cuestion de compilar el codigo en C ( ya sea en CCS o C18 .... ) importar el .hex y verificar el Program Memory, luego, anadir el inc del pic, darle la referencia del org y colocar end al final del codigo para poder compilarlo otra vez ( esta vez en ASM ) y verificar que el nuevo .hex generado corresponde al .hex generado por el compilador de C.

Estoy probando con codigos simples antes de meterme a organizar el codigo largo. Ya comentare los resultados.

Manolo: Lo que intento hacer es generar un codigo fuente ASM desde C, para poderlo compilar nuevamente y que genere el mismo .hex generado por la compilacion del codigo en C.

Gracias por la preocupacion amigos!!!!!!!  :-/

Saludos
El papel lo aguanta todo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ASM desde C
« Respuesta #26 en: 22 de Mayo de 2008, 17:27:38 »
Si coges cualquier HEX y lo desensamblas con Winpic800 te dará un código ASM compilable y convertible en el mismo HEX.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ASM desde C
« Respuesta #27 en: 22 de Mayo de 2008, 19:49:22 »
Hola Senor Nocturno  :mrgreen:

Es lo mismo que con el MPLAB tal y como me mensionaron antes cierto?
Yo puedo guardar ese codigo en otro archivo .asm, luego abrir un nuevo proyecto y compilarlo y ya? Porque lo que hago es "adicionarle" algunas cosillas para que se parezca a un codigo fuente en ASM.

Saludos
El papel lo aguanta todo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ASM desde C
« Respuesta #28 en: 23 de Mayo de 2008, 02:10:46 »
Pues si te digo la verdad no lo he probado, pero estoy seguro que tú lo harás  :D

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ASM desde C
« Respuesta #29 en: 23 de Mayo de 2008, 12:30:55 »
 :-/ :-/
 Pues ha funcionado de maravilla con programas pequenos!!!!! y en pic 16, pero  :( :( en el programa largo de un micro 18F442 me salen los siguientes errores:

Citar

Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F442 "main.asm" /l"main.lst" /e"main.err"
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1621 : Argument out of range (FF6E not between FF80 and 007F)
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1627 : Argument out of range (FBD1 not between FC00 and 03FF)
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1665 : Argument out of range (FF62 not between FF80 and 007F)
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1725 : Argument out of range (FF61 not between FF80 and 007F)
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1737 : Argument out of range (FF61 not between FF80 and 007F)
Error[126]   D:\ACCES\PIC18\ASM\MAIN.ASM 1780 : Argument out of range (FF69 not between FF80 and 007F)
Halting build on first failure as requested.
BUILD FAILED: Fri May 23 10:18:55 2008


y hacen referencia a las siguientes partes del codigo generado (respectivamente):
Código: [Seleccionar]
BC 0xca8
RCALL 0x57a
BNC 0xd00
BNC 0xd7a
BC 0xd92
BC 0xdf8

No entiendo muy bien el error, traduciendo literalmente implica que el valor que ahi se coloca no esta en el rango, lo raro es que no corresponde el numero asignado al numero que aparece en el error, es decir, tomando como ejemplo el primer error: el numero que debe aparecer en el primer error deberia ser 0xCA8 y no FF6E ???

Gracias por la ayuda.

Saludos
El papel lo aguanta todo


 

anything