Sunteți pe pagina 1din 40

Ensamblador

Archivo
Fuente

Ensamblador

Cdigo
Mquina

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ensamblador de la Microchip MPLAB

Programa.asm Archivos Fuente

MPASM Ensamblador

Programa.HEX Archivo final .HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Realizar un Proyecto con MPLAB
Programa1.asm Programa2.asm Archivos Fuente

MPASM MPASM Ensamblador

Archivos Objeto
Programa1.o Programa2.o
Relocalizables

Archivos
16F877.lkr localizador de
Dir.

MPLINK Enlazador

Archivo final
Programa.HEX
.HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Instrucciones en el Ensamblador
ETIQUETA NEMNICO U OPERANDO COMENTARIO
OPERACIN
PRUEBA MOVLW 0xA0 ;Se carga al registro W el
;dato A0hh

COMENTARIOS : describe el significado de


la instruccin para dar una idea
de lo que hace el programa. Es
opcional

OPERANDO(S): proporciona la informacin requerida por la


operacin.

NEMNICO u OPERACIN : especfica la operacin a


realizar, ya sea una instruccin del
microcontrolador o una directiva del
ensamblador.

ETIQUETA : Debe empezar en la columna 1, puede estar


seguida de dos puntos (:), un espacio,
una tabulacin o fin de lnea.

UNEXPO Pto. Ordaz. MICROPROCESADORES


Instrucciones en el Ensamblador
Representacin Numrica

Tipo Sintaxis Ejemplo


Decimal D<dgitos> D250
.<dgitos> .250
Hexadecimal H<dg_Hex> H8B
0x<dg_Hex> 0x8B
Octal O<dg_Oct> O777
Binario B<dg_Bin> B10011111
ASCII <Carcter> M
A<Carcter> AM
UNEXPO Pto. Ordaz. MICROPROCESADORES
Directivas del Ensamblador

CBLOCK Define un bloque de constantes.


Sintxis.
CBLOCK [<expr>]
<etiq>[:<incremento>] [,<etiq>[:<incremento>]]
ENDC

Ejemplo
CBLOCK 0x20
Nombre1, Nombre2 ;La primera etiqueta (Nombre1)
Nombre3, Nomnre4 ;se le asignara la Dir. 20h y de all
;Dir. Consecutivas a las otras etiq.
ENDC ;El bloque de constante debe
;finalizarse con ENDC

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

CODE Inicia la sesin de un programa. Se utiliza para programas


relocalizables

Sintxis
[<Etiq>] CODE [<Direccin ROM>]

Ejemplo
RESET CODE H0000 ;La instruccin GOTO se
GOTO START ;almacenara en la Dir. 0000h

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

DB Declara dato de un Byte

Sintxis
[<Etiq>] DB <expr> [, <expr >, , <expr >]

Ejemplo
DB p, Prueba, 0x0F, 00 ;Se almacena una tabla en la
;memoria de Programa en formato
;de 8 bits en el orden que aparece
;en la tabla

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

DE Declara dato de un Byte en la memoria EEPROM

Sintxis
[<Etiq>] DE <expr> [, <expr >, , <expr >]

Ejemplo
DE 00,01,02,03,04,05 ;Se almacena una tabla en la
;memoria de datos EEPROM en
;formato de 8 bits en el orden que
;aparece en la tabla

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

ORG Define el origen donde debe comenzar el Programa

Sintxis
[<Etiq>] ORG <expr>

Ejemplo
RESET ORG 0x0000
movlw 01 ;Esta instruccin comienza en la dir
addlw 01 ;0000h de la memora de Prog, y las
;dems se incrementa la dir

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

END Le indica al ensamblador que es el fin del programa.

Sintxis
END

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

EQU Define una constante en el ensamblador

Sintxis
[<Etiq>] EQU <expr>

Ejemplo
STATUS EQU 0x03 ;le asigna el valor 03h a la etiqueta
;STATUS

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

BANKSEL Se coloca en el banco de la memoria RAM interna

Sintxis
BANKSEL <Etiq>

Descripcin: Se utiliza para generar las instrucciones que


permiten colocarse en el banco de la RAM interna de la
direccin <Etiq>

Ejemplo
NUMERO1 EQU 0x0A ;le asigna el valor 0Ah a la etiqueta
;NUMERO1

BANKSEL NUMERO1 ;Genera las instrucciones para


