Saludos!! Siempre es util tener la informacion a la mano cuando se esta trabajado con ensamblador, principalemte las instrucciones y que funcion realiza o que registros afecta el uso de estas. Recordar que estas instrucciones pueden no estar disponibles en todos los microcontroladores, asi que para mas detalle recomiendo revisar la hoja de datos.
Como dice el titulo, el dia de hoy tenemos la instruccion SUBWF con el cual podemos hacer restas.
Esta instruccion resta el contenido del registro "W" del cotenido de "f", dependiendo del valor en "d" sera el lugar en el que se almacene el resultado. Cuando se usa esta intruccion se ve afectado el estatus de los siguientes bits C, DCy Z del registro STATUS.
Como ejemplo obsevemos el siguiente fragmento de codigo:
MOVLW 10
MOVWF BANKMASK(CounterDisplay)
LOOP:
DECF CounterDisplay,1 ;Decrementamos CounterDisplay
MOVLW 0xFF ;Precargamos W = 0xFF para cuando se desborde CounterDisplay
SUBWF CounterDisplay,0
BTFSS STATUS,2 ;Revisamos STATUSbits.Z
GOTO UPDATEDisplay ;Actualizo si 0=> CounterDisplay <= 9
GOTO RESTARTCounter ;Si CounterDisplay < 0 (cuando se desborde y sea 0xFF)
Notaremos en el codigo que W = 0xFF y que CounterDisplay = 0x09 (por que ya se decremento), entonces la resta de CounterDisplay - W != 0 (distinto de cero) por lo tanto Z = 0, pero cuando CounterDisplay = 0 y se siga decrementando CounterDisplay = 0xFF, entonces la resta de CounterDisplay - W = 0, entonces Z = 1.
Bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, asà también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
Referencias:
- Microchip, "PIC16F882/883/884/886/887 Data Sheet", http://ww1.microchip.com/downloads/en/devicedoc/41291d.pdf
0 Comentarios