Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ensamblador
Ensamblador
Archivo
Fuente
Ensamblador
Código
Máquina
MPASM Ensamblador
Archivos Objeto
Programa1.o Programa2.o
Relocalizables
Archivos
16F877.lkr localizador de
Dir.
MPLINK Enlazador
Archivo final
Programa.HEX
.HEX
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
Sintáxis
[<Etiq>] CODE [<Dirección ROM>]
Ejemplo
RESET CODE H’0000’ ;La instrucción GOTO se
GOTO START ;almacenara en la Dir. 0000h
Sintáxis
[<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
Sintáxis
[<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
Sintáxis
[<Etiq>] ORG <expr>
Ejemplo
RESET ORG 0x0000
movlw 01 ;Esta instrucción comienza en la dir
addlw 01 ;0000h de la memora de Prog, y las
;demás se incrementa la dir
Sintáxis
END
Sintáxis
[<Etiq>] EQU <expr>
Ejemplo
STATUS EQU 0x03 ;le asigna el valor 03h a la etiqueta
;STATUS
Sintáxis
BANKSEL <Etiq>
Ejemplo
NUMERO1 EQU 0x0A ;le asigna el valor 0Ah a la etiqueta
;NUMERO1
Sintaxis
EXTERN <Etiq> [, <Etiq>, ...]
Ejemplo
EXTERN SubRutina
....
CALL SubRutina
Sintáxis
GLOBAL <Etiq> [, <Etiq>, ...]
Ejemplo
SubRutina
GLOBAL SubRutina
addwl 0xFF
return
Sintaxis
<Etiq> UDATA [<DIR. RAM>]
Ejemplo
UDATA
Dato1 RES 1
Dato2 RES 2
Sintaxis
[<Etiq>] RES <res_mem>
Descripción:
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.)
Sintaxis
RADIX <Base>
Ejemplo
RADIX dec
Sintaxis
#INCLUDE <<Archivo_Incluir>>
#INCLUDE <“Archivo_Incluir”>
Ejemplo
#INCLUDE “P16F877.inc”
#INCLUDE “c:\Programas\ASM\reg.h”
Sintaxis
LIST [<Opción_List>, …, <Opción_List>]
<Opción_List>
p=<type> Tipo de C.
r=<base> Base del Número a utilizar
Ejemplo
LIST p=16F877, r=HEX
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 números 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
Archivos Objeto
Prog1.o Prog2.o
Relocalizables
Archivos
16F877.lkr localizador de
Dir.
MPLINK Enlazador
Sintaxis:
CODEPAGE NAME=memName START=addr END=addr [PROTECTED] [FILL=fillvalue]
Página 0
2K
07FFH
0800H
Página 1
2K
0FFFH
1000H
Página 2
2K
17FFH
1800H
Página 3
2K
1FFFH
Sintaxis:
SECTION NAME=’NomSecc’{ ROM=’NomMEM’ | RAM=’NomMEM’ }
MPASM Ensamblador
Archivo de
Suma.HEX
Salida .HEX
Ejemplo
BIN (21:20)h
BCD (1A2:1A1:1A0)h
Archivos Objeto
Top_BB.o Bin2BCD.o
Relocalizables
Archivos
16F877.lkr localizador de
Dir.
MPLINK Enlazador
Archivo final
Bin16BCD.HEX
.HEX