ANLISIS,DISEO Y PROGRAMACIN DISEO Y PROGRAMACIN
DE SISTEMAS DE SISTEMASPrincipio de funcionamiento del Software de Sistemas
ANLISIS,DISEO Y PROGRAMACIN DISEO Y PROGRAMACIN
DE SISTEMAS DE SISTEMASPrincipio de funcionamiento del Software de Sistemas
ISBN 970764803-1
Autor: M.C. Norma Ramrez Hernndez M.S.I Graciela Lara Lpez M.A.S.I. Salomn Eduardo Ibarra Chvez Revisor Tcnico: Ing. Valentn Martnez Lpez9 789707 648036
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
CONTENIDO 1 INTRODUCCIN 1. ESTRUCTURADELACOMPUTADORA 1.1. HISTORIA 1.1.1. 3000ACBACOCHINA 1.1.2. SIGLOXVIIREGLADECLCULONAPIER,GUNTHER,PASCAL,LEIBNIZ 1.1.3. SIGLOXIXMAQUINADIFERENCIALBABBAGE,BYRON,JACQUARD(TARJETAS PERFORADAS) 1.1.4. 1944MARKIAIKEN 1.1.5. 1944ENIACECKERT,MAUCHLY 1.1.6. 1946EDVACJOHNVONNEUMANN 1.2. GENERACIONES 1.2.1. GENERACIN0(19421945) 1.2.2. PRIMERAGENERACIN(19511958) 1.2.3. SEGUNDAGENERACIN(19591954) 1.2.4. TERCERAGENERACIN(19641971) 1.2.5. CUARTAGENERACIN(19721984) 1.3. ARQUITECTURADELACOMPUTADORA 1.3.1. ARQUITECTURADEJOHNVONNEUMANN 1.3.2. ARQUITECTURADEHARVARD 1.4. ESTRUCTURALGICADELPROCESADOR 1.4.1. LENGUAJEMQUINA 1.4.2. SISTEMASDENUMERACIN 1.5. CONJUNTODEREGISTROSYMODELODEPROGRAMACIN 1.5.1. CONCEPTOSDEMODELODEPROGRAMACIN 1.5.2. DIRECCIONAMIENTOSSIMPLES.(INHERENTE,INMEDIATO,DIRECTOYEXTENDIDO) 1.5.3. DIRECCIONAMIENTORELATIVODE8BITS 1.5.4. DIRECCIONAMIENTORELATIVODE16BITS. 1.5.5. DIRECCIONAMIENTOINDEXADO. 1.5.6. OTROSDIRECCIONAMIENTOS. 1.5.6.1. RELATIVODE9 1.5.6.2. MLTIPLES 1.5.6.3. MSCARA 1.6. EJERCICIOSDEFINDECAPITULO 7 11 11 11 11 12 13 14 14 16 16 16 17 17 18 20 25 34 37 39 41 45 45 51 53 55 56 58 58 59 59 61
3
nrh 2. ENSAMBLADORES 2.1. RELACINARQUITECTURADEMQUINASYENSAMBLADOR 2.1.1. CARACTERSTICASDEPENDIENTESDELAMAQUINA. 2.1.2. CARACTERSTICASINDEPENDIENTESDELAMAQUINA. 2.2. MODALIDADESDEENSAMBLADO 2.3. TCNICASDEENSAMBLADO 2.3.1. ENSAMBLADORDEUNPASO. 2.3.2. ENSAMBLADORDEDOSOMSPASOS. 2.3.2.1. PRIMERPASO(TABSIM:TABLADESMBOLOS) 2.3.2.2. SEGUNDOPASO(S19) 2.4. GESTINDEMEMORIAENELENSAMBLADOR 2.5. DISEOYPROGRAMACINDELENSAMBLADORDEDOSPASOS 2.5.1. ALGORITMODEPROGRAMACIN 2.5.2. ALGORITMOSYPSEUDOCDIGOSEJEMPLOS 2.5.3. FORMATODEARCHIVOOBJETO. 2.6. EJEMPLOS 2.7. FUNCIONAMIENTODELENSAMBLADOR 2.8. EJERCICIOSDEFINDECAPITULO 3. CARGADORLIGADOR 3.1. CLASESDECARGADOR 3.1.1. LIGADODINMICO 3.1.2. EJEMPLODECARGADORCYBER 3.1.3. EJEMPLODEEDITORDELIGADO370 3.1.4. EJEMPLODEEDITORDELIGADOVAX 3.2. RELACINCARGADORSISTEMAOPERATIVO 3.2.1. SISTEMASOPERATIVOS 3.3. FUNCIONESDELEDITORDEENLACE 3.4. PROBLEMADELIGASDEOBJETOSYMTODOSDESOLUCIN 3.5. DISEOYPROGRAMACINDEUNCARGADOR 3.5.1. CARGADORABSOLUTO(EJEMPLO) 3.5.2. CARGADORRELOCALIZABLE(EJEMPLO) 3.6. EJERCICIOSDEFINDECAPITULO 4 MACROPROCESADORES 4.1. IMPORTANCIATERICADEMACROEXPRESIONESYUSOSDEUNMACROPROCESADOR 4.1.1. CONCEPTOSCLAVE 67 67 74 75 81 87 88 89 89 91 93 101 103 108 120 121 127 129 137 137 142 144 145 145 147 150 151 154 159 159 160 164 171 176 179
4
______________________________________________________________________________ Introduccin/Historia
ANALISIS,DISEOYPROGRAMACINDESISTEMAS 4.2. MACROPROCESADORESCONARGUMENTOSYMACROPROCESADORESRECURSIVOS 4.3. INCORPORACINDELPROCESADORDEMACROSALENSAMBLADOR 4.3.1. EJEMPLOS 4.4. EJERCICIOSDEFINDECAPITULO 5. ANEXOS 5.1. CODIGOASCII 5.2. SECCIONESDELMANUALDEREFERENCIADELHC12 5.2.1. MODELODEPROGRAMACION 5.2.2. MODOSDEDIRECCIONAMIENTODELHC12 5.2.3. TABLADEOPERACIONESINDEXADAS 5.2.4. HOJADEDATOSDEINSTRUCCIN 5.2.5. INSTRUCCINABREVIADA 5.3. TABLAINDICE 5.4. TABLADEILUSTRACIONES 6. REFERENCIAS 181 182 183 185 189 189 190 190 191 192 193 193 194 196 197
5
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
1
Introduccin
ELOBJETIVOGENERAL DE ESTE TEXTO ES COMPRENDER, EN UN NIVEL OPERATIVO, LOS PRINCIPIOS DE FUNCIONAMIENTO DE LAS COMPUTADORAS BASADAS EN EL MODELO DE VON NEWMANN Y ARQUITECTURAS DE HARVARD. ENTENDER Y MANEJAR LAS DIVERSAS MODALIDADESYMECANISMOSDEENSAMBLADO,CARGA,MACROPROCESAMIENTOYEJECUCIN DEPROGRAMAS,LOSOBJETIVOSESPECFICOS SON EXPRESADOS EN CADA MDULO DEL CONTENIDO Antes de entrar de lleno al contenido propio de la materia hay que aclarar que dicha materia pertenece a la academia SOFTWARE DE SISTEMAS, pero que significan estos conceptos?,empecemos. La informtica es la ciencia que se encarga de la automatizacin del manejo de lainformacin.Lainformtica,porsurapidez de crecimiento y expansin, ha venido transformando rpidamente las sociedades actuales. La computadora, a diferencia de otrasherramientasqueengeneralapoyanel esfuerzofsicodeloshumanos,fueinventada parafacilitareltrabajointelectual. Un sistema es un conjunto de El lenguaje de programacin es el mediodecomunicacinentreelhombreyla mquina. Sistema de smbolos y reglas que permitelaconstruccindeprogramasconlos que la computadora puede operar as como resolver problemas de manera eficaz. Estos contienen un conjunto de instrucciones que nospermitenrealizaroperacionesdeentrada / salida, calculo, manipulacin de textos, lgica / comparacin y almacenamiento / componentesqueinteraccionanentresipara lograr un objetivo comn. Las personas se comunicanconellenguaje,queesunsistema muy desarrollado formado por palabras y smbolos que tienen significado que tienen significadoparaelquehablayparaquieneslo escuchan,lomismoesparalascomputadoras lascualestienensistemasysecomunicanpor mediodecomputadoras. recuperacin. La programacin tiene como objetivo el tratamiento de la informacin correctamente, con lo que se espera que un programa de el resultado correcto y no uno errneo. As que cada aplicacin debe funcionar segn lo esperado en trminos de programacin, esta pretende que sus programasseantilesyeficientes
7
nrh La programacin es el proceso de Por lo tanto la Programacin de Sistemas se refiere a la creacin de programas cuya finalidad es servir a otros programas (software): ejemplos:
convertir las especificaciones a grandes rasgos de los sistemas en instrucciones de mquina que produzcan los resultados deseados.
Ensambladores, Cargadores y Ligadores, Compiladores,Intrpretes.
El Software de Sistemas es el software que controla y coordina la operacin del equipo que existe en un sistema computacional. El tipo ms importante de Software de Sistema es el Sistema Operativo. Este supervisa y controla todas las actividades de entrada/salida y procesamientodeunsistemadecomputacin.Ademstodoelhardwareysoftwaresecontrola pormediodeunsistemaoperativo. LlamamosSoftwaredesistemasalconjuntodeprogramasqueseencargandecontrolarel funcionamientodelosprogramasqueseejecutanydelagestininternadelosrecursosfsicosde lacomputadora.Comoesnatural,elsistemaoperativoformapartedelsoftwaredesistema. El Software es un conjunto de programas, documentos, procedimientos, y rutinas
asociadosconlaoperacindeunsistemadecmputo.Distinguindosedeloscomponentesfsicos llamadoshardware.Elhardwareporsisolonopuedehacernada,puesesnecesarioqueexistael software. Elsoftwaredemanerageneral,podemosclasificarloen:
Software de sistema: en Software de aplicacin: El Softwaredeusogeneral:este algunas ocasiones tambin software de hoja de clculo, ofrece la estructura para un denominadosoftwaredebase, de diseo asistido (CAD), por gran nmero de aplicaciones de empresariales, cientficas y
consiste en un software que computadoras sirve para controlar
e procesamiento de texto, de personale; es decir, con
interactuar con el sistema, manejo de Bases de Datos, software y documentacin proporcionando control sobre perteneceaestacategora. el hardware y dando soporte aotrosprogramas. orientadaalosusuarios
8
______________________________________________________________________________ Introduccin/Historia
ANALISIS,DISEOYPROGRAMACINDESISTEMAS El trabajo de un programador de sistemas es seleccionar, modificar y mantener el complejo software del sistema operativo. Por lo tanto, los programadores de sistemas desempean una funcindeapoyoalmantenerelambientedelsoftwaredelsistemaoperativoenelquetrabajan losprogramadoresdeaplicacionesylosoperadoresdelascomputadoras.Tambinparticipanen lasdecisionesrelativasareduccionesoampliacionesdehardwarey/osoftware.Programacinde Sistemas Conceptos y Aplicaciones Se entiende por programacin de sistemas el conjunto de programasnecesarioparaqueunacomputadoradeunaimagencoherenteymonolticaantesus usuarios. Es un rea especializada dentro de las ciencias de la computacin. As, mediante la programacindesistemas,nosolosemanejanlascomputadoraspormediodellenguajemaquina (0y1)sinoporotrossistemasoperativos,sinlocualseramuydifcillainteraccinconlamaquina.
9
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
1. ESTRUCTURADELACOMPUTADORAOBJETIVO: ENTENDER CON DETALLE LOS PROCESOS LOGICOS QUE SUCEDEN EN UNA COMPUTADORA PARA QUE PUEDA EJECUTAR UN PROGRAMA EN LENGUAJE MAQUINA DE UNA PLATAFORMAQUEYAESTADEFINIDA.
1.1.HistoriaPodemos definir a la computadora como un dispositivo electrnico capaz de recibir un conjunto de instrucciones y ejecutarlas realizando clculos sobre los datos numricos, o compilandoycorrelacionandootrostiposdeinformacinparaobtenerotroconjuntodedatoso informacincomorespuesta.Lainformtica,porsurapidezdecrecimientoyexpansin,havenido transformandorpidamentelassociedadesactuales. 1.1.1. 3000ACBACOCHINA Desarrollada por los chinos y utilizado por civilizaciones griegasyromanas.Estedispositivoesmuysencillo,constadeun marcorectangulardemaderaensartadodevarillasenlasquese desplazaban bolas agujereadas de izquierda a derecha. Al desplazar las cuentas (bolas) sobre las varillas, sus posiciones representanvaloresalmacenados,yesmedianteestasposiciones que se representa y almacena datos. A este dispositivo no se le puede llamar computadora pues carece de un elemento fundamental:programa.Ilustracin 1 Abaco
1.1.2. SigloXVIIREGLADECLCULONAPIER,GUNTHER,PASCAL,LEIBNIZ logaritmospermitiendoquelosresultadosde El creciente inters en Europa por la astronoma y la navegacin, impuls a simplificar los clculos, en ese entonces se encontraba en uso "la regla del clculo", calculadora basada en las invenciones de y Napier,GuntherBissaker. En 1614, el escocs Napier haba anunciado el descubrimiento de los complicadas multiplicaciones se redujeran a unprocesosimpledesuma;EdmundGunther se encarga de enmarcar los logaritmos de Napierenlneas,porsuparteBissakercoloca las lneas de ambos sobre un pedazo de madera,creandodeesta maneralaregladel clculo.
11
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
1.5.Conjuntoderegistrosymodelodeprogramacin 1.5.1. Conceptosdemodelodeprogramacin La arquitectura de un
(Reduced Instruction Set Computer), como por ejemplo el PIC16C84 de MicroChip o el propio Sparc de SUN y el PPC604 de Motorola. Por otra parte tenemos a los microprocesadores con instrucciones
microprocesador o de cualquier procesador decomputadora,sedefineporsuconjuntode instrucciones y por el modo en como stas acceden a los datos en memoria para su procesamiento. Las instrucciones que obedece un microprocesador estn codificadas como dgitos binarios en su sistema de memoria. Cada instruccin puede dividirse en uno o ms campos de bits. Todas las instrucciones tienen un campo de cdigo de operacin (COP), que define el propsito de la instruccin. Adems, la instruccin completa puede tener campos para operandos o direcciones de memoria que especifican en donde estn almacenados los datos. Lo anteriordelimitaelconceptode"formatode instruccin".
compuestas, los CISC ( Complex Instruction Set Computer ), como el 6809 de Motorola, SIC/XE y la serie 80X86 de Intel. Existen algunosprocesadoreshbridosmuyeficientes como los famosos K6, K6II y K6III de AMD. Enestepuntosevedeacuerdoalmanualde referencia del dispositivo a tratar. Para nuestro curso el microprocesador a ver ser elHC12. Elmodelodeprogramacin representalaestructurademanipulacinde datosquesoportaelconjuntode instrucciones,usualmentecompuestapor: Unidadaritmticaylgica Losregistrosdetrabajo Elregistrodecondiciones Lamemoriadedatos
Las instrucciones por su complejidad pueden ser sencillas o compuestas. Los microprocesadores que ejecutan
instrucciones sencillas son los llamados RISC
45
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
2. ENSAMBLADORESObjetivo:ENTENDERYMANEJARLOSDIFERENTESESQUEMASDEENSAMBLADO.DISEARUN ENSAMBLADORDE2PASOS.
2.1.RelacinArquitecturademquinasyensamblador
La evolucin de los sistemas comienza con un ENSAMBLADOR, se sigue con los CARGADORESqueeselmodulo3paranuestrocasodeestudio,MACROPROCESADORESqueesel modulo4,COMPILADORESySISTEMASOPERATIVOS. Al inicio de los tiempos, el se introdujo el concepto de MNEMONICO, que sustituye al conjunto de UNOS y CEROS, yalconjuntodeestosmnemnicosLENGUAJE ENSAMBLADOR. La entrada de dicho programaselellamaPROGRAMAFUENTEya la salida PROGRAMA OBJETO (que es la traduccindedichasinstruccionesalenguaje maquina.
programador tena que interpretar el fundamento de la instruccin, se escriban unaseriedeunosyceros(lenguajemaquina) y se grababan en la memoria del dispositivo, entonces el dispositivo interpretaba como estocomounainstruccin. Los
programadores encontraban esta tarea (leer o escribir en la memoria) muy lenta, as que Por lo tanto, los ensambladores son programas que procesan los enunciados del programa origen en lenguaje ensamblador y lostraducenenarchivosenlenguajemquina quesonejecutadosporunmicroprocesadoro unmicrocontrolador,estospermitenquelos programas origen se escriban y se editen en una computadora para generar un cdigo ejecutableenotracomputadora.Elarchivoen lenguajeobjetoejecutableresultantesecarga (CARGADOR) y se ejecuta en el sistema destino.
Lenguaje ensamblador es el lenguaje simblico que se utiliza para codificar los programas origen que se procesan por el ensamblador es llamado lenguaje
ensamblador. Este lenguaje es una coleccin de smbolos mnemnicos que representan: operaciones (mnemnicos de instrucciones para la mquina o de directrices para el ensamblador), nombres simblicos,
operadoresysmbolosespeciales.Ellenguaje ensamblador proporciona cdigos de
operacin de los mnemnicos para todas las instruccionesdela mquinacontenidasenla listadeinstrucciones.
67
ANALISIS,DISEOYPROGRAMACINDESISTEMAS .Ejemplos Mnemnico NOP A7 C.o. Explicacin Nooperacin,incrementaelcontadorde programaperonohacenada Compara el contenido del registro Y con unvalorespecificado Sumaelcontenidodelacumuladoracon elb,elresultadoquedaena Rota todos los bits del acumulador A hacialaderecha Carga al acumulador un Ejemplosdeuso Solounuso:nop
Cpy
Dependedesuuso
CPY04
ABA
1806
Solounuso:aba
Rola
45
Solounuso:rola
LDAA
Dependedesuuso
valor Ldaa #01, ldaa $01, etc
especificado
Unensambladoresunprogramaquetraducelasinstruccionesalenguajemaquina,estos deben ser escritos conforme a las especificaciones del ensamblador. Un programa consiste en declaraciones (llamadas lnea cdigo) lnea por lnea. Su sintaxis es la siguiente: nombre del campo,operaciondelcampo,operandodelcampo,sintaxisdelcampo,ejemplo: ETIQUETA Num1: MNEMONICO LDAA JMP Operando(S) COMENTARIO(antepone;) #5 ;cargaalregistroAun5 $10 ;saltoincondicionalaladireccin10 o Unasterisco(*)comoelprimer carcterenelcampodeetiquetas indicaqueelrestodelenunciado origen es un comentario. Los comentariossonignoradosporel ensamblador e impresos en el listado origen solamente como informacindeprogramacin. o Unespaciodecarcterenblanco (TAB o espacio) como primer
CampodeEtiquetas:estapuedeaparecer por si sola en una lnea. El ensamblador interpreta esto como "establece el valor de la etiqueta igual al valor actual del contadordeprograma(PC)".Elcampode etiquetasaparececomoelprimercampo dentrodeunenunciadoorigen.Elcampo deetiquetaspuedeadoptarcualquierade lassiguientesformas:
69
ANALISIS,DISEOYPROGRAMACINDESISTEMAS direccionamientos, no todos son aplicablesalosmicros. MNEMONICO: las podran ser las mismas, se enuncian dediferentemanera,esdecir:
instrucciones aunque en concepto Funcin CargoalacumuladorA ComparaalacumuladorA ..yaspodramosseguirenumerandoencontrandolascaractersticasquehacenexclusivoal micro. 2.1.2. CaractersticasIndependientesdelamaquina. Lascaractersticasindependientesdelamquinasonaquellasrelacionadasmsbiencon eltipodeimplementacindelprogramaysusestructurasdedatosqueconlamquinaobjeto. DIRECTIVAS: Tambin existen las llamadas DIRECTIVAS o PSEUDOINSTRUCCIONES, las cualesespecificanaccionesauxiliaresquesellevanacaboporelensamblador. PERIFERICOS: tododispositivoquesercontroladoporelmicro ARCHIVOSAUXILIARES:*.LST,*.OBJ,*.S19,*.TABSIM,etc,dependiendodelalgoritmocon quesetrabaje .Deigualmanerapodramosseguirnumerandocaractersticasglobalesparalosmicros DIRECTIVAS: Las directivas de ensamblador controlan acciones auxiliares que se realizan durante el proceso de ensamblado, tales como reservar posiciones de memoria, inicializar posiciones de memoria a un determinado valor, definir etiquetas, indicar el inicio y el final del MNHC12 LDAA CMPA MNHC08 LDA CMP
75
nrh programa, o definir macros. Las directivas no son traducibles a cdigo mquina. Nota: las directivasNOtienencdigomaquina. Especificarelpuntoenelcualsecomienzaaensamblarunaseccindecdigo.Esta directiva debe utilizarse siempre antes de comenzar a declarar cdigo o zonas de memoria. Especificaelfindeunarchivoencdigofuenteensamblador.Estadirectivadeber serincluidaobligatoriamentealfinaldecadaarchivo.Cualquierexpresindeclarada despusdeestadirectivaserignorada. Especificacindelcomienzodeunaseccindecdigoensambladoadireccin$0. Sustituye un identificador por una cadena de texto previamente especificada en cualquier parte del programa por el valor declarado. Esto permite una gran versatilidad a la hora de declarar constantes y posiciones de memoria de especial intersparaelprogramador. contloc 4000 LasdirectivasDByDWpermitendeclararoreservarzonasdememoria,tantopara valoresnumricoscomoparacadenasdetexto.Estasdirectivasposeenunaamplia sintaxisquepermiteunagranflexibilidadalahoradedefinirreasdememoria.Los elementos definidos mediante las directivas DB y DW deben ir separados por comas. Para reservar espacio en la memoria sin especificar un valor concreto, se puedeemplearelsignodeinterrogacin. Laespecificacindecadenasdetextodebehacersemediantelaexpresinliteralde lacadenaentrecomillas. LINEADEPROGRAMA E1EQU$800 ORG$4000 JMPE1 END COP 060800
ORG
END START Equ
DC.B
DC.W
contloc 4000 4001 4003 4004 4007 4008 400A
LINEADEPROGRAMA ORG$4000 DC.B DC.W DC.B15 DC.B20,21,22 DC.BH DC.WH DC.BH,O,L,A
COP 00 0000 0F 141516 48 0048 484F4C41
76
______________________________________________________________________________ ENSAMBLADORES/RelacinArquitecturademquinasyensamblador
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
2.5.Diseoyprogramacindelensambladordedospasos Los lenguajes son sistemas de comunicacin.Unlenguajedeprogramacin consiste en todos los smbolos, caracteres y reglas de uso que permiten a las personas "comunicarse" con las computadoras.
2. Codificacin del mismo: consiste en escribir el programa en algn lenguaje de programacin; en este caso especfico en ensamblador, tomando como base la solucin propuestaenelpasoanterior. 3. Traduccin a lenguaje mquina, es lacreacindelprogramaobjeto,esto es, el programa escrito como una secuenciadecerosyunosquepueda serinterpretadoporelprocesador. 4. La prueba del programa: verificar que el programa funcione sin errores,osea,quehagaloquetiene quehacer. 5. Depuracin La ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de
Existen por lo menos varios cientos de lenguajes y dialectos de programacin diferentes. Algunos se crean para una aplicacin especial, mientras que otros son herramientas de uso general ms flexibles que son apropiadas para muchos tipos de aplicaciones. En todo caso los lenguajes de programacindebentenerinstruccionesque pertenecen a las categoras ya familiares de entrada/salida, textos, lgica clculo/manipulacin / comparacin de y
almacenamiento/recuperacin. Los lenguajes de programacin se dividen en 4 principales paradigmas: imperativo, funcional, orientado a objetos y lgico. Para la creacin de un programa es necesarioseguircincopasos: 1. Diseo del algoritmo: se plantea el problema a resolver y se propone la mejor solucin, creando diagramas esquemticos utilizados para el mejorplanteamientodelasolucin.
prueba . La correccin de una falla normalmente requiere la repeticin de los pasos comenzando desde el primerooelsegundo. Un algoritmo es una serie de pasos lgicos pararealizar una accin, programa o tarea ya que es el primer paso para realizar un programa. Los algoritmos se pueden expresar porfrmulas, diagramas de flujo, y pseudocdigos. Los algoritmos tienen ciertascaractersticasqueson:
101
nrh
Ilustracin 23 Diagrama de flujo de un Ensamblador de 2 pasos PASO 1
106
______________________________________________________________________________ ENSAMBLADORES/Diseoyprogramacindelensambladordedospasos
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
Ilustracin 24 Diagrama de flujo de un Ensamblador de 2 pasos PASO 2
107
nrh
2.5.3. FormatodeArchivoobjeto.UnarchivodesalidadeMotorolaesunarchivotipoASCII,Motorolamaneja3tipos: S19 S2 S3 paradireccionamientode16bits paradireccionamientode24bits paradireccionamientode32bits
Estos archivos son una opcional tabla de informacin, con datos especficos para ser cargadosenmemoria: Moduloderegistro esteesopcional,contieneelnombredelmodulo. encasodesernecesariounsmbolorecalculable. S0
Registrodesmbolos Registrodeencabezado Registrodedato o o o S1 S2 S3
(2bytes)dato (3bytes)dato (4bytes)dato
Registrodetrmino o o o S7 S8 S9
archivode32bitsdedireccin archivode24bitsdedireccin archivode16bitsdedireccin
Recordemosqueesteessolounformatoparaelcargadordelsimulador,parafacilitarla vidadelprogramador,lonicoexactoysinvarianzadeberserelCOPresultante.Paranuestro casodelHC12deMotorolaelformatodesalidaserunS19conlassiguientescaractersticas:LARGODELAFILA,
DATO(
REPRESENTADO
DATO(2BYTES)
DIRECCIONDEL
TIPODEDATO
eltamaoes
NUMERODE
DATOSALO
POR1BYTE
S0 S1 . S1 S9 1
4
2
ORDENDECALCULOCOMOSIGUE 3
5
120
______________________________________________________________________________ ENSAMBLADORES/Diseoyprogramacindelensambladordedospasos
checksum
variable)
ANALISIS,DISEOYPROGRAMACINDESISTEMAS 2. Mediante el algoritmo de 2 pasos, obtenga el formato de salida S19, del siguiente programaenlenguajeensamblador: 1.asm INI ORG$4000 JMPINI JMP4,Y JMP4,Y JMP40,Y ORG$4012 JMP40,Y JMPA,Y END TABSIM INI=$4003 1=31(ascii,hexadecimal)ver anexos Retornodecarro=13H
PASO1,SERESEVALOCALIDADESDEMEMORIA PASO 2: SE OBTIENE EL COP Y SE GENERA EL YSEGENERALATABSIMENSUCASO contloc Cop 4000 4003 4005 4007 400 4012 4015 4017
FORMATODESALIDAS19 contloc cop 4000 4003 4005 4007 400A 4012 4015 4017 064003 055C 056C 05E828 05E9D8 05EC INI Eje1.asm ORG$4000 JMPINI JMP4,Y JMP4,Y JMP40,Y ORG$4012 JMP40,Y JMPA,Y END
INI
Eje1.asm ORG$4000 JMPINI JMP4,Y JMP4,Y JMP40,Y ORG$4012 JMP40,Y JMPA,Y END
06hhll 05xb 05xb 05xbff 05xbff 05xb
4000 Elcdigohhllsesustituyeporelporelvalordelavariablequeseencuentradeclarada enlatabladesimbolos 4003 El cdigo xb se sustituye de acuerdo al modulo anterior (1.6.5 Modo de direccionamientoindexado)porlaformula:rr0nnnnn,donde:
123
nrh r y 0
r 1 5
0
n 1
n 1
n 4 1 C
n 0
n 0
4005
El cdigo xb se sustituye de acuerdo al modulo anterior (1.6.5 Modo de direccionamientoindexado)porlaformula:rr1pnnnn,dondep=posicindelsignopre=0, mientras que el signo del registro (para cuestiones de clculo se toma para el desplazamiento: r y 0
r 1
1 6
p 0
n 4 1
n 1
n 0 C
n 0
4007
Deigualmaneraquelasanteriores:xbsesustituyepor111rr0zs,dondezeseltamaodel operador,siendo0cuandosutamaoesde1byte,ysrepresentaelsignodeloperador, siendos=0cuandoesteespositivo,porlotantoeloperador40eslavariableff 1
1
1 E
r y 0
r 1
0
z 1BYTE 0 8
S POSITIVO 0
4012
Eselmismoformatoanterior,soloqueaqueloperadoresnegativoasiquenosresultara s=1,porlotantoelCOPresultantepara40,yseriaE9D8.
400D
Ahorael1eroperadoreselregistrointernoA,porlotantolescomosigue: 1
1
1 E
r y 0
r 1
1
a 0 C
a A 0
124
______________________________________________________________________________ ENSAMBLADORES/EJEMPLOS
ANALISIS,DISEOYPROGRAMACINDESISTEMAS FORMATODESALIDAS191.s19 S0 S1 S1 S9 04 0D 05 03 0000 31 4000 0640003055C056C05E828 4012 05E9D805EC 4017 CA 83 A5
125
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
3. CARGADORLIGADORObjetivo:ENTENDERELFUNCIONAMIENTODELOSESQUEMASMASIMPORTANTESDELACARGA YLIGADEMODULOSOBJETO.
3.1.ClasesdecargadorEninformtica,uncargadoreslapartede un sistema operativo que es responsable de cargarprogramasenmemoria.Elcargadores usualmente unapartedelncleodelsistema operativo y es cargado al iniciar el sistema y permaneceenmemoriahastaqueelsistema es reiniciado o apagado. Algunos sistemas operativos que tienen un ncleo paginable pueden tener el cargador en una parte paginabledelamemoria,entoncesavecesel cargadorintercambiadememoria. Los sistemas operativos que soportan la carga de programas tienen cargadores. Algunos sistemas operativos empotrados de computadoras altamente especializadas compensar las variaciones en la cual la memoriadisponibledelaaplicacinempieza. Lascomputadorasquenecesitandelos cargadores relocalizables son aquellos en los cualeslospunterossondireccionesabsolutas en vez de compensaciones de direcciones basedelprograma.Unejemplomuyconocido estenlosmainframesIMBSistema360ysus descendientes, incluyendo la serie de los sistemasZ9.Losligadoresdinmicossonotro tipo de cargador que carga y liga libreras dinmicas(comodll's). Muchoscargadorespermitenalusuario especificar opciones que modificar el procesamiento estndar descrito. Algunas veces existe un archivo independiente de entrada al cargador que contiene esas proposiciones de control o esas mismas proposiciones tambin pueden estar
corren un nico programa y no existen capacidades de carga de programas, por lo tanto no usan cargadores. Ejemplos de estos sistemas embebidos se encuentran en equipos de audio para automviles. En los sistemas Unix, el cargador es el manejador paralallamadadelsistemaexecve().Algunas computadoras necesitan cargadores
intercaladas en el flujo primario de entrada entre los programas objeto. En ciertos sistemas el programador puede incluso introducir proposiciones de control del cargador en el programa fuente, y el
relocalizables, los cuales ajustan direcciones dememoria(punteros)enunejecutablepara
137
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
3.5.DiseoyprogramacindeunCargadorAlgoritmodecargador 1. colocarunprogramaobjetoenlamemoria 2. Iniciarsuejecucin. 3. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalizacin de programas, su operacin es simple pues todas las funciones se realizanenunsolopaso. 4. Se revisa el registro de encabezamiento para comprobar si se ha presentado el programacorrectoparalacarga(entrandoenlamemoriadisponible). 5. A medida que lee cada registro de texto, el cdigo objeto que contiene pasa a direccindelamemoriaindicada. 6. Cuandoseencuentraelregistrodefin,elcargadorsaltaaladireccinespecificada parainiciarlaejecucindelprogramacargado. 3.5.1. Cargadorabsoluto(ejemplo) Hay dos aspectos del programa cargador que requieren una mayor
contieneladireccindeunbytedememoria. Inicialmente,estavariableseasignaigualala constante DIR_CARGA.En cada iteracin del lazo while, a la posicin de memoria identificada por dir_byte se le asigna el siguientebytedelarchivoejecutable;despus seincrementaenunoelvalordedir_byte.De esta manera, el contenido del archivo ejecutablesecopiaaposicionesconsecutivas de la memoria a partir de DIR_CARGA.
explicacin: la variable dir_byte y el campo dir_ini. El proceso de carga absoluta del siguiente cargador es: La variable dir_byte quesedeclaracomoapuntadorauncarcter o sea es la direccin de un carcter. Es razonable suponer que se almacena un carcter usando un byte de memoria y que, por consiguiente, la variable dir_byte
/***definirlaestructuradelregistroencabezado***/ structenc_ejec {unsignedintdir_ini; /*lasotraspartesdelencabezadodelarchivoejecutable*/
159
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
4 MACROPROCESADORES Objetivo:Entenderelfuncionamientodelasdiversasmodalidadesdelmacroprocesamiento. Conelfindeevitaralprogramadorla tediosa repeticin de partes idnticas de un programa,losensambladoresycompiladores cuentan con macro procesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para utilizar una macro, primero hay que declararla. En la declaracin se estableceelnombrequeseledaralamacro y el conjunto de instrucciones que representar. El programador escribir el nombre delamacroencadaunodeloslugaresdonde se requiera la aplicacin de las instrucciones por ella representadas. La declaracin se realiza una sola vez, pero la utilizacin o invocacin a la macro (macrollamada) puede hacerse cuantas veces sea necesario. La utilizacin de macros posibilita la reduccin del tamao del cdigo fuente, aunque el cdigoobjetotiendeasermayorquecuando seutilizanfunciones. El Macroensamblador es un Es tan comn el empleo de macroinstrucciones se les considera como una extensin de los lenguajes. De manera similar se considera al procesador de macroinstruccionesomacroprocesadorcomo unaextensindelensambladorocompilador utilizado. El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macro llamada, el macro procesador har la sustitucin por las instrucciones correspondientes. A este puede hacer un ensamblador, y adems proporcionan una serie de Directivas para definir y ejecutar macro instrucciones (o simplemente, Macros). Cuando ejecutamos a una "macro", sta se expande al cuerpo que hayamosdefinido.
proceso de sustitucin se le denomina expansin de la macro. El macroprocesador elaboratablasparaelmanejodelasmacros: Tabladenombresdemacros:consisteen losnombresdelasmacrosyunndiceque le permite localizar la definicin de la
ensamblador modular, descendiente de los ensambladores bsicos. Hacen todo lo que
171
ANALISIS,DISEOYPROGRAMACINDESISTEMAS ReservadelocalidadesdememoriaconunaMacro M1 ET1 ReservadelocalidadesdememoriaconunaRutina ET1 M1 FIN como se puede apreciar, el tamao del COP resultante es mayor el de la Macro que el de la Rutina,asuvezlaMacrotienemenortiempodeejecucin. ORG$4000 JSRM1 JMPET1 JSRM1 JMPFIN LDAA[1,X] LDAA[2,X] LDAA[3,X] LDAA[4,X] RTS END 4000 4003 4006 4009 400C 4010 4014 4018 401C 401D 16hhll 06hhll 16hhll 06hhll 05xbeeff 05xbeeff 05xbeeff 05xbeeff 3D ET1 M1 FIN ORG$4000 JSRM1 JMPET1 JSRM1 JMPFIN LDAA[1,X] LDAA[2,X] LDAA[3,X] LDAA[4,X] RTS END MACRO LDAA[1,X] LDAA[2,X] LDAA[3,X] LDAA[4,X] ENDM ORG$4000 M1 JMPET1 M1 END 4000 4010 4013 4023 06hhll M1 ET1 MACRO LDAA[1,X] LDAA[2,X] LDAA[3,X] LDAA[4,X] ENDM ORG$4000 M1 JMPET1 M1 END
1ERPASO
175
nrh
4.1.Importanciatericademacroexpresionesyusosdeunmacro procesador Un macroinstruccin (abreviado Elprocesadordemacros,comopuede verse,nointentaningnanlisisnitraduccin a cdigo objeto del programa fuente, ms bien parece que el procesador hace que aumente el tamao de ste. Esto es un elemento clave para el programador,pues el uso indiscriminado de macros puede hacer queeltamaodelcdigoobjetoseaenorme ypocoprctico,alcontrariodelasllamadasa subrutinas. Claro que tambin se paga un precio alto por el empleo de las llamadas, pues se pierdetiempoimportanteenlagestindela pila, donde usualmente se pasan los parmetros. El macroprocesador requiere tres estructuras de datos para su exitosa operacin. La tabla de nombres de macros (TABNOM). Latabladecdigodemacros(TABDEF). Latabladeargumentos(TABARG). Ah se guarda toda la informacin pertinente a las macros, mientras el ensamblador analiza la expansin y hace la
frecuentementecomomacro),noesmsque una conveniencia notaciones para el
programador. Una macro representa un grupo de proposiciones utilizadas
comnmenteenellenguajedeprogramacin fuente, para el caso, ensamblador. El procesador de macros reemplaza cada macroinstruccin correspondiente de con el grupo del
proposiciones
lenguaje fuente, lo que se denomina expansindemacros.Portodoloanterior,las macroinstrucciones permiten al programador escribir una versin abreviada de un programa, dejando que el procesador de macros maneje los detalles internos. Las funciones bsicas de un procesador de macrosson: Sustitucin de lneas de cdigo por una referenciasimblica. Calcular las direcciones efectivas de las referencias. Expansin de las referencias en un archivointermedio.
176
______________________________________________________________________________ MACROPROCESADORES/Importanciatericademacroexpresionesyusosdeunmacro procesador
ANALISIS,DISEOYPROGRAMACINDESISTEMAS 4.3.1. Ejemplos 1. MEDIANTEELALGORITMODE2PASOS,OBENGAELFORMATODESALIDADELSIGUIENTE PROGRAMA EN LENGUAJE ENSAMBLADOR, TOME EN CUENTA QUE EL RETORNO DE CARROES13H. M1 MACRO TABSIM M1 MACRO LDAA[1,X] LDAA[1,X] ET1=4010 LDAA[2,X] LDAA[2,X] LDAA[3,X] LDAA[3,X] TABNOM LDAA[4,X] LDAA[4,X] M1 ENDM ENDM ORG$4000 ORG$4000 TABDEF M1 4000 M1 A6E30001 ET1 JMPET1 4010 06hhll ET1 JMPET1 A6E30002 M1 4013 M1 A6E30003 END 4023 END A6E30004 .Recuerdaelconceptodeexpansin?LaMACRO,seexpansionaysevereflejadaenelformato desalidaS19. PD.Heomitidoelnombredelarchivo,porcuestionesprcticaspero,definitivamenteesundato requerido. S0 S1 13 4000 A6E30001A6E30002A6E30003A6E30004 7E S1 13 4010 064010A6E30001A6E30002A6E30003A6 FF S1 06 4020 E30004 B2 S9 03 4023 D9 1ERPASO
183
nrh 2. MEDIANTEELALGORITMODE2PASOS,OBENGAELFORMATODESALIDADELSIGUIENTE PROGRAMA EN LENGUAJE ENSAMBLADOR, TOME EN CUENTA QUE EL RETORNO DE CARROES13H.ESTEEJERCICIODENOTAELUSODELADIRECTIVALOCAL M1 MACRO M1 MACRO TABSIM E1 LOCAL E1 LOCAL E1=4000,400A, JMPE1 JMPE1 E2=4008 JMPE2 JMPE2 TABNOM LDAA#1 LDAA#1 M1 ENDM ENDM ORG$4000 ORG$4000 TABDEF M1 4000 M1 06hhll E2 LDAA#2 4008 86ii E2 LDAA#2 06hhll M1 400A M1 86ii END 4012 END .Recuerdaelconceptodeexpansin?LaMACRO,seexpansionaysevereflejadaenelformato desalidaS19. PD.Heomitidoelnombredelarchivo,porcuestionesprcticaspero,definitivamenteesundato requerido. S0 S1 13 4000 0640000640088601860206400A064008 6B S1 05 4010 8601 23 S9 03 4012 AA NOTA: La1erparte(0640000640088601)perteneceala1erllamadaalamacro(laqueseencuentra enlalocalidad4000,la2dallamadaalamacroesaquelcdigomostradoenletracursiva(06400A 0640088601). 1ERPASO
184
______________________________________________________________________________ MACROPROCESADORES/Incorporacindelprocesadordemacrosalensamblador
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
5. ANEXOS5.1.CODIGOASCII ElcdigoASCII(acrnimoinglsdeAmericanStandardCodeforInformationInterchange Cdigo Estadounidense Estndar para el Intercambio de Informacin), pronunciado generalmente[ski],esuncdigode caracteresbasadoenelalfabetolatinotalcomose usaen inglsmodernoyenotraslenguasoccidentales.Fuecreadoen1963porelComitEstadounidense de Estndares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estndares Nacionales, o ANSI) como una refundicin o evolucin de los conjuntos de cdigos utilizados entoncesentelegrafa.Mstarde,en1967,seincluyeronlasminsculas,yseredefinieronalgunos cdigosdecontrolparaformarelcdigoconocidocomoUSASCII. El cdigo ASCII define una relacin entre caracteres especficos y secuencias de bits; adems de reservar unos cuantos cdigos de control para el procesador de textos, y no define ningnmecanismoparadescribirlaestructuraolaaparienciadeltextoenundocumento;estos asuntosestnespecificadosporotroslenguajescomoloslenguajesdeetiquetas.
ASCII 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
Smbolo NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
ASCII 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Hex 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
Smbolo DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
ASCII 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
Hex 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
Smbolo (espacio) ! " # $ % & ' ( ) * + , . /
ASCII 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Hex 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
Smbolo 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
ASCII 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
Hex 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
Smbolo @ A B C D E F G H I J K L M N O
ASCII 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
Hex 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
Smbolo P Q R S T U V W X Y Z [ \ ] ^ _
ASCII 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
Smbolo ` a b c d e f g h i j k l m n o
ASCII 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
Hex 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
Smbolo p q r s t u v w x y z { | } ~
189
nrhIlustracin 29 Tabla ASCII
5.2.SECCIONESDELMANUALDEREFERENCIADELHC125.2.1. MODELODEPROGRAMACION El modelo de programacin de cualquier dispositivo lo obtenemos del mismo proveedor, quien noslohacesaberpormediodesumanualdereferencia.
190
______________________________________________________________________________ ANEXOS/SECCIONESDELMANUALDEREFERENCIADELHC12
ANALISIS,DISEOYPROGRAMACINDESISTEMAS 5.2.2. MODOSDEDIRECCIONAMIENTODELHC12
Ilustracin 30 Tabla de modos de direccionamiento del HC12
191
nrh 5.2.3. TABLADEOPERACIONESINDEXADAS
Ilustracin 31 Formulario indexados
192
______________________________________________________________________________ ANEXOS/SECCIONESDELMANUALDEREFERENCIADELHC12
ANALISIS,DISEOYPROGRAMACINDESISTEMAS 5.2.4. HOJADEDATOSDEINSTRUCCIN
5.2.5. INSTRUCCINABREVIADA
193
nrh
5.4.TABLADEILUSTRACIONESIlustracin1Abaco______________________________________________________________________ 11 Ilustracin2MaquinadePascal ___________________________________________________________ 12 _ Ilustracin3Maquinadiferencial___________________________________________________________ 13 Ilustracin4Tarjetasperforadas___________________________________________________________ 13 Ilustracin5MARKI_____________________________________________________________________ 14 Ilustracin6ENIAC______________________________________________________________________ 14 Ilustracin7JOHNNVONNEUMANN _______________________________________________________ 15 Ilustracin8EDVAC _____________________________________________________________________ 15 Ilustracin9Abstraccindelacomputadora _________________________________________________ 20 _ Ilustracin10DiagramaabloquesdeunCPUsimple___________________________________________ 27 Ilustracin11Memoria __________________________________________________________________ 29 Ilustracin12EsquemadeArquitecturaVonNeumann _________________________________________ 34 Ilustracin13EsquemadelaArquitecturaHarvard ____________________________________________ 35 Ilustracin14ModosdedireccionamientoaplicablesalHC12____________________________________ 50 Ilustracin15Formularioindexados ________________________________________________________ 57 Ilustracin16Registrodesegmento ________________________________________________________ 82 Ilustracin17Jerarquadememorias _______________________________________________________ 97 Ilustracin18Asignacindedireccionesencompilacin ________________________________________ 97 Ilustracin19Asignacindedireccionesencarga______________________________________________ 98 Ilustracin20Asignacindedireccinenejecucin ____________________________________________ 98 Ilustracin21Espaciosdememorialgicosyfsicos____________________________________________ 99 Ilustracin22Solapamientoenensamblador________________________________________________ 100 Ilustracin23DiagramadeflujodeunEnsambladorde2pasosPASO1___________________________ 106 Ilustracin24DiagramadeflujodeunEnsambladorde2pasosPASO2___________________________ 107 Ilustracin25Ligador___________________________________________________________________ 151 Ilustracin26Editordeligado____________________________________________________________ 152 Ilustracin27Problemadeligadeobjetos __________________________________________________ 154 Ilustracin28Cargadoyllamadadeunasubrutina(ligadodinmico)_____________________________ 157 Ilustracin29TablaASCII________________________________________________________________ 190 Ilustracin30TablademodosdedireccionamientodelHC12 ___________________________________ 191 Ilustracin31Formularioindexados _______________________________________________________ 192
196
______________________________________________________________________________ ANEXOS/TABLADEILUSTRACIONES
ANALISIS,DISEOYPROGRAMACINDESISTEMAS
6. REFERENCIASBibliografa JOHNDONOVAN MOTOROLA.COM/SEMICONDUCTORS Aho,Sethi&Ullman,Ed.Addison, iberoamericana Ed.Cambridge MODERN COMPILER IMPLEMENTATION IN Appel,AndrewW. CBasictechniques TheIntelMicroprocessors8086/8088, BREY,BARRYB.6a.edicin,NewJersey, 80186/80188,80286,80386,80486,Pentium, Merril,2002. andPentiumProProcessorArchitecture, Programming,andInterfacing Microcomputersystem BYRD,JosephS.;Pettus,RobertO.New Jersey,PrenticeHall,1993 IntroductiontoEmbeddedMicrocomputer VALVANO,JonathanW.Motorola Systems 6811/6812Simulations,USA,Thomson, 2003 Manualestcnicosdemicrocomputadores comerciales,HC11,PICs,HC08,etc MicroprocesadoresavanzadosdeIntel BarryBrey,PrenticeHall SoftwaredeSistema Beck,Leland,.AddisonWesley DiseodeProgramacindeSistemas NormaRamrezHernndez2008 www.nramirez.com SYSTEMPROGRAMMING CPU12REFERENCEMANUAL COMPILADORES:Principios,tcnicasy herramientas
197