;colocarse en el Banco 1
; BSF STATUS,RP0
; BCF STATUS,RP1

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

EXTERN Declara una etiqueta definida como externa.

Sintaxis
EXTERN <Etiq> [, <Etiq>, ...]

Descripcin: Se utiliza para generar archivos relocalizables, las


etiquetas definidas como externas pueden ser llamadas desde
el programa en curso as se encuentre en otro archivo

Ejemplo

EXTERN SubRutina
....
CALL SubRutina

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

GLOBAL Exporta a otros archivos etiquetas

Sintxis
GLOBAL <Etiq> [, <Etiq>, ...]

Descripcin: Si se desea que una etiqueta sea compartida por


otros archivos debe definirse como global, seguido de la
etiqueta. En el otro archivo debe definirse como EXTRN

Ejemplo

SubRutina
GLOBAL SubRutina
addwl 0xFF
return

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

UDATA Inicia un conjunto de datos sin condiciones iniciales

Sintaxis
<Etiq> UDATA [<DIR. RAM>]

Descripcin: Esta directiva es utilizada para programas


relocalizables, generalmente es utilizada para reservar una
serie de datos que estar en el archivo de registros y podrn
ser utilizados por otros archivos.

Ejemplo

UDATA
Dato1 RES 1
Dato2 RES 2

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

RES Reserva espacio de memoria

Sintaxis
[<Etiq>] RES <res_mem>

Descripcin:
Esta directiva reserva la cantidad de memoria especificadas por
<res_mem>, los datos en la memoria se pueden acceder
apuntado por <Etiq>.

Ejemplo

UDATA
Dato1 RES 1 ;Reserva un byte en la MEM RAM (sin cond. Ini.)
Dato2 RES 2 ;Reserva dos byte en la MEM RAM (sin cond. Ini.)

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

RADIX Le indica al ensamblador el sistema de numeracin con la que


se colocan los nmeros

Sintaxis
RADIX <Base>

Descripcin: Con esta directiva se le indica al ensamblador la


base con la cual se encuentran los nmeros colocados en el
programa. Los valores validos son: hex, dec, oct

Ejemplo

RADIX dec

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

#INCLUDE Se inserta un archivo en el programa fuente actual

Sintaxis
#INCLUDE <<Archivo_Incluir>>
#INCLUDE <Archivo_Incluir>

Descripcin: Tiene el mismo efecto que incluir el archivo de


texto <<Archivo_Incluir>> en el programa fuente actual

Ejemplo
#INCLUDE P16F877.inc

#INCLUDE c:\Programas\ASM\reg.h

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas del Ensamblador

LIST Mediante esta directiva se puede configurar la apariencia y


control del ensamblador

Sintaxis
LIST [<Opcin_List>, , <Opcin_List>]

<Opcin_List>
p=<type> Tipo de C.
r=<base> Base del Nmero a utilizar

Ejemplo
LIST p=16F877, r=HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplo 1
LIST P=16F877
;Suma de dos nmeros cada uno de 16 Bits
;Suma: N1(16) + N2(16) -> N2(16)
; N1 <- N1_H:N1_L
; N2 <- N2_H:N2_L
;
STATUS EQU 0x03
C EQU 0x00
W EQU 0x00
F EQU 0x01
N1_L EQU 0x20
N1_H EQU 0x21
N2_L EQU 0x22
N2_H EQU 0x23
;
ORG 0x0
goto INICIO

ORG 0x5
INICIO BANKSEL N1_L
movf N1_L,W
addwf N2_L,F
btfsc STATUS,C
incf N2_H,F
movf N1_H,W
addwf N2_H,F
goto INICIO
END
UNEXPO Pto. Ordaz. MICROPROCESADORES
Ejemplo 2
LIST P=16F877
RADIX HEX
#INCLUDE "P16F877.inc"
;
;Suma de dos nmeros cada uno de 16 Bits
;Suma: N1(16) + N2(16) -> N2(16)
; N1 <- N1_H:N1_L
; N2 <- N2_H:N2_L
;
N1_L EQU 20
N1_H EQU 21
N2_L EQU 22
N2_H EQU 23
;
ORG 0x0
goto INICIO

ORG 0x5
INICIO movf N1_L,W
addwf N2_L,F
btfsc STATUS,C
incf N2_H,F
movf N1_H,W
addwf N2_H,F
goto INICIO
END

