pero si hago: Y=2(1+3)-10 me da 252
aqui os dejo el código a ver si veis algo raro:
Código
list p=16F84 ;indicamos el pic que se vaa usar include "P16F84.INC";indicamos la librería del PIC que tiene que cargar REGA equ 0x11 ;Damos un nombre a esta posición de memoria REGISTRO A REGB equ 0x12 ;Damos un nombre a esta posición de memoria REGISTRO B DE USUARIO REGC equ 0x13 ;Damos un nombre a esta posición de memoria REGISTRO C DE USUARIO REGY equ 0x14 ;Damos un nombre a esta posición de memoria REGISTRO DE USUARIO DE RESULTADO REGAUX equ 0x15 ;Este registro lo vamos a usar para almacenar temporalmente resultados de pasos de operaciones intermedias org 0x00 ;vector de reset goto inicio org 0x05 ;el programa empieza en la posición 5 de la memoria ;********************* ;INICIO DE PROGRAMA ;********************* inicio MOVLW 0X01 ; Como no se puede cargar directamente un valor a una posición de memoria cualquiera, es necesario cargarlo previamente primero en el registro REGW MOVWF REGA ;Ahora si se puede mover el valor de REGW a una posición de memoria deseada MOVLW 0X02 ;Con los siguientes pasa lo mismo MOVWF REGB MOVLW 0X0A MOVWF REGC ;______________________________ BUCLE ; es necesario poner un bucle para que no finalice el programa el programa ;Suma de A+B MOVF REGA,0 ;CARGA EL VALOR REGA EN W ADDWF REGB,0 ;SUMA EL VALOR DE W + REGB Y COMO ES 0 SE GUARDA EN W MOVWF REGAUX ;EL VALOR DE LA SUMA ESTÁ EN EL REGISTRO AUXILIAR como ahora vamos a necesitar usar el registro REGW lo movemos a una posicón de memoria temporal ;Multiplicación 2(A+B) ->(A+B)+(A+B) ADDWF REGAUX,1 ;SUMA EL VALOR DE W + REGAUX Y COMO ES 0 SE GUARDA EN REGAUX. Como el valor de A+B ya lo teníamos en REGW y tiene el mismo valor que el REGAUX si se suman ambos será como una multiplicación. MOVF REGC,0 ;CARGA EL VALOR DE REGC EN W PARA PODER HACER LA RESTA Y=REGAUX-C ya que la instrución hace la resta en dirección contraria: F-W ;resta 2(A+B)-C SUBWF REGAUX,0 ;REALIZA LA RESTA Y LO GUARDA EN W MOVWF REGY ;CARGAMOS EL RESULTADO EN LA POSICIÓN REGY GOTO BUCLE ; Devuelve a donde esté la palabra bucle END ; fin de programa
Uso MPLAB para programarlo y simularlo.
Gracias
Fox_Neo[/size]


y en el segundo enlace ya lo vi también lo único que encontré era que había que usar cartuchos originales de HP pero los que tengo yo no son originales ,se pueden rellenar. Gracias