Mini-Prácticas de programación ensamblador y en C para microcontroladores - Sumando en ensamblador con microcontroladores

1 - Sumando en ensamblador con microcontroladores


Apuntes creado por BADBYTE-K . Extraido de: http://foro.elhacker.net/index.php/topic,43897.0.html
20 Enero 2005
programa 1


Citar;  Este programa suma el contenido de las posiciones 0x0c y 0x0d
; de memoria y almacena el resultado en la posicion 0e.

        LIST p= 16c84           ;Indica el modelo de PIC que se usa
                                ;Es una directiva del ensamblador.
;












--                                ;Zona para etiquetas.
        OPERANDO1 EQU 0x0c      ;Define la posici¢n del operando1
        OPERANDO2 EQU 0x0d      ;Define la posici¢n del operando2
        RESULTADO EQU 0x0e      ;Define la posici¢n del resultado
;













        ORG 0                   ;Comando que indica al Ensamblador
                                ;la direcci¢n de la memoria de programa
                                ;donde situar  la siguiente instrucci¢n
;













        movlw   05            ; 5 -> W (Primera instrucci¢n)   
        movwf   OPERANDO1     ; W -> OPERANDO1
        movlw   02            ; 2 -> W
        movwf   OPERANDO2     ; W -> OPERANDO2
        movfw   OPERANDO1     ; OPERANDO1 -> W
        addwf   OPERANDO2,0   ; W + OPERANDO2 -> W
        movwf   RESULTADO     ; W -> RESULTADO
        END                   ; Directiva de fin de programa


programa 2


Citar; Optimizacion del primer programa que calcula la suma de 2
;posiciones de memoria y deja el resultado en una tercera.
;Estas posiciones son 0x0c para operando1, 0x0d para operando2 y 0x0e para
;el resultado.
;La optimizaci¢n consiste en ahorrar una instrucci¢n al aprovechar el hecho
;de que la suma es una operaci¢n conmutativa.De esta manera tras cargar en W
;el operando 2 se puede realizar directamente la suma.

        LIST p= 16c84           ;Indica el modelo de PIC que se usa
                                ;Es una directiva del ensamblador.
;












--                                ;Zona para etiquetas.
        OPERANDO1 EQU 0x0c      ;Define la posici¢n del operando1
        OPERANDO2 EQU 0x0d      ;Define la posici¢n del operando2
        RESULTADO EQU 0x0e      ;Define la posici¢n del resultado
;













        ORG 0                   ;Comando que indica al Ensamblador
                                ;la direcci¢n de la memoria de programa
                                ;donde situar  la siguiente instrucci¢n
;













        movlw   05              ;5 --> W (primera instrucci¢n)
        movwf   OPERANDO1       ;W --> Operando1
        movlw   02              ;2 --> W
        movwf   OPERANDO2       ;W --> Operando2
        addwf   OPERANDO1,0     ;W + operando1 --> W
        movwf   RESULTADO       ;W --> resultado
        END                     ;directiva de fin del programa



programa 3


Citar; Este programa suma el contenido de las posiciones 0c y 0d de memoria y
; almacena el resultado en la misma posici¢n 0d.

        LIST    p= 16C84     ; Para PIC 16C84
;












--        OPERANDO1  EQU  0x0C ; Define la posici¢n del operando 1
        OPERANDO2  EQU  0x0D ; Define la posici¢n del operando 2
                             ; y del resultado
;












--        ORG     0            ; Direcci¢n de inicio del programa
;












--        movlw   02           ; 2 -> W
        movwf   OPERANDO2    ; W -> OPERANDO2
        movlw   05           ; 5 -> W
        movwf   OPERANDO1    ; W -> OPERANDO1 ( Operando1 est  en W y en 0x0C)
        addwf   OPERANDO2,1  ; OPERANDO2 + W -> Operando2
        END                  ; Directiva de fin de programa



sumando en C


Citar/* Programa que suma el contenido de dos variables en memoria y almacena */
/* el resultado en una tercera variable de resultado.                */
#include <16c84.h>
void main( void )
{
 int operando1 = 5, operando2 = 2, resultado;
 resultado = operando1 + operando2;
}



Autor y licencia de 'Mini-Prácticas de programación ensamblador y en C para microcontroladores'


Apuntes de BADBYTE-K . Extraido de: http://foro.elhacker.net/index.php/topic,43897.0.html CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.