tema 3: lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de...
TRANSCRIPT
La primera abstracción de la máquina para el programador
Tema 3: Lenguaje ensamblador
Í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?
Mnemónicos para instrucciones, símbolos en lugar de bits, etiquetas en lugar de direcciones, macros en lugar de repetir.
• 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.
Traductores
inicio:
movf I,W
subwf J,W
btfss STATUS,C
goto JmI
movf G,W
addwf H,W ;sumagoto fin ;hemos terminado
JmI: movf G,W
subwf H,W
fin: movwf RESULT
sleep
080C
020D
1D83
2807
080F
070E
2809
080F
070E
0090
0063
Lenguajeensamblador
Lenguajemáquina
* Las instrucciones empleadas son del lenguaje ensamblador de los microcontroladores PIC de Microchip.
Elementos del lenguaje ensamblador
inicio:
movf I,W
subwf J,W
btfss STATUS,C
goto JmI
movf G,W
addwf H,W ;sumagoto fin ;hemos terminado
JmI: movf G,W
subwf H,W
fin: movwf RESULT
sleep
Etiquetas
Símbolos
Mnemónicos
Comentarios
Ensamblador
Primera pasada
Segundapasada
Listado delprograma
Ficheroobjeto
Tabla desímbolos
Ensamblador
Montador y Cargador
Fuente 1
Objeto 1
Montador
Fuente 2
Objeto 2
Fuente 3
Objeto 3
Ejecutable Cargador
inicio_bucle: addwf a,W ;Comienzo del bucle
Formato de una sentenciaen 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 ';‘.
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.
oNo 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.
oNo 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
#include “p16f84.inc”
ifndef DEBUG
...
endif
if NIVEL_LOG > 5
...
endif
• Permiten compilar código de forma condicional.
• Permiten incluir otros archivos.
Directivas de datos
STATUS equ 0x03
regs equ 0x0c
cblock regs
I,; I vale 0x0CJ ; J vale 0x0D
endc
org 0x10
btfsc STATUS,2
main:movf I,0
addwf J,1
goto main
Determina la dirección de
• Permiten controlar la ubicación de datos e instrucciones
en la memoria.
• Permiten hacer referencia a operandos de forma
simbólica.
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!
movlw MAX_LUZ & 0xff
subwf nivel_luz, W
btfsc STATUS,C
goto apagar_luz
movlw MAX_LUZ & 0xff
subwf nivel_luz, W
btfsc STATUS,C
goto apagar_luz
jge nivel_luz, MAX_LUZ, apagar_luz
Ejemplo de macro
jge macro reg,cte,dest
movlw cte & 0xff
subwf reg,W
btfsc STATUS,C
goto dest
endm
jge nivel_luz, MAX_LUZ, apagar_luz
movlw MAX_LUZ & 0xff
subwf nivel_luz, W
btfsc STATUS,C
goto apagar_luz
jge nivel_luz, MAX_LUZ, apagar_luz
Literales y expresiones
Tipo Sintaxis Ejemplo
Decimal D'<dígitos>' D'100'
Hexadecimal H'<dígitos>' H'F5'
0x<dígitos>' 0xf5
Octal O'<dígitos>' O'206'
Binario B'<dígitos>' B'100'
ASCII A'<dígitos>' A'o'
• Cadenas de caracteres entre comillas.
• Constantes numéricas en distintas bases:
• 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.