list P=16F876
include <p16F876.inc>
elemento equ 0x20
subelemento equ 0x21
tmpL equ 0x22
tmpH equ 0x23
tmpsub equ 0x24
dirL equ 0x25
dirH equ 0x26
movlw 0x00 ;subelemento del elemento a leer(guardado en 0x000)
movwf subelemento ;(guardado en 0x001)
movlw 0x01 ;elemento a leer(guardado en 0x002)
pagesel leer_elemento ;(guardado en 0x003 y 0x004)
call leer_elemento ;(guardado en 0x005)
nop ;(guardado en 0x006)
leer_elemento
movwf elemento ;(guardado en 0x007)
[color=red]movlw 0x00[/color] ;movlw LOW DirBaja ;(guardado en 0x008)
movwf tmpL ;(guardado en 0x009)
[color=red]movlw 0x13[/color] ;movlw HIGH DirBaja ;(guardado en 0x00A)
movwf tmpH ;(guardado en 0x00B)
movf elemento,w ;(guardado en 0x00C)
movwf tmpsub ;(guardado en 0x00D)
movf elemento,W ;(guardado en 0x00E)
pagesel SaltaYLee ;(guardado en 0x00F Y 0X010)
call SaltaYLee ;(guardado en 0x011)
movwf dirL ;(guardado en 0x012)
[color=red]movlw 0x02[/color] ;movlw LOW DirAlta ;(guardado en 0x013)
movwf tmpL ;(guardado en 0x014)
[color=red]movlw 0x13[/color] ;movlw HIGH DirAlta ;(guardado en 0x015)
movwf tmpH ;(guardado en 0x016)
movf elemento,w ;(guardado en 0x017)
movwf tmpsub ;(guardado en 0x018)
movf elemento,W ;(guardado en 0x019)
pagesel SaltaYLee ;(guardado en 0x01A Y 0X01B)
call SaltaYLee ;(guardado en 0x01C)
movwf dirH ;(guardado en 0x01D)
movf dirL,W ;(guardado en 0x01E)
movwf tmpL ;(guardado en 0x01F)
movf dirH,W ;(guardado en 0x020)
movwf tmpH ;(guardado en 0x021)
movf subelemento,w ;(guardado en 0x022)
movwf tmpsub ;(guardado en 0x023)
pagesel SaltaYLee ;(guardado en 0x024)
goto SaltaYLee ;(guardado en 0x025)
SaltaYLee
movf tmpH,W ;(guardado en 0x026)
movwf PCLATH ;(guardado en 0x027)
movf tmpL,W ;(guardado en 0x028)
addwf tmpsub,W ;(guardado en 0x029)
btfsc STATUS,C ;(guardado en 0x02A)
incf PCLATH,F ;(guardado en 0x02B)
movwf PCL ;(guardado en 0x02C)
org 0X1300 ;agrego esta linea para hacerlo un poco más real, porque las tablas seguramente irán al final de todo el programa.
DirBaja
[color=red]retlw 0xFE[/color] ;retlw LOW tabla0 ;(guardado en 0x1300)
[color=redretlw 0x03[/color] ;retlw LOW tabla1 ;(guardado en 0x1301)
DirAlta
[color=red]retlw 0x19[/color] ;retlw HIGH tabla0 ;(guardado en 0x1302)
[color=red]movlw 0x1A[/color] ;retlw HIGH tabla1 ;(guardado en 0x1303)
org 0X19FE ;lo mismo, más real. Puede que el codigo este desordenado.
;'H' 'O' 'L' 'A' 0X00
tabla0: dt "HOLA", 0 ;(guardado en 0x19FE,0x19FF,0x1A00,0x1A01,0x1A02)
;'B' 'R' 'U' 'N' 'O' 'F' ' ' 'E' 'S'
tabla1: dt "BRUNOF ESTUVO AQUI", 0 ;(guardado en 0x1A03,0x1A04,0x1A05,0x1A06,0x1A07,0x1A08,0x1A09,0x1A0A,0x1A0B
;'T' 'U' 'V' 'O' ' ' 'A' 'Q' 'U' 'I' 0X00
;0x1A0C,0x1A0D,0x1A0E,0x1A0F,0x1A10,0x1A11,0x1A12,0x1A13,0x1A14,0x1A15
END