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: movf I,W subwf J,W btfss STATUS,C goto JmI movf G,W addwf H,W ;suma goto fin ;hemos terminado JmI: movf G,W subwf H,W fin: movwf RESULT sleep Lenguaje ensamblador 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 Mnemónicos Etiquetas Símbolos inicio: movf I,W subwf J,W btfss STATUS,C goto JmI movf G,W addwf H,W ;suma goto fin ;hemos terminado JmI: movf G,W subwf H,W fin: movwf RESULT sleep Comentarios
Ensamblador Listado del programa Fichero objeto Primera pasada Segunda pasada Tabla de símbolos
Montador y Cargador Fuente 1 Fuente 2 Fuente 3 Ensamblador Objeto 1 Objeto 2 Objeto 3 Montador 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 movlw MAX_LUZ MAX_LUZ & 0xff 0xff movlw subwf MAX_LUZ nivel_luz, & 0xff subwf nivel_luz, W subwf btfsc btfsc nivel_luz, STATUS,C STATUS,C W btfsc goto goto STATUS,C apagar_luz goto apagar_luz jge jge nivel_luz, MAX_LUZ, MAX_LUZ, apagar_luz jge nivel_luz, MAX_LUZ, apagar_luz
Literales y expresiones Cadenas de caracteres entre comillas. Constantes numéricas en distintas bases: 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' 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.