Autor Tema: instruccion para comprobar si un registro está a cero.  (Leído 3556 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
instruccion para comprobar si un registro está a cero.
« en: 19 de Febrero de 2007, 09:14:32 »
holas, hay alguna instruccion en asm para comprobar si un registro está a cero (bueno y con salto incluído se supone) es decir algo como btsc pero para un registro.

un saludo.  :-)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #1 en: 19 de Febrero de 2007, 12:10:57 »
holas, hay alguna instruccion en asm para comprobar si un registro está a cero (bueno y con salto incluído se supone) es decir algo como btsc pero para un registro.

un saludo.  :-)

Código: ASM
  1. movf   REG1,f
  2.    btfss   STATUS,Z
  3.    goto    NOESCERO
  4.  
  5. ESCERO:
  6.    ;...
  7.  
  8.    goto   ESCERO
  9.  
  10. NOESCERO:
  11.    ;...
  12.  
  13.    goto   ESCERO


PD. Estas y otras dudas las puedes sacar leyendo el instruction set de tu pic.

Saludso

- 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 Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #2 en: 19 de Febrero de 2007, 15:41:46 »
talvez podrias hacer un or exlusivo:

      movlw 0x00       ; primero un cero al registro W
      xorwf REG,0       ; or exclusivo con el registro REG y el registro W, y de guarda en el registro W
      btfss STATUS,Z
      goto NoCero
Cero:
      ...
      goto OtroPaso1
NoCero:
      ....
      goto OtroPaso2

Como ya se sabe el or exclusivo da cero en 0 0  y 1 1 por tanto si todos son ceros el resultado será cero:

        00000000       00000010
xor   00000000       00000000
        00000000       00000010

y en si el xor puede usarse para comparar con cualquier valor, ya que cuando se hace xor de un numero con el mismo numero el resultado siempre es cero, si uno de esos numeros es distinto del otro el resultado sera distinto de cero:

        xxxxxxxx        x1xxxxxx
xor   xxxxxxxx        x0xxxxxx
        00000000        01000000

tons en el: movlw 0x00    se puede generalizar a cualquier valor de 8 bits con: movlw XX, donde XX es un numero de 8 bits

es muy util este xor y tiene otras propiedades, que son muy utiles, saludos y espero te sirva, adios!!
« Última modificación: 19 de Febrero de 2007, 15:45:56 por Cryn »
.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #3 en: 19 de Febrero de 2007, 16:08:00 »
Cryn, de la forma que tu lo haces es más genérica y es muy útil para comprobar si un registro es igual a un "valor" determinado (incluyendo el cero).  El tema es que para comprobar si es igual a cero, la forma más simple es la de usar el movf que te ahorras una instrucción.

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 black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #4 en: 19 de Febrero de 2007, 19:09:52 »
eso es, exactamente lo que buscaba  :-/

gracias otra vez.   

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #5 en: 22 de Febrero de 2007, 20:10:51 »
Hola Black_flowers

Por una cuestion de orden seria mejor que las preguntas que tengas sobre instrucciones de asembler las postees en el sub foro Almacen del Asembler.

Asi tambien le sera util tambien a otros foristas.  :wink:

Saludos


“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #6 en: 22 de Febrero de 2007, 21:02:35 »
si, seria muy bueno mover este hilo a la parte de assembler, no creo que black se moleste, asi, que un encargado de l foro, que nos haga la movida, jjejeje.
.

Desconectado Desert

  • PIC10
  • *
  • Mensajes: 11
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #7 en: 23 de Febrero de 2007, 19:29:43 »
clrw
subwf    reg,w
btfsc     STATUS,Z
1º-SI ES 0 ACE ESTA INSTRUCCION
2º-SINO ES CERO ACE ESTA OTRA


Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: instruccion para comprobar si un registro está a cero.
« Respuesta #8 en: 23 de Febrero de 2007, 22:02:49 »

Todopic habia dado otra opcion muy buena:

http://www.todopic.com.ar/foros/index.php?topic=14812.msg93478#msg93478

O su opuesta(primero decf y luego incfsz).

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.