Lenguaje ensamblador

Anuncio
Tema 3: Lenguaje ensamblador
La primera abstracción de la máquina
para el programador
Índice
• Introducción.
• Generación código máquina: ensamblador,
montador y cargador.
• Instrucciones y directivas.
• Macros y subrutinas.
• Interfaz binario de aplicación (ABI).
• Convenios de llamada a procedimientos.
¿Qué es?
• Lenguaje: notación formal para describir
algoritmos que serán ejecutados por un
compilador.
• Lenguaje ensamblador: representación
simbólica del lenguaje máquina permitiendo
que sea más legible y fácil de utilizar.
Mnemónicos para instrucciones, símbolos en lugar de bits,
etiquetas en lugar de direcciones, macros en lugar de repetir.
Traductores
inicio:
JmI:
fin:
movf
subwf
btfss
goto
movf
addwf
goto
movf
subwf
movwf
sleep
Lenguaje
ensamblador
I,W
J,W
STATUS,C
JmI
G,W
H,W ;suma
fin ;hemos terminado
G,W
H,W
RESULT
Lenguaje
máquina
080C
020D
1D83
2807
080F
070E
2809
080F
070E
0090
0063
* Las instrucciones empleadas son del lenguaje ensamblador de los microcontroladores PIC de Microchip.
Elementos del
lenguaje ensamblador
Símbolos
inicio:
Mnemónicos
Etiquetas
JmI:
fin:
movf
subwf
btfss
goto
movf
addwf
goto
movf
subwf
movwf
sleep
I,W
J,W
STATUS,C
JmI
G,W
H,W ;suma
fin ;hemos terminado
G,W
H,W
Comentarios
RESULT
Ensamblador
Listado del
programa
Fichero
objeto
Segunda
pasada
Primera
pasada
Tabla de
símbolos
Montador y Cargador
Fuente 1
Fuente 2
Fuente 3
Ensamblador
Objeto 1
Objeto 2
Montador
Objeto 3
Ejecutable
Cargador
Formato de una sentencia
en ensamblador
• ETIQUETA: Nombre que se le asigna a una posición de la
memoria de programa. Empieza en la 1ª columna y suele ir
seguida de ':‘.
• MNEMÓNICO: Representación simbólica del campo de
operación (COP).
• OPERANDOS: Representados por símbolos o constantes,
separados por comas.
• COMENTARIOS: Comienzan con ';‘.
inicio_bucle:
addwf a,W ;Comienzo del bucle
Tipos de sentencias
• Instrucciones simbólicas del lenguaje máquina.
o Corresponden con instrucciones del repertorio de
instrucciones (ISA).
o Son ejecutadas por el computador.
• Directivas o pseudoinstrucciones.
o No tienen traducción en lenguaje máquina.
o Controlan la operación del programa ensamblador
y la generación del programa en lenguaje máquina.
• Comentarios.
o Forman parte de los archivo fuente tipo texto.
o No tienen traducción en lenguaje máquina.
o Facilitan la comprensión del código.
Tipos de directivas
• De control: Compilación condicional.
• De datos: Asignación de memoria, símbolos.
• De formato de informes.
• De definición de macros.
• Para la creación de archivos objeto.
Directivas de control
• Permiten compilar código de forma condicional.
• Permiten incluir otros archivos.
#include “p16f84.inc”
ifndef DEBUG
...
endif
if NIVEL_LOG > 5
...
endif
Directivas de datos
• Permiten controlar la ubicación de datos e instrucciones
en la memoria.
• Permiten hacer referencia a operandos de forma
simbólica.
STATUS
equ 0x03
regs
equ 0x0c
cblock regs
I,; I vale 0x0C
J ; J vale 0x0D
endc
org 0x10
btfsc STATUS,2
main:movf I,0
addwf J,1
goto main
Determina la dirección de
Macros
• Permiten asignar nombre a una secuencia de instrucciones:
o Cuando se referencia, se produce una sustitución (expansión)
de la macro.
o No existe un salto a la macro, sino copias de la secuencia de
instrucciones.
o Aumenta la longitud del programa.
o No requieren llamada ni retorno.
o ¡Cuidado con los saltos a/desde una macro!
Ejemplo de macro
jge macro reg,cte,dest
movlw cte & 0xff
subwf reg,W
btfsc STATUS,C
goto dest
endm
movlw MAX_LUZ
MAX_LUZ && 0xff
0xff
movlw
movlw
& 0xff
subwfMAX_LUZ
nivel_luz,
W
subwf
nivel_luz,
W
subwf
nivel_luz,
W
btfsc
STATUS,C
btfsc STATUS,C
STATUS,C
btfsc
goto apagar_luz
apagar_luz
goto
goto
apagar_luz
jge nivel_luz,
nivel_luz, MAX_LUZ,
MAX_LUZ, apagar_luz
apagar_luz
jge
jge nivel_luz, MAX_LUZ, apagar_luz
Literales y expresiones
• Cadenas de caracteres entre comillas.
• Constantes numéricas en distintas bases:
Tipo
Sintaxis
Decimal
D'<dígitos>'
Hexadecimal H'<dígitos>'
0x<dígitos>'
Octal
O'<dígitos>'
Binario
B'<dígitos>'
ASCII
A'<dígitos>'
Ejemplo
D'100'
H'F5'
0xf5
O'206'
B'100'
A'o'
• Operadores: $, aritméticos, high, low
Subrutinas
• Conjunto de instrucciones que implementan una función
bien definida (funciones o procedimientos).
o Unidad básica de abstracción.
o Elemento básico de reutilización de código.
o Hacen el código más estructurado, entendible y facil de
utilizar.
• Se implementan almacenando el PC en la pila.
o call salva el PC en la pila.
o return y semejantes, lo recuperan.
Ejemplo de subrutina
org 0
call proc
goto $
proc: movf I,W
subwf J,W
btfsc STATUS,Z
goto L1
movf G,W
addwf H,W
movwf F
L1:
movf F,W
subwf I,W
movwf RET
return
Conceptos importantes
• Estructura general de sentencias ensamblador.
• Pseudoinstrucciones o directivas.
• Definición y utilitzación de macros.
• Definición y utilización de subrutinas.
• Empleo de la pila de en llamadas a subrutinas.
Descargar