Autor Tema: saltarse los returns a la torera  (Leído 1590 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
saltarse los returns a la torera
« en: 29 de Enero de 2012, 19:09:02 »
hola.estaba haciendo un programa para el 18f2550 en el cual he necesitado realizar la llamada a otros programas.pero queria que al llegar a los returns,el programa no
retroceda por sus mismos pasos.
es decir retornar hacia atras pero saltandome uno de los programas por los que he pasado.
esto es lo que represento en el ejemplo.salto dos veces y vuelvo al principio sin que tenga repercusiones para poder realizar llamadas desde el programa
principal.solo hay que tener en cuenta cuantas llamadas se han realizado desde el programa original.y poner tantos POP como sean necesarios.

ejemplo:

0x2340   call 0x2364
0x2341   nop
.
.
0x2350   nop
.end
0x2364   nop
0x2365   call 0x2378

0x2368   nop
.
.
.
0x2377  return
0x2378  nop
0x2379  call 0x2400
.
.
0x2400  nop
          
              POP
              POP
   MOVLW   0X23
   MOVWF   PCLATH
   movlw   0x41
   movwf   PCL
         
al poner los dos POP es para que el Stack Pointer desapile dos de las direcciones de retorno al encontrar un un return.
pero es factible hacer esto?para esto se utiliza la instruccion POP?o es para otra cosa.
« Última modificación: 29 de Enero de 2012, 19:54:58 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: saltarse los returns a la torera
« Respuesta #1 en: 29 de Enero de 2012, 20:40:37 »
Hola groundman, Estas usando un PIC18?, en esos si es posible acceder a la pila, asi que veo factible eso que haces

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: saltarse los returns a la torera
« Respuesta #2 en: 29 de Enero de 2012, 21:05:57 »
es la primera vez que uso esa instruccion.creo haberlas usado en los Z80.pero tampoco estoy muy seguro.hace ya muchos años de eso.
no se si lo mas normal es que se usen antes y despues de una interrupcion.push y pop
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado tropero

  • PIC10
  • *
  • Mensajes: 25
Re: saltarse los returns a la torera
« Respuesta #3 en: 29 de Enero de 2012, 22:21:08 »
Hola!  :lol:

En el Z80 (y en otros micros como el 8088, ¡ugh! ¡qué viejo que soy!) se usaban las instrucciones PUSH y POP para pasar variables a las funciones (por valor, el contenido de los registros; por referencia, cargas DS:Offset de la dirección de memoria en que se encuentra la variable).

Que mal me hace recordar la programación en assembler para esos micros  :(

Salú2
Un golpe a tiempo ahorran muchas palabras...