Programando sumas en picasm

Hoy veremos cómo se programan las sumas en picasm.

Más adelante publicaré ejemplos prácticos, así que hay que mantenerse atento :P .


En Assembler se trabaja siempre a nivel de registros generales de memoria y el registro de trabajo, conocido como W. No se puede realizar directamente operaciones entre 2 registros cualquiera, siempre hay que trabajar con el registro W como intemediario.

Pero teniendo sólo el registro w y los registros generales somos capaces de realizar operaciones aritméticas básicas, en este caso la suma es bastante simple de realizar.

En assembler siempre usamos directamente el set de instrucciones del pic, que para la serie 16fxxx son sólo 35. Entre estas instrucciones, las que se relacionan a sumas son:

  • ADDLW
  • ADDWF
  • INCF

Ahora veremos a que se refiere cada una:

ADDLW

ADDLW suma una literal, es decir un número al registro de trabajo W, y el resultado queda guardado en el registro de trabajo.

Su sintaxis es:

    ADDLW       cantidad

Donde cantidad es la cantidad que queremos sumar al contenido del registro w, expresada ya sea en decimal, hexadecimal, o binario.

Ejemplo de uso:

    movlw     0x04; movemos el numero 4 al registro w
    addlw     0x06; sumamos el numero 6 al contenido de w

En pseudocódigo se expresaría así:

w = 4
w = w+6

El resultado es 10 (0x0A), y queda guardado en el registro W.

ADDWF

ADDWF suma el contenido del registro de trabajo W, con otro registro que debemos especificar, y el contenido se guarda ya sea en W o en el registro con el que hicimos la suma.

Su sintaxis es:

    ADDWF       registro,destino

Donde:
registro es la dirección del registro con el que queremos sumar el contenido del registro de trabajo W.
destino es el lugar donde va a quedar guardado el resultado, ya sea en w si se coloca un 0, o en el registro con el que se realiza la suma si se coloca un 1.

Ejemplos de uso:
En este ejemplo el resultado de la suma queda en el registro de trabajo w, y el contenido de la variable no cambia.

    movlw     0x04;        movemos el numero 4 al registro w
    addwf     variable,0;  sumamos w con la variable,

En este otro ejemplo, el resultado de la suma se guarda en el registro (la variable) con el que trabajamos, y no en el registro w.

movlw     0x04;        movemos el numero 4 al registro w
addwf     variable,1;  sumamos w con la variable

En picasm (osea, el lenguaje assembler para pics), se tiene el convenio de llamar w al registro de trabajo, y una f significa un registro cualquiera.

En la mayoría de programas para programación de pics, como piklab o mplab, tenemos predefinidos unas constantes w=0 y f=1, lo que hace más fácil de entender y escribir código, ya que lo anterior se puede escribir como:

movlw     0x04;       movemos el numero 4 al registro w
addwf     variable,w; sumamos w con la variable,
                    ; y el resultado queda en w, o bien:
addwf     variable,f; para que el resultado quede en la variable.

Como se ve, se puede usar directamente una w, si el resultado lo queremos guardar en el registro w, o una f si el resultado lo queremos guardar en el registro, de esta forma es más fácil de entender el código y también es más fácil escribirlo.

Para entenderlo mejor el código anterior, traducido a pseudocódigo sería:

w = 4
w = w + variable          # la suma queda en w, o bien:
variable = w + variable   # la suma queda en la variable.

INCF

Esta es la tercera forma de hacer sumas, en este caso sumamos 1 al registro de destino, como su nombre lo indica, es sólo un incremento. Esta instrucción tiene la ventaja de que también se puede seleccionar el destino del resultado, si en el registro w o en el registro f.

Ejemplo:

incf    variable,w     ;incrementa la variable, el resultado queda en w
incf    variable,f     ;incrementa la variable, el resultado queda en la variable

En pseudocódigo:

w = variable + 1          # suma 1 a la variable, el resultado queda en w
variable = variable + 1   # suma 1 a la variable, el resultado queda en la variable.

Advertisement

0 Respuestas a “Programando sumas en picasm”



  1. Dejar un comentario

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Sobre el autor:

Denjhox, diseñador electrónico y desarrollador web freelancer.

Gusta de armar circuitos programables, robots, desarrollar aplicaciones web y utilizar software libre.

Archivo

Han pasado...

  • 4,091 visitantes

Licencia:

Creative Commons License
Esta obra está bajo una licencia Creative Commons.


Seguir

Get every new post delivered to your Inbox.