UNEXPO Pto. Ordaz. MICROPROCESADORES


Enlazador
Prog1.asm Prog2.asm Archivos Fuente

MPASM MPASM Ensamblador

Archivos Objeto
Prog1.o Prog2.o
Relocalizables

Archivos
16F877.lkr localizador de
Dir.

MPLINK Enlazador

Programa.HEX Archivo final


Programa.OUT Programa.COD Programa.LST
.HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Archivos de Entrada del Enlazador
Archivo Objeto (.o)

Son archivos cuyo cdigo son relocalizables, o sea que las


direcciones de los datos a usarse y la localizacin del programa
no estn definidos en este archivo, y se genera a partir del
ensamblador

Archivo para Localizacin de Cdigo y Datos (.lkr)

En este archivo se debe indicar las direcciones en donde se


debe localizar el programa y los datos que no se especificaron
en los archivos (.o)

UNEXPO Pto. Ordaz. MICROPROCESADORES


Archivos de Salida del Enlazador
Archivo COFF (.out, .cof)

Este es un archivo generado por MPLINK para generar los


archivos .HEX y el LST

Archivo COD (.cod):

archivo usado durante la depuracin por MPLAB, puede ser


usado durante la simulacin

UNEXPO Pto. Ordaz. MICROPROCESADORES


Archivos de Salida del Enlazador
Archivo HEX (.hex):

Archivo guardado en formato Intel HEX, este archivo es


utilizado para grabar el programa en el microcontrolador o para
la depuracin en el simulador

Archivo de Referencias Cruzadas LST (.LST):

Este archivo muestra el programa en mnemnico y en cdigo


maquina

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr

Para definir Regiones de memoria ROM

CODEPAG Esta directiva es utilizada para definir la memoria de programa


a usarse

Sintaxis:
CODEPAGE NAME=memName START=addr END=addr [PROTECTED] [FILL=fillvalue]

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr
CODEPAGE NAME=STARTUP START=0x0 END=0x3 PROTECTED
CODEPAGE NAME=Vector_INT START=0x4 END=0x4 PROTECTED
CODEPAGE NAME=page0 START=0x5 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1FFF
0000H RESET

0004H Vector Interrupcin


0005H

Pgina 0
2K

07FFH
0800H

Pgina 1
2K

0FFFH
1000H

Pgina 2
2K

17FFH
1800H

Pgina 3
2K

1FFFH

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr

Para definir Regiones de memoria RAM

Registros mapeados en Bancos

DATABANK NAME=memName START=addr END=addr [PROTECTED]

Registro que se encuentran en los cuatro bancos

SHAREBANK NAME=memName START=addr END=addr [PROTECTED]

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr
Dir. Dir. Dir. Dir.
INDF 00h INDF 80h INDF 100h INDF 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h 105h 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h 107h 187h
PORTD 08h TRISD 88h 108h 188h
PORTE 09h TRISE 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh
TMR1L 0Eh PCON 8Eh EEDATH 10Eh Reservado 18Eh
TMR1H 0Fh 8Fh EEADRH 10Fh Reservado 18Fh
T1CON 10h 90h 110h 190h
TMR2 11h SSPCON2 91h 111h 191h
T2CON 12h PR2 92h 112h 192h
SSPBUF 13h SSPADD 93h 113h 193h
SSPCON 14h SSPSTAT 94h 114h 194h
CCPR1L 15h 95h Registros 115h Registros 195h
CCPR1H 16h 96h Propocito 116h Propocito 196h
CCP1CON 17h 97h General 117h General 197h
RCSTA 18h TXSTA 98h (GPR) 118h (GPR) 198h
TXREG 19h SPBRG 99h 16 Bytes 119h 16 Bytes 199h
RCREG 1Ah 9Ah 11Ah 19Ah
CCPR2L 1Bh 9Bh 11Bh 19Bh
CCPR2H 1Ch 9Ch 11Ch 19Ch
CCP2CON 1Dh 9Dh 11Dh 19Dh
ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh
ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh
20h A0h 120h 1A0h
Registros Registros Registros
Registros
Propocito Propocito Propocito
Propocito
General General General
General
(GPR) (GPR) (GPR)
(GPR)
80 Bytes 80 Bytes 80 Bytes
EFh 16Fh 1EFh
96 Bytes F0h 170h 1F0h
Acceso Acceso Acceso
70h-7Fh 70h-7Fh 70h-7Fh
7Fh FFh 17Fh 1FFh
Banco 0 Banco 1 Banco 2 Banco 3

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr

DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED


DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED

DATABANK NAME=gpr0 START=0x20 END=0x6F


DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF

SHAREBANK NAME=NoBank START=0x70 END=0x7F


SHAREBANK NAME=NoBank START=0xF0 END=0xFF
SHAREBANK NAME=NoBank START=0x170 END=0x17F
SHAREBANK NAME=NoBank START=0x1F0 END=0x1FF

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr

Para definir la localizacin de memoria ROM y RAM

SECTION La directiva SECTION define la seccin de bloque de programa


(ROM), o de datos (RAM) que contendr la seccin

Sintaxis:
SECTION NAME=NomSecc{ ROM=NomMEM | RAM=NomMEM }

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr
D_Main UDATA
Num1_16H RES 1 Ejemplo
Num1_16L RES 1
Num2_16H RES 1
Num2_16L RES 1 CODEPAGE NAME=STARTUP START=0x0 END=0x3 PROTECTED
RES_16H RES 1 CODEPAGE NAME=Vector_INT START=0x4 END=0x4 PROTECTED
RES_16L RES 1 CODEPAGE NAME=page0 START=0x5 END=0x7FF

RESET CODE DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED


goto INICIO DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
ProgMain CODE DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
INICIO DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
BANKSEL Num1_16H
movf Num1_16H,W DATABANK NAME=gpr0 START=0x20 END=0x6F
movwf N1_H DATABANK NAME=gpr1 START=0xA0 END=0xEF
movf Num1_16L,W DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF
movwf N1_L
movf Num2_16H,W SHAREBANK NAME=NoBank START=0x70 END=0x7F
movwf N2_H SHAREBANK NAME=NoBank START=0xF0 END=0xFF
movf Num2_16L,W SHAREBANK NAME=NoBank START=0x170 END=0x17F
movwf N2_L SHAREBANK NAME=NoBank START=0x1F0 END=0x1FF
call Suma16x16
movf N2_H,W SECTION NAME=RESET ROM=STARTUP // Vector de Reset
movwf RES_16H SECTION NAME=ProgMain ROM=page0 // page0
movf N2_L,W
movwf RES_16L SECTION NAME=D_Main RAM=gpr2 // Se colocan los datos
goto INICIO // Main.asm
// gpr2 **110h-16Fh**

UNEXPO Pto. Ordaz. MICROPROCESADORES


Directivas para el archivo lkr
LIST P=16F877
#INCLUDE "P16F877.inc"
;
;Suma de dos nmeros cada uno de 16 Bits
;
;
Suma: N1(16) + N2(16) -> N2(16)
N1 <- N1_H:N1_L
16F877.lkr
; N2 <- N2_H:N2_L CODEPAGE NAME=STARTUP START=0x0 END=0x3 PROTECTED
; CODEPAGE NAME=Vector_INT START=0x4 END=0x4 PROTECTED
D_Main UDATA CODEPAGE NAME=page0 START=0x5 END=0x7FF
N1_L RES 1
N1_H RES 1 DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
N2_L RES 1 DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
N2_H RES 1 DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
; DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
RESET CODE
goto INICIO DATABANK NAME=gpr0 START=0x20 END=0x6F
ProgMain CODE DATABANK NAME=gpr1 START=0xA0 END=0xEF
INICIO movf N1_L,W DATABANK NAME=gpr2 START=0x110 END=0x16F
addwf N2_L,F DATABANK NAME=gpr3 START=0x190 END=0x1EF
btfsc STATUS,C
incf N2_H,F SHAREBANK NAME=NoBank START=0x70 END=0x7F
movf N1_H,W SHAREBANK NAME=NoBank START=0xF0 END=0xFF
addwf N2_H,F SHAREBANK NAME=NoBank START=0x170 END=0x17F
goto INICIO SHAREBANK NAME=NoBank START=0x1F0 END=0x1FF
END
SECTION NAME=RESET ROM=STARTUP // Vector de Reset
SECTION NAME=ProgMain ROM=page0 // page0

SECTION NAME=D_Main RAM=gpr2 // Se colocan los datos


// Main.asm
// gpr2 **110h-16Fh**

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplos
Ejemplo 1

Se desea sumar dos nmeros, cada uno de 8 bits, uno de los


nmeros se encuentra en la direccin A0h y otro en la 120h.

Suma.ASM Archivo Fuente

MPASM Ensamblador

Archivo de
Suma.HEX
Salida .HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplos

Ejemplo

Se debe convertir un numero binario de 16 bits en su respectivo


cdigo BCD:

BIN (21:20)h

BCD (1A2:1A1:1A0)h

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplo

Top_BB.asm Bin2BCD.asm Archivos Fuente

MPASM MPASM Ensamblador

Archivos Objeto
Top_BB.o Bin2BCD.o
Relocalizables

Archivos
16F877.lkr localizador de
Dir.

MPLINK Enlazador

Archivo final
Bin16BCD.HEX
.HEX

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplo
Top_BB.asm
LIST p='16f877'
include "p16f877.inc" Etiquetas definidas
EXTERN H_byte, L_byte, R0, R1, R2, B2_BCD En otro archivo
;
Datos_Bi UDATA
(Bin2BCD.asm)
BIN_L RES 1
BIN_H RES 1
;
Datos_BCD UDATA 16F877.lkr
BCD_L RES 1
BCD_M RES 1 CODEPAGE NAME=vec_res START=0x0 END=0x3 PROTECTED
BCD_H RES 1 CODEPAGE NAME=Vector_INT START=0x4 END=0x4 PROTECTED
; CODEPAGE NAME=page0 START=0x5 END=0x7FF
STARTUP CODE
goto INICIO DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
; DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
Prog1 CODE DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
; DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
INICIO
movf BIN_L,W DATABANK NAME=gpr0 START=0x20 END=0x6F
movwf L_byte DATABANK NAME=gpr1 START=0xA0 END=0xEF
movf BIN_H,W DATABANK NAME=gpr2 START=0x110 END=0x16F
movwf H_byte DATABANK NAME=gpr3 START=0x190 END=0x1EF
;
call B2_BCD SHAREBANK NAME=NoBank START=0x70 END=0x7F
; SHAREBANK NAME=NoBank START=0xF0 END=0xFF
BANKSEL BCD_L SHAREBANK NAME=NoBank START=0x170 END=0x17F
movf R2,W SHAREBANK NAME=NoBank START=0x1F0 END=0x1FF
movwf BCD_L
movf R1,W SECTION NAME=STARTUP ROM=vec_res // Vector de Reset
movwf BCD_M SECTION NAME=PROG1 ROM=page0 // page0
movf R0,W
movwf BCD_H SECTION NAME=Datos_Bi RAM=gpr0 // N1 y N2 -> GPR0
; SECTION NAME=Datos_BCD RAM=gpr3 // Num_1 y Num_2 -> NoBank
goto INICIO
END

UNEXPO Pto. Ordaz. MICROPROCESADORES


Ejemplo
ADD_BCD8.asm Etiquetas definidas
;Se Definen los Datos
Para ser utilizadas
DATOS_BB UDATA Por otro archivo
L_byte RES 1
H_byte RES 1
;
;Se definen las etiquetas Globales
GLOBAL L_byte, H_byte 16F877.lkr
;
PROG1 CODE ;Codigo Pagina 0 CODEPAGE NAME=vec_res START=0x0 END=0x3 PROTECTED
B2BCD CODEPAGE NAME=Vector_INT START=0x4 END=0x4 PROTECTED
GLOBAL B2BCD CODEPAGE NAME=page0 START=0x5 END=0x7FF
.
. ;Cdigo de la DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
. ;Sub-Rutina DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
. DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
. DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
RETURN
; DATABANK NAME=gpr0 START=0x20 END=0x6F
END DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF

SHAREBANK NAME=NoBank START=0x70 END=0x7F


SHAREBANK NAME=NoBank START=0xF0 END=0xFF
SHAREBANK NAME=NoBank START=0x170 END=0x17F
SHAREBANK NAME=NoBank START=0x1F0 END=0x1FF

SECTION NAME=STARTUP ROM=vec_res // Vector de Reset


SECTION NAME=PROG1 ROM=page0 // page0

SECTION NAME=DATOS RAM=gpr0 // N1 y N2 -> GPR0


SECTION NAME=DATOS_BCD RAM=NoBank // Num_1 y Num_2 -> NoBank

UNEXPO Pto. Ordaz. MICROPROCESADORES


FIN