Lenguaje Ensamblador

January 17, 2007 at 4:22 pm | Posted in Ensamblador, Tutorial | 37 Comments

El ensamblador que utiliza MPLAB por defecto y el que utilizaremos para programar los PIC es MPASM. Los elementos básicos del lenguaje ensamblador son:

  • Etiquetas
  • Instrucciones
  • Operandos
  • Directivas
  • Comentarios

Para la programación se utiliza una cierta tabulación que se debe respetar, además utilizar una tabulación adecuada hace los programas más claros y legibles. Las etiquetas se escriben en la primer columna de cualquier línea, las instrucciones y directivas en la segunda y por último, en la tercer columna, los operandos. Los comentarios se pueden escribir en cualquier parte del programa.

Etiquetas

Una etiqueta es una palabra utilizada para designar alguna línea o sección del programa, se pueden utilizar para saltar de una parte hacia esa etiqueta. Es importante que las etiquetas empiecen con una letra o con un guión bajo “_”. La longitud de una etiqueta puede ser de hasta 32 caracteres y como ya se dijo se deben escribir en la primer colúmna.

Lea el artículo completo en el blog Circuitos electronicos.

37 Comments »

RSS feed for comments on this post. TrackBack URI

  1. EXCELENTE EL TUTORIAL MUCHAS GRACIAS

  2. muy bueno esta muy padre gracias

  3. Como que te sacas de la manga eso de las configuraciones >_>

    Seria mejor que las definieras de la forma estándar, porque así esta confuso.

    BUEN TUTORIAL ! =)

  4. que significa el simbolo $ en tu programacion explicame por favor

  5. El símbolo $ hace referencia a la misma línea del programa en la que dicho símbolo aparece. Por ejemplo un “goto $” haría que el programa siempre estuviera realizando un salto hacia esa misma línea.

  6. alguien me podria ayudar o decirme si lo que quiero hacer no se puede…

    quiero hacer librerias en ensamblador pero quisiera saber como hacer funciones que lleven argumentos (1 o mas), ya se hacer macros, funciones pero no llevan argumentos y quisiera hacer algunas con argumentos… me prodrian ayudar… gracias

    p.d. Tips o alguna duda que tengan con los pics pueden preguntar

  7. Ernesto, en los macros se pueden enviar argumentos.

  8. gracias me ayudo mucho, y ahora lo bueno viene ya que tendre que hacer un robot que siga una linea negra🙂

  9. La lógica para hacer un robot que siga una línea no es difícil así que no debes tener mucho problema con la programación ya que tus sensores los puedes leer como si fueran interruptores, lo complicado es armar el hardware del carrito.

  10. excelente muy bien explicado, te la comiste… pero me gustaria que colocaras ejemplos en los cuales se evite el salto de bancos, tengo entendido que puedo declarar al principio:
    trisA equ 05H
    trisB equ 06H
    portA equ 85H
    portB equ 86H
    esto lo hago para evitar el salto de bancos de memoria….. es esto cierto?

  11. ajr2, siempre que quieras acceder a un registro que se encuentra en otro banco debes realizar ese cambio (o salto) de bancos, de lo contrario tu programa tendrá errores y no funcionará.

  12. che, me sirvio de mucho, gracias, es la 1ra vez q escribo y tengo una duda, kiero poner LOS 5 BITS del puerto A como salida, pero no se si el puerto A tiene 5 bits o mas, o es necesario especificar algo para q solo sean 5 bits
    gracias
    ah, soy de bolivia

  13. Hola MARCIA, gracias por tu comentario, y sobre tu duda vamos a ver si te la puedo aclarar:
    Dices que quieres poner los 5 bits del puerto A como salida, no especifícas que 5 bits, el pic 16f628a tiene 7 pines en el puerto A que pueden ser salida, esos son los bits 0,1,2,3,4,6,7, el pin RA5 (es decir el bit 5) solo funciona como salida.
    Muy bien, aclarado eso te digo como configurar un bit como entrada o como salida, eso se configura con los registros TRISx que se encuentran en el banco 1, es decir que para configurar el puerto A como entrada o salida debes configurar el registro TRISA, escribiendo un 1 en un bit del registro TRISA ese bit del puerto A se configura como entrada, escribiendo un 0 se configura como salida.
    Si quieres configurar los primeros 5 bits del puerto A lo puedes hacer de varias formas, por ejemplo:
    -Forma 1
    bsf STATUS,RP0 ; Cambio al banco 1
    bcf TRISA,0 ; Bit 0 del puerto A como salida
    bcf TRISA,1 ; Bit 1 del puerto A como salida
    bcf TRISA,2 ; Bit 2 del puerto A como salida
    bcf TRISA,3 ; Bit 3 del puerto A como salida
    bcf TRISA,4 ; Bit 4 del puerto A como salida
    bcf STATUS,RP0 ; Cambio al banco 0
    – Forma 2
    bsf STATUS,RP0 ; Cambio al banco 1
    movlw b’00011111′
    movwf TRISA
    bcf STATUS,RP0 ; Cambio al banco 0
    – Forma 3
    bsf STATUS,RP0 ; Cambio al banco 1
    clrf TRISA ; Todo el puerto A como salida
    bcf STATUS,RP0
    —-
    Asi puedes configurar el puerto A, las primeras dos formas funcionan igual, configuran los primeros 5 bits (del 0 al 4) del puerto como salida mientras que la tercera configura el puerto completo como salida, espero que haya quedado claro.

  14. Hermano usted tiene el don de esplicar ASSEMBLER mas completo que he visto, tiene mucho talento lo felicito no es facil enseñar un programa de cero y que sea entendible por personas que no conocen los comandos y sus usos….

    ahora requiero de su experiencia estoy trabajando con el PIC 16F877 y quiero aprender a utilizar esas directivas que son super simplificadas tanto las que son orientadas a Bits como las mas complejas
    como BNZ, BNC, ADDCF, ADDDCF, B, SKPX, SKPXX
    se que muchas son orientadas a registros de flag y habilitadores y bit test por lo que pude investigar pero si posees mas informacion te lo agradeceria…

    JAREDGOMEZ@HOTMAIL.COM

  15. hola q tal espero q me puedas ayudar en mi uni tenemos los peores profesores por eso tenemos q hacer todo nosotros necesito un programa que mediante dos datos A y B dispuestos en las direcciones 0x10 y 0x11 del banco 2, respectivamente realice las siguientes operaciones. Según la comparación de estos datos se obtiene un resultado que se cargará en la posición 0x12. Si A = B el resultado será 0. Si A > B el resultado será es A – B y si B > A el resultado A + B.

  16. that´s all dude

  17. QUE ES LE PUNTO MODEL Y PARA QUE SIRVE?

  18. hola!
    saludos a todos, me gustaria me apoyaran en este lenguaje pues me intereza, pero aun no comprendo ciertas cosas, pueden mandarme alguna pagina para aprender desde cero? nose como se usan los interruptores…. les agradeceré su ayuda.
    atte. ice.

  19. Buenas tardes,bueno mi pregunta es donde puedo conseguir informacion buena sobre como programar pic en lenguaje assembler y como funciona exactamante un microcontrolador(((funcionamiento interno,estructura interna)))
    bueno gracias espero me puedan ayudar ya que apenas me inicio en esto y quiero aprender a programar pic……….

  20. hola esta buena esta paguina y el tutorial me ayudo a entenderle mucho mejor pero me gustaria saber si me podrias echar la mano de como se puede usar un pic para utilizarlo en una funcion de transferencia con retroalimentacion, tengo entendido que se necesita utilizar un combertidosr A/D pero no se bien como utilizarlos ambos espero me puedas ayudar gracias

  21. hola un saludo quisiera ver si alguien me puede orientar para hacer un programa en ensamblador para encender un carro.
    gracias !!!!!!!!!!!!!!!!!!!!!

  22. hola!!

  23. q calidad los cuadritos de colores

  24. Buenas tardes quiero decirle que esta muy buena la explicacion del procedimiento de programacion para pic en este lenguaje y me gustaria saber si posee algun “manual” o algo similar que pueda enviarme al correo que este completo para poder seguir estudiando este apacionante mundo de los pics.
    muchas gracias.
    Atte.Ruben

  25. muy chida tu pagina me ayudo a resolver una de dudas que tenia con lo de la programacion en ensamblador,,, felicidades… saludes desde chiapas mexico…

  26. que tal.. saludos..

    Estoy a qui por el motivo que estoy empezando en el mundo del elnguaje ensamblador… estoy realizando apenas unos programas pero necesito probarlos para sabe r is estoy en lo correcto de acuerdo a MPLAB, como funciona se instala o como.. espero alguien me pueda deccir como empezar con esto.. y resivir informacion por part de todos… gracias por la atencion…

    mi correo es.

    skifree@live.com.mx

  27. El tutorial es muy bueno, pero es muy basico o no supe interpretarlo, ya que necesito realizar un circuito con el pic 16f628 que permita contar de
    o a F en forma ascendente, donde pulsadores independientes, con visualización en display de siete segmentos y que cuando detecte un numero par, lo indique por medio de una señal auditiva(sumbador) y una señal visual (led verde) de lo contrario led rojo.
    Ejemplos como este son los que necesitamos los que apenas iniciamos programacion MPLAB con estos pic, por que los ejemplos que nos dan algunas paginas son muy basicos y no enseñan a combinar comandos o instrucciones.
    Espero me pudedan responder este comentario.

  28. mi correo es ing.andres10@hotmail.com espero me escriba alguien que conozca como cuadrar los tiempos para las visualizaciones antes mencionadas.
    UNIVERSIDAD COOPERATIVA DE COLOMBIA.

  29. quien me puede ayudar con el retardo de un pic 16f84a

  30. me pareció muy claro y didáctico esta esplicación, me interesa saber mas pero necesito empezar de los mas basico. y hasta como usar los programas ejemplo MPLAB. donde puedo informarme. Ayudaaaaa….

  31. hola que chebre tutor esta muy de tallado me interesaria que continue hasiendo mas tutores para de otras instrucciones

  32. muxas gracias…. es en el unico sitio que he podido encontrar buena informacion sobre ensamblador……………

  33. necesito un tutorial de mspam o un ejemplo de como programar rutinas….xfa…contesten a mi correo.

  34. hola amigos, reciban un saludo cordial

    les pido un favor aver si alguien me puede ayudar lo que pasa que soy nuevo en esto de programacion de pics y aun se me dificulta muchas cosas y quiero que un programa en un 16f628a me trabajen sus entradas y salidas de la siguiente menera

    Necesitó que el pic al energizarlo por defecto tenga tres salidas altas, Por ejemplo. (RB1, RB2, RB3, ON)

    Si RA0 recibe un pulso, las salidas = RB1 = OFF, RB2 = ON, RB3 = ON

    Si RA1 recibe un pulso, las salidas = RB1 = ON, RB2 = OFF, RB3 = ON

    Si RA2 recibe un pulso, las salidas = RB1 = ON, RB2 = ON, RB3 = OFF

    Si RA3 recibe un pulso, las salidas = RB1 = OFF, RB2 = ON, RB3 = OFF

    Si RA4 recibe un pulso, las salidas = RB1 = ON, RB2 = OFF, RB3 = OFF

    Si RA5 recibe un pulso, las salidas = RB1 = ON, RB2 = ON, RB3 = ON (ENCIENDE LAS TRES SALIDAS)

    NOTA 1: AL ENERGIZAR EL CIRCUITO QUE SUS SALIDAS POR DEFECTO SEAN ALTAS.
    NOTA 2: EL PULSO QUE LLEGA A LAS ENTRADAS ES MOMENTANEO
    NOTA3: DE PREFERENCIA PROGRAMAR EN UN PIC16F628A

    por su atencion y su ayuda, muchas gracias

    • hola

  35. hey!!!!!
    qe bnqe creaste esta pagssshhh
    es la neta…
    ademas encontre lo que qeriaaaa….
    aaaauuuu
    grax
    kdt

    ciuuu

  36. hola esta genial esto oigan aiguen me puede ayudar necesito hacer un programa en lenguaje ensamblador q haga esto:

    Escribir un programa para el PIC16F877 que tome 16
    muestras de los datos en el puerto B que deben haber
    sido configuradas como entrada, tomando una muestra
    cada medio segundo. Posteriormente, el promedio de
    las 16 muestras debe ser exhibido en decimal por
    medio de un display de 7 segmentos. Los displays
    estaran conectados a los puertos C(unidades), D(decenas)
    y A centenas.
    El proceso debe inicicarse cuando se presione un boton
    conectado en el bit 0 del puerto E.

    gracias


Leave a Reply

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

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: