Programación En Ensamblador - Web En Proceso De Mantenimiento

3y ago
110 Views
2 Downloads
297.09 KB
14 Pages
Last View : 18d ago
Last Download : 3m ago
Upload by : Asher Boatman
Transcription

Programación en Ensamblador ATE-Universidad de Oviedo1Programación en EnsambladorLENGUAJE ENSAMBLADOR El único lenguaje que entienden los microcontroladores es el códigomáquina formado por ceros y unos del sistema binario. El lenguaje ensamblador expresa las instrucciones de una forma másnatural al hombre a la vez que muy cercana al microcontrolador, ya que cadauna de esas instrucciones se corresponde con otra en código máquina. El lenguaje ensamblador trabaja con nemónicos, que son grupos decaracteres alfanuméricos que simbolizan las órdenes o tareas a realizar. La traducción de los nemónicos a código máquina entendible por elmicrocontrolador 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 elcorrespondiente código máquina, que suele tener la extensión *.hex. ATE-Universidad de Oviedo21

Programación en EnsambladorLenguaje ensambladoryPrograma ensambladorCódigo Fuente.asm110100001 .1100Código (MPASM) ATE-Universidad de Oviedo3Programación en EnsambladorEl código fuente Está compuesto por una sucesión de líneas de texto. Cada línea puede estructurarse en hasta cuatro campos o columnasseparados por uno o más espacios o tabulaciones entre sí.¾ Campo de etiquetas. Expresiones alfanuméricas escogidas por elusuario para identificar una determinada línea. Todas las etiquetastienen asignado el valor de la posición de memoria en la que se encuentrael código al que acompañan.¾ Campo de código. Corresponde al nemónico de una instrucción, de unadirectiva o de una llamada a macro.¾ Campo de operandos y datos. Contiene los operandos que precisa elnemónico utilizado. Según el código, puede haber dos, uno o ningúnoperando.¾ Campo de comentarios. Dentro de una línea, todo lo que se encuentrea continuación de un punto y coma (;) será ignorado por el programaensamblador y considerado como comentario. ATE-Universidad de Oviedo42

Programación en EnsambladorCampo de códigoPuede corresponder ese código a:¾ Instrucciones: son aquellos nemónicos que son convertidos por elensamblador en código máquina que puede ejecutar el núcleo delmicrocontrolador. En la gama media (PIC16xxx) cada nemónico seconvierte en una palabra en la memoria de programa¾ Directivas. Pseudoinstrucciones que controlan el proceso de ensambladodel programa, pero no son parte del código. Son indicaciones al programaensamblador de cómo tiene que generar el código máquina¾ Macros: Secuencia de nemónicos que pueden insertarse en el códigofuente del ensamblador de una manera abreviada mediante una simplellamada. ATE-Universidad de Oviedo5Programación en EnsambladorEjemplo de código fuente;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;LISTP 16F877;Directiva para definir listado y microcontroladorINCLUDE P16F877.INC;Inclusión de fichero de etiquetasORG0BSFSTATUS,RP0;Paso al banco 1 de la memoria de datosCLRFTRISB;para definir el PORTB como salidaBCFSTATUS,RP0;Volvemos al banco 0CLRFPORTB;Ponemos a cero el PORTB para que aparezca ese;valor cuando se defina como salidaESPERABTFSSPORTA,4;Esperamos a que se pulse la teclaCALLINCREMENTO;en cuyo caso RA4 pasa a 0 y vamos aGOTOESPERA;subprograma de INCREMENTO;Subprograma de INCREMENTOINCREMENTOINCFPORTB,F;Si se pulsó incrementamos PORTBSOLTARBTFSSPORTA,4;no salimos hasta que se haya soltadoGOTOSOLTAR;la tecla, en ese caso RA4 pasaría a 1RETURN;y volvemos al programa principalEND ATE-Universidad de Oviedo63

Programaciónen EnsambladorCampode Operandosy Datos El ensamblador MPASM (distribuido por Microchip) soporta los sistemasde numeración decimal, hexadecimal, octal, binario y ASCII. Los nemónicos que tengan una constante como operando deberán incluirlarespetando la sintaxis que se indica a continuación.TIPOSINTAXISD’ valor ’DecimalHexadecimald’ valor ’H’ valor ’. valor h’ valor ’ valor H0x valor valor h.OctalO’ valor ’o’ valor ’BinarioB’ valor ’b’ valor ’ASCIIA’ carácter ’a’ carácter ’‘ carácter ’“ cadena ”CadenaLas constantes hexadecimales que empiecen por una letra deben ir precedidas de uncero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h ATE-Universidad de Oviedo7Programación en EnsambladorAprendiendo a ProgramarPasos a dar para poder generar código fuente:1.- Juego de Instrucciones2.- Directivas y Macros3.- Organización de la Memoria interna: Programa Datos ATE-Universidad de Oviedo84

Programación en EnsambladorEl 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 yllamadas 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 unprograma resulta simple Las instrucciones se pueden clasificar atendiendo a dos criterios:1. Formato2. Funcionalidad ATE-Universidad de Oviedo9Programación en EnsambladorEl juego de instrucciones: SEGÚN SU FORMATO1.- Orientadasal byte2.- Orientadasal bit3.- Literales yde control ATE-Universidad de Oviedo105

Programación en Ensamblador1.- Instrucciones orientadas al byte7 bits o algo que pueda sustituira 7 bits, si es mayor se trunca¿Cómo se escriben en ensamblador?Operación fuente, destino1 bit o algo que puedasustituir a 1 bit, si es mayor se truncaNemónico reservado¿Qué hacen?d 0WW Opera con Dir. operando fuented 1¿Cómo se codifican?813c5 c4 c3 c2 c1 c07dDir. fuente60f6 f5 f4 f3 f2 f1 f0Código OperaciónDirección operando fuenteDestinoresultado 1 bit6 bits¿Dónde va aparar el resultado?7 bits11 ATE-Universidad de OviedoProgramación en Ensamblador2.- Instrucciones orientadas al bit7 bits o algo que pueda sustituira 7 bits, si es mayor se trunca¿Cómo se escriben en ensamblador?Operación fuente, bitNemónico reservado3 bits o algo que puedasustituir a 3 bits, si es mayor se trunca¿Qué hacen?Opera o explora el bit de la posición #bit del operando fuente¿Cómo se codifican?10138760c3 c2 c1 c0 b2 b1 b0 f6 f5 f4 f3 f2 f1 f0Código OperaciónBit a tratarDirección operando fuente4 bits3 bits7 bits ATE-Universidad de Oviedo126

Programación en Ensamblador3.- Instrucciones literales o de control8 bits o algo que pueda sustituira 8 bits, si es mayor se truncaen GOTO y CALL el valor es de 11 bits¿Cómo se escriben en ensamblador?Operación valor literalNemónico reservado¿Qué hacen?Operan con el valor literal directamente¿Cómo se codifican?c5 c4 c3 c2 c1 c0 k7 k6 k5 k4 k3 k2 k1 k013En el casoGOTOy CALLCódigo Operación 6b87Valor con el que se opera 8 bits0c2 c1 c0 k10 k9 k8 k7 k6 k5 k4 k3 k2 k1 k0 ATE-Universidad de OviedoProgramación en Ensamblador13¿Cómo leer la tabla?TABLA-RESUMENDE INSTRUCCIONESOrientadasal byte: son 18Orientadasal bit: son 4Literalesy decontrol: son 13 ATE-Universidad de Oviedo147

Programación en EnsambladorCICLO DE INSTRUCCION Un ciclo de instrucción es el tiempo que se tarda en ejecutar unainstrucción (salvo las instrucciones de salto) en el microcontrolador. Enlos PIC16, un ciclo de instrucción dura 4 ciclos de reloj. En una primera etapa, la instrucción es traída a la CPU. Esto lleva unciclo de instrucción TCY. En la segunda etapa se ejecuta la instrucción. Esto lleva otro TCY. No obstante, debido al solapamiento (pipelining ó entubado) de traer lainstrucción actual y ejecución de la instrucción previa, una instrucción setrae y otra se ejecuta cada TCY.Oscilador ATE-Universidad de Oviedo15Programación en EnsambladorCICLO DE INSTRUCCIONPudiera haber un ciclo de instrucción de retardo si elresultado de ejecutar la instrucción anterior modifica elcontenido del Contador de Programa (Ej: GOTO ó CALL).Esto implica suspender el entubado (pipelining) de lasinstrucciones durante un ciclo para que la instrucción adonde se salta se traiga a la CPU.Oscilador ATE-Universidad de Oviedo168

Programación en EnsambladorEl juego de instrucciones: SEGÚN SU FUNCIONALIDADInstrucciones de CARGANEMÓNICOclrffDESCRIPCIÓNFLAGS AFECTADOS00 (f)Z00 (W)Zf,d(f) (destino)Zmovlwkk (W)Ningunomovwff(W) (f)Ningunoclrwmovf17 ATE-Universidad de OviedoProgramación en EnsambladorInstrucciones de BITNEMÓNICODESCRIPCIÓNFLAGS AFECTADOSbcff,bPone a 0 el bit ‘b’ del registro ‘f’Ningunobsff,bPone a 1 el bit ‘b’ del registro ‘f’NingunoInstrucciones ARITMÉTICASNEMÓNICOaddlwDESCRIPCIÓNFLAGS AFECTADOSk(W) k (W)C – DC - Zaddwff,d(W) (f) (destino)C – DC - Zdecff,d(f) - 1 (destino)Zincff,d(f) 1 (destino)ZsublwkK - (W) (W)C – DC - Zsubwff,d(f) - (W) (destino)C – DC - Z ATE-Universidad de Oviedo189

Programación en EnsambladorInstrucciones LÓGICASNEMÓNICODESCRIPCIÓNFLAGS AFECTADOSandlwk(W) AND k (W)Zandwff,d(W) AND (f) (destino)Zcomff,d(/f) (destino)Ziorlwk(W) OR k (W)Ziorwff,d(W) OR (f) (destino)Zrlff,dRota (f) a izquierda (destino)Crrff,dRota (f) a derecha (destino)Cswapf,dIntercambia nibbles (f) (destino)xorlwk(W) XOR k (W)Zxorwff,d(W) XOR (f) (destino)ZNinguno19 ATE-Universidad de OviedoProgramación en EnsambladorInstrucciones de SALTONEMÓNICODESCRIPCIÓNFLAGS AFECTADOSbtfscf,bSalta si el bit ‘b’ de ‘f’ es 0Ningunobtfssf,bSalta si el bit ‘b’ de ‘f’ es 1Ningunodecfsz f,d(f) - 1 (destino) y salta si es 0Ningunoincfszf,d(f) 1 (destino) y salta si es 0NingunogotokSalta a la dirección ‘k’NingunoInstrucciones de manejo de IÓNFLAGS AFECTADOSLlamada a subrutinaNingunoRetorno de una interrupciónNingunoRetorno con un literal en (W)NingunoRetorno de una subrutinaNinguno ATE-Universidad de Oviedo2010

Programación en EnsambladorInstrucciones ESPECIALESNEMÓNICODESCRIPCIÓNclrwdtBorra Timer del WatchdognopNo operaciónsleepEntra en modo de bajo consumoFLAGS AFECTADOS/TO - /PDNinguno/TO - /PD21 ATE-Universidad de OviedoProgramación en EnsambladorFichero con eljuego deinstrucciones completo.CampoDescripciónfPosición de memoria de datos (Register file address)(0x00 to 0x7F)WRegistro de trabajo(acumulador)bnº Bit dentro de una posición de memoria (0-7)kValor literal, constante o etiqueta (puede de 8 o 11 bits)xNo importa el valor (0 ó 1)dSelección de destino:El ensamblador genera código con x 0.d 0: almacena el resultado en W,Juego instr.pdfd 1: almacena el resultado en una posición de lamemoria de datos f.destDestino es el registro W o la posicición de memoria dedatos especificadalabelnombre de etiquetaTOSCima de la pilaPCContador de programaPCLATHLatch de la parte alta del contador de programaGIEBit de abilitación de interrupción globalWDTTemporizador WatchdogTOTime-out bitPDPower-down bit[]Optional()Contenido Asignado aLas claves del juegode instrucciones Register bit field En el conjunto deitalicstermino definido por el usuario ( courier) ATE-Universidad de Oviedo2211

Programación en EnsambladorAprendiendo a ProgramarPasos a dar para poder generar código fuente:1.- Juego de Instrucciones2.- Directivas y Macros3.- Organización de la Memoria interna: Programa Datos ATE-Universidad de Oviedo23Programación en EnsambladorDirectivas de MPASM Controlan el proceso de ensamblado del programa, pero no son parte delmismo (también se conocen como pseudoinstrucciones). Hay más de 50 directivas reconocidas por MPASM. Las más usadas :ENDEs la única directiva obligatoria. Indica al ensamblador dónde debedetener el proceso. Debe colocarse en la última línea del programa. etiqueta EQU expresión El valor expresión es asignado a etiqueta . Estas directivas sesuelen colocar al principio del programa y habitualmente se usanpara definir constantes y direcciones de memoria.[ etiqueta ] ORG expresión Las instrucciones del código fuente que siguen a esta directiva seensamblan a partir de la posición indicada por expresión . ATE-Universidad de Oviedo2412

Programación en EnsambladorCONFIG expresión [& expresión & . & expresión ]Permite indicar la configuración elegida para la grabación del PIC.Ejemplo: CONFIG CP OFF & WDT OFF & XT OSCLIST P 16F877Indica el tipo de microcontrolador utilizado.INCLUDE p16F877.inc o INCLUDE “p16F877.inc”Incluye en el programa un fichero donde se definen las etiquetascon las que se nombra a los diferentes registros y sus bits. Estefichero se encuentra en el directorio principal del programaensamblador. Puede usarse esta directiva para incluir cualquierotro fichero (¡Ojo! El fichero de inclusión no puede terminar conuna directiva END).DT expr1 [, expr2 , . , exprN ]Genera una instrucción retlw por cada expresión que incluya ladirectiva. Si la expresión es del tipo cadena, se generará unainstrucción retlw por cada carácter de la misma. ATE-Universidad de Oviedo25Programación en EnsambladorTODAS LAS DIRECTIVASFichero adicionales:Directivas MPASM.pdfGuía de uso del MPASM, MPLINK y MPLIB ATE-Universidad de Oviedo2613

Programación en EnsambladorAprendiendo a ProgramarPasos a dar para poder generar código fuente:1.- Juego de Instrucciones2.- Directivas y Macros3.- Organización de la Memoria interna: Programa Datos ATE-Universidad de Oviedo2714

Un ciclo de instrucción es el tiempo que se tarda en ejecutar una instrucción (salvo las instrucciones de salto) en el microcontrolador. En los PIC16, un ciclo de instrucción dura 4 ciclos de reloj. En una primera etapa, la instrucción es traída a la CPU. Esto lleva un ciclo de instrucción T CY.

Related Documents:

Unidad I: Introducción al lenguaje ensamblador 1.1 Importancia de la programación en lenguaje ensamblador Para comenzar el curso empezaremos conociendo que es el lenguaje ensamblador que utilizaremos y algunos conceptos básicos del mismo: Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado .

3. Hay disponible software libre que se ejecuta en este modos. La carencia de libros de texto para la programaci on en ensamblador de PC para modo protegido es la principal raz on por la cual el autor escribi o este libro. C omo lo dicho antes, este libro hace uso de Software Libre: es decir el ensamblador NASM y el compilador de C/C DJGPP.

Estructura de Computadores Autores: Félix García Carballeira et al. 1 Programación en ensamblador Ejercicios resueltos Ejercicio 1. Dado el siguiente fragmento de programa en ensamblador.

El nombre verdadero de la programaci on Una concepci on de ensenanza de la programaci on para la sociedad de la informaci on Pablo E. Mart nez L opez*, Eduardo A. Bonelli**, and Federico A. Sawady O’Connor*** Universidad Nacional de Quilmes Cuando sepas re

ca principal es que forma un entorno de an alisis estad stico para la manipulacion de datos, su c alculo y la creaci on de gr a cos. En su aspecto Rpuede considerarse como otra implementaci on del lenguaje de programaci on S, con la particularidad de que es un software GNU, General

Common Microsoft FrontPage tasks Work with and manage Web pages F8 Run the accessibility checker. CTRL N Create a new Web page. CTRL O Open a Web page. CTRL F4 Close a Web page. CTRL S Save a Web page. CTRL P Print a Web page. F5 Refresh a Web page; refresh the Folder List. CTRL TAB Switch between open Web pages. CTRL SHIFT B Preview a Web page .

AGCO (Massey Fergusson - Iochpe Maxion - Deutz) Colheitadeiras / Haversters / Cosechadoras Modelo / Model Código montadora / OEM Code / Código ensamblador Bosch Rexroth Código / Code Jogo de vedação / Seal Kit / Kit de sellos Cj. acasalado / Rotary group / Cuerpo Allis AA550, AA660, e MF34, MF38 6200419M91 R979039199 (41784603) R979039236

1 Units as a measure of Risk 16 The Origin of the Free Rules Project 1 The Ugly Truth about the System Sellers 2 C H A P T E R 4 Rules You Won’t Follow Don’t Matter 3 Entries 19 The Genesis of the Project 4 Breakouts 19 Adding Units 20 I N T R O D U C T I O N Consistency 21 The Turtle Experiment 6 C H A P T E R 5 C H A P T E R 1 Stops 22 A Complete Trading System 8 Turtle Stops 22 The .