Ensamblador
Enviado por xtremcat • 19 de Marzo de 2013 • 2.068 Palabras (9 Páginas) • 400 Visitas
LENGUAJE ENSAMBLADOR
• El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.
• El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.
• El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.
•La traducción de los nemónicos a código máquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.
• El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.
2
©ATE-Universidad de Oviedo
Programación en Ensamblador
3
Código Fuente .asm
110100001….1100 Código Máquina .hex
Programa Ensamblador (MPASM)
Lenguaje ensamblador y Programa ensamblador
Lenguaje Ensamblador
©ATE-Universidad de Oviedo
Programación en Ensamblador
4
El código fuente • Está compuesto por una sucesión de líneas de texto.
• Cada línea puede estructurarse en hasta cuatro campos o columnas separados por uno o más espacios o tabulaciones entre sí. ¾ Campo de etiquetas. Expresiones alfanuméricas escogidas por el usuario para identificar una determinada línea. Todas las etiquetas tienen asignado el valor de la posición de memoria en la que se encuentra el código al que acompañan. ¾ Campo de código. Corresponde al nemónico de una instrucción, de una directiva o de una llamada a macro. ¾ Campo de operandos y datos. Contiene los operandos que precisa el nemónico utilizado. Según el código, puede haber dos, uno o ningún operando. ¾ Campo de comentarios. Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.
3
©ATE-Universidad de Oviedo
Programación en Ensamblador
5
¾ Instrucciones: son aquellos nemónicosque son convertidos por el ensamblador en código máquina que puede ejecutar el núcleo del microcontrolador. En la gama media (PIC16xxx) cada nemónico se convierte en una palabra en la memoria de programa
¾ Directivas. Pseudoinstruccionesque controlan el proceso de ensamblado del programa, pero no son parte del código. Son indicaciones al programa ensamblador de cómo tiene que generar el código máquina
¾ Macros: Secuencia de nemónicosque pueden insertarse en el código fuente del ensamblador de una manera abreviada mediante una simple llamada.
Campo de código
Puede corresponder ese código a:
©ATE-Universidad de Oviedo
Programación en Ensamblador
6
;Fichero CUENTA.ASM ; ;Programa de Prueba para la placa PICDEM-2 plus ;Por el Puerto B se saca en binario, el numero de veces ;que se pulsó la tecla que está conectada a la entrada RA4 ;si pulsada a cero y si libre a 1 ; LIST P=16F877 ;Directiva para definir listado y microcontrolador INCLUDE P16F877.INC ;Inclusión de fichero de etiquetas ORG 0 BSF STATUS,RP0 ;Paso al banco 1 de la memoria de datos CLRF TRISB ;para definir el PORTB como salida BCF STATUS,RP0 ;Volvemos al banco 0 CLRF PORTB ;Ponemos a cero el PORTB para que aparezca ese ;valor cuando se defina como salida ESPERA BTFSS PORTA,4 ;Esperamos a que se pulse la tecla CALL INCREMENTO ;en cuyo caso RA4 pasa a 0 y vamos a GOTO ESPERA ;subprograma de INCREMENTO ;Subprograma de INCREMENTO INCREMENTO INCF PORTB,F ;Si se pulsó incrementamos PORTB SOLTAR BTFSS PORTA,4 ;no salimos hasta que se haya soltado GOTO SOLTAR ;la tecla, en ese caso RA4 pasaría a 1 RETURN ;y volvemos al programa principal END Ejemplo de código fuente
4
©ATE-Universidad de Oviedo
Programación en Ensamblador
7
• El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de numeración decimal, hexadecimal, octal, binario y ASCII.
• Los nemónicos que tengan una constante como operando deberán incluirla respetando la sintaxis que se indica a continuación.
Decimal .<valor> d’<valor> D’’ <valor>’
Hexadecimal
0x<valor>h’ <valor> H’’ <valor>’ <valor>h .<valor> H Octal o’<valor> O’’ <valor>’ Binario b’<valor> B’’ <valor>’ ASCII ‘<carácter>’ a’<carácter> A’’ <carácter>’ Cadena “<cadena>”
TIPO SINTAXIS
Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Ejemplo: movlw 0 F7h
Campo de Operandos y Datos
©ATE-Universidad de Oviedo
Programación en Ensamblador
8
Aprendiendo a Programar
Pasos a dar para poder generar código fuente:
1.- Juego de Instrucciones
2.- Directivas y Macros
3.- Organización de la Memoria interna:
• Programa
• Datos
5
©ATE-Universidad de Oviedo
Programación en Ensamblador
9
El juego de instrucciones
• Es un juego reducido de 35 instrucciones muy simples. Procesador RISC
• La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos y llamadas a subprogramas se ejecutan en 8 (no se aprovecha pipeline )
• Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.
• Por lo tanto el cálculo del tiempo de ejecución y de lo que ocupa un programa resulta simple
• Las instrucciones se pueden clasificar atendiendo a dos criterios: 1. Formato
2. Funcionalidad
©ATE-Universidad de Oviedo
Programación en Ensamblador
10
El juego de instrucciones: SEGÚN SU FORMATO
1.- Orientadas al byte
2.- Orientadas al bit
3.- Literales y de control
6
©ATE-Universidad de Oviedo
Programación en Ensamblador
11
Operación fuente, destino
W Opera con Dir. operando fuente
1.- Instrucciones orientadas al byte
c3c4c5 c0 c1c2
13 8 7 6 0
Código Operación
6 bits
Dirección operando fuente 7 bitsDestino resultado 1 bit
W
Dir. fuented = 1
d = 0
d f6 f5 f4 f3 f2 f1 f0
¿Cómo se escriben en ensamblador?
¿Qué hacen?
¿Cómo se codifican?
Nemónico reservado
7 bits o algo que pueda sustituir a 7 bits, si es mayor se trunca
1 bit o algo que pueda sustituir a 1 bit, si es mayor se trunca
...