Sumando en ensamblador con microcontroladores
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
; 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
;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
; 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;
}
/* el resultado en una tercera variable de resultado. */
#include <16c84.h>
void main( void )
{
int operando1 = 5, operando2 = 2, resultado;
resultado = operando1 + operando2;
}
espero les sirvan de mucho
saludox
[/color]