Duda este asm

Un usuario de otro foro a preguntado esto, si pueden ayudarlo...






Hola compañeros,
hice uno de los ejercicios que recomendo el amigo meta y todo funciono bien a excepcion de la intruduccion de unos datos:
El programa seria este (corrijanme si los comentarios no son los correctos) :

;
; Ejercicio LIBRE 1
;
;Ejercicio de sumas y restas
; tres valores almacenados en memoria 10h, 11h y 12h A,B y C respectivamente.
; Se desea realizar (A+B)-C almacenar y mostrar el resultado
;en la direccion 13h


List p=16F874A ;Tipo de procesador
include "P16F874A.INC" ;Definiciones de registros internos

; Definicion de variables temporales
dato_A equ 0x10
dato_B equ 0x11
dato_C equ 0x12
resultado equ 0x13

;Ajusta los valores de la palabra de configuración durante el ensamblaje:
;Protección de código y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT

__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC

org 0x00
goto Inicio ;Vector de reset
org 0x05

Inicio movf dato_A,W ;Carga en W el valor de dato_A
movwf resultado ;mueve el valor de W ---> resultado para verlo
addwf dato_B,W ;Suma el valor de B a W
movwf resultado ;mueve el valor de W ---> resultado para verlo
movf dato_C,W ;carga en W el valor de dato_c
subwf resultado,W ;resta de resultado el valor de W
movwf resultado ;mueve el valor de W ---> resultado para verlo
goto Inicio
end
********************************************
Se introducen los datos siguientes :

dato_A.....dato_B.......dato_C..........resultado Obtenido..... decimal
..01h.........03h.............02h................02h.........................(1+3)-2=2
..01h.........09h.............0Ah................00h.........................(1+9)-10=0
..01h.........FFh.............00h................00h.........................(1+255)-0=0
(creo que porque la suma da 256 , rebosa la memoria y se pone a CERO)

..01h.........03h.............05h................?.........................(1+3)-5=-2
Es en este ultimo que se automodifica el valor de dato_B cada vez que regresa a inicio, alguien podria decirme porque?
 
Atrás
Arriba