Programacion en Assembler

download Programacion en Assembler

of 16

Transcript of Programacion en Assembler

  • 7/24/2019 Programacion en Assembler

    1/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 1

    1. Introduccin.La descripcin de un computador digital puede efectuarse mediante la consideracin dediferentes niveles de abstraccin.

    La siguiente figura ilustra diversas componentes abstractas:

    Todas las partes estn sometidos a rpidos cambios debidos a la tecnologa, los ambientesde programacin, las aplicaciones, los sistemas operativos.

    1.1. Repertorio de Instrucciones.

    Se destaca el repertorio de instrucciones, ubicado en un nivel medio, siendo la interfaz entrela zona superior que podramos denominar la parte software, y la parte inferior que sueledenominarse hardware.

    El repertorio de instrucciones establece la interfaz software-hardware.

    Esta interfaz es fundamental en el diseo de un computador.

    Firmware

    Sistema Operativo

    Aplicaciones

    Repertorio deInstrucciones

    Memoria Sistema entrada/salida

    Camino de datos y Control

    Diseo digital

    Diseo CircuitosL icos

    Transistores

    Compilador

    Assembler

  • 7/24/2019 Programacion en Assembler

    2/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 2

    El repertorio de instrucciones es el enfoque o visin que tienen de un computador losDiseadores de Compiladores y Sistemas Operativos.La arquitectura del repertorio establece los atributos del sistema computacional vistos por el

    programador.

    La eleccin de la arquitectura del repertorio se refleja en: La organizacin del almacenamiento:

    Tipos de Datos Estructuras de Datos Codificacin y Representaciones.

    Repertorio de Instrucciones Formatos de Instrucciones Modos de direccionamiento y formas de accesar a los datos y a las instrucciones Tratamiento de Excepciones.

    1.2. Tipos de repertorios.

    Se clasifican de acuerdo a cmo se especifican los operandos de entrada y de salida.

    Los ejemplos siguientes se ilustran con la operacin suma. Obviamente en los diferentestipos de repertorios existen ms instrucciones que las aritmticas.

    1.2.1. Mquinas de Stack.

    Se denomina de 0 direcciones. Ya que slo se especifica la operacin a realizar con losdatos, los cuales se encuentran ubicados en posiciones fijas de la memoria.

    addLa cual se interpreta segn:

    M[tope-1] M[tope-1] + M[tope]; tope--;

    Donde M[dir] corresponde al valor almacenado en la direccin dir de la memoria.Se requiere especificar slo la operacin a realizar. Se omiten los campos de los operandos deentrada y salida. Se asume que los operandos estn en posiciones fijas de la memoria, y por lo tantono se necesitan bits para especificarlos.

    operando 1operando 2...

    Se asume que las direcciones aumentan hacia arriba en el diagrama.

    tope de la pilaMemoria

  • 7/24/2019 Programacion en Assembler

    3/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 3

    1.2.2. Mquinas con acumulador.

    Se denominan tambin de 1 direccin. Se especifica una direccin de un operando, el otro

    se encuentra en un registro fijo denominado acumulador. El resultado se deposita en elacumulador.Entonces, la instruccin:

    add Ase interpreta segn:

    acc acc + M[A]Ntese que A, es el smbolo de una direccin.

    Una variante es especificar una direccin y un valor constante.Una direccin con offset:

    add x(A)

    Cuya accin es:acc acc + M[A + x]

    Por defecto el resultado y uno de los operandos de entrada se encuentra en un registroespecial, denominado acumulador.

    M[A]...M[A + x]

    Por lo tanto slo se requiere especificar una direccin, A en este caso.

    1.2.3. Mquinas de Registro-Memoria.

    Se denominan de 2 direcciones. Los operandos pueden ser direcciones de memoria oregistros. Se denomina direccin efectiva aqulla donde reside el valor que ser procesado.El operando del resultado es uno de los de entrada, ya que se tienen dos direcciones:

    add opA, opBQue efecta:

    opA opA + opB

    Si se especifica el lugar en donde depositar el resultado, tenemos tres direcciones:

    add opA, opB, opCQue realiza:

    opA opB + opC

    Aoperando 1

    x

  • 7/24/2019 Programacion en Assembler

    4/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 4

    En algunas implementaciones, se interpreta el orden de los operandos as:opC opA + opB.

    Sea por ejemplo el operando A un registro (R1) y el operando B una direccin de lamemoria (dir2), entonces:

    add R1, dir2

    Se interpreta: R1 = R1 + M[dir2]

    Si los dos operandos son direcciones de celdas de memoria, la instruccin:

    add dir1, dir2

    se interpreta: M[dir1] = M[dir1] + M[dir2]

    1.2.4. Mquinas de Carga Almacenamiento. (Load-Store)

    Se especifican 3 direcciones.add Ra, Rb, Rc RaRb + Rcload Ra, Rb Ra M[Rb]store Ra, Rb M[Rb] Ra

    Las operaciones se efectan solamente entre registros. La nica forma de accesar lamemoria es va registros, para ello se dispone de las instrucciones load y store.

    1.3. Comparacin de las arquitecturas.

    Las diferentes arquitecturas de repertorios suelen compararse, observando:

    El nmero de bytes por instruccin, el nmero de instrucciones que se requieren paraefectuar una accin determinada, el nmero de ciclos de reloj por instruccin.

    Por ejemplo, para realizar C = A + B; donde A, B y C son variables en memoria, serequieren las siguientes secuencias de instrucciones, dependiendo del tipo de repertorio:

    a) Mquina de stack:

    Push A ; tope++, M[tope] = M[A]Push B ; tope++, M[tope] = M[B]Add ; M[tope-1] += M[tope], tope--Pop C ; M[C] = M[tope], tope

    Donde push y pop son instrucciones del repertorio de una mquina de stack, paramovilizar datos desde la memoria hacia el tope del stack y viceversa.

  • 7/24/2019 Programacion en Assembler

    5/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 5

    La variable tope se emplea aqu como un puntero (o sea almacena una direccin) queapunta a la ltima direccin ocupada en el stack.

    b)

    Mquina con acumulador:Load A ; acc = M[A]Add B ; acc = acc + M[B]Store C ; M[C] = acc

    Donde load y store son instrucciones para mover datos entre la memoria y elacumulador y viceversa.

    c) Mquina con operandos registro-memoriaLoad R1, A ; R1 = M[A]Add R1, B ; R1 = R1 + M[B]

    Store R1, C ; M[C] = R1

    d) Mquina con registros carga-almacenamientoLoad R1, A ; R1 = M[A]Load R2, B ; R2 = M[B]Add R3, R1, R2 ; R3 = R1 + R2Store R3, C ; M[C] = R3

    1.4. Instrucciones tpicas de un repertorio.

    Se enumeran operaciones tpicas que se encuentran en casi todos los repertorios deinstrucciones desde los aos 60. No todas ellas estn presentes en un repertoriodeterminado. En caso de no estarlo pueden implementarse con las primitivas existentes.Los ensambladores con capacidad de crear macros, permiten que el propio programadorcree secuencias especiales, que le permitan programar con un conjunto ampliado deinstrucciones.

    Se agrupan por tipos

    Movimientos de Datos:Cargar registro desde la memoria.

    Almacenar registro en la memoria.Movimiento entre celdas de memoria.Movimiento entre registros.Desde registro hacia dispositivo de salida (output).Desde dispositivo de entrada hacia registro (input).Push, pop. Operaciones en stack (pila).

  • 7/24/2019 Programacion en Assembler

    6/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 6

    Aritmticas:Suma, resta, multiplicacin, divisin. En binario, con y sin signo.Suma, resta, multiplicacin, divisin. En BCD, con y sin signo.

    Suma, resta, multiplicacin, divisin. En punto flotante (reales binarios), con y sinsigno.Suma, resta, multiplicacin, divisin de precisin extendida. En binario, con y sinsigno.

    Corrimientos:Aritmticos hacia la izquierda y derecha.Lgicos hacia la izquierda y derecha.Rotaciones hacia la izquierda y derecha.

    Control de Secuencia de ejecucin:

    Comparaciones.Saltos condicionales e incondicionales.Bifurcaciones condicionales.

    Enlace a Subrutinas:Llamado y retorno de subrutinas.

    Interrupciones:Programacin del sistema de prioridades, habilitacin y deshabilitacin de lasinterrupciones, retorno de interrupciones enmascaradas y no enmascaradas.

    Sincronizacin:Test and set. Operacin para manejar procesos.

    Control del procesador:Halt, manejo de memoria virtual y cach, llamados al sistema, entrada y salida demodo supervisor.

    String:Traducir, buscar, etc.

    Grficas:Operaciones para el manejo grfico.

  • 7/24/2019 Programacion en Assembler

    7/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 7

    1.5. Estadsticas de uso de instrucciones.

    Se muestra a continuacin una estadstica de la frecuencia de uso de instrucciones de unprocesador Intel (8086), confeccionada contando las instrucciones que aparecen en unprograma tipo, empleando slo operaciones con enteros.

    Existen programas especiales para efectuar estas estadsticas.

    Ntese que son dominantes las frecuencias de las instrucciones simples. El conjuntomostrado, ilustra que slo el 5 % de las instrucciones no pertenecen a las mostradas.

    load 22 %

    bifurcacin condicional 20 %compare 16 %store 12 %add 8 %and 6 %sub 5 %movimiento entre registros 4 %llamados a subrutinas 1 %retornos de subrutinas 1 %

    La tabla anterior, justifica empricamente los repertorios reducidos de instrucciones (RISC).

    1.6. Modos de direccionamiento.

    Se describen resumidamente, diferentes modos de direccionamiento. No todos estnpresentes en los diferentes repertorios

    Modo Ejemplo SignificadoRegistro Add R4, R3 R4R4 + R3Los operandos se encuentran en registros.

    Inmediato Add R4, #3 R4R4 + 3Un campo contiene una constante, generalmente un nmero con signo. Es decir, un nmeroque est contenido en la instruccin.

    Desplazamiento Add R4, 100(R1) R4 R4 + M[100 + R1]Permite direccionar un elemento de una estructura (struct en C, record en Pascal) cuyoinicio est apuntado por el registro R1. El desplazamiento (offset) es respecto a un registrobase.Ntese que la direccin efectiva es 100 + R1.

  • 7/24/2019 Programacion en Assembler

    8/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 8

    En el caso de instrucciones de salto, suele efectuarse saltos relativos al registro PC,empleando el valor inmediato como desplazamiento.

    Registro indirecto Add R4, (R1) R4 R4 + M[R1]Permite direccionar arreglos si en R1 se mantiene la direccin de la componente. Si sedesea accesar otra componente debe cambiarse el contenido del registro R1.

    Se denomina indirecto ya que el dato no se encuentra en R1 sino en la direccin apuntadapor R1. El registro R1 es un puntero, ya que es una variable que contiene una direccin.

    Indice / Base Add R3, (R1 + R2) R3 R3 + M[R1 + R2]Es el direccionamiento que permite tratar en forma flexible arreglos y estructuras. En unregistro base se coloca la direccin inicial del elemento. En el registro ndice se almacena el

    desplazamiento de la componente, relativo a la base.

    Directo o absoluto Add R1, (1001) R1R1 + M[1001]Un campo contiene una direccin de memoria.

    Memoria indirecto Add R1, @(R3) R1 R1+ M[M[R3]]La direccin efectiva se encuentra en M[R3].

    Auto-incremento Add R1, (R2)+ R1R1 + M[R2]; R2 R2+dSe efectan dos acciones, la operacin de sumar, y el incremento del registro R2 en unacierta cantidad fija d.

    Auto-decremento Add R1,(R2) R2 R2 d; R1 R1+ M[R2]

    Escalado Add R1, 100(R2)[R3] R1R1+ M[100+R2+R3*d]

    Uso de Registros.Todas las mquinas modernas usan mltiples registros. Esto debido a que los registros sonms rpidos que la memoria principal y que la memoria cach; adems permiten una mejorcompilacin de expresiones (es decir la traduccin a una secuencia de instrucciones de

    mquina) que una evaluacin en una pila.

    Su principal ventaja es que pueden mantener las variables de uso frecuente, rpidamenteaccesibles, reduciendo los accesos a memoria.

    En el lenguaje C existe la posibilidad de indicar al compilador cules variables deben seralmacenadas en registros, agregando la palabra registera la lista de variables.

  • 7/24/2019 Programacion en Assembler

    9/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 9

    Otra ventaja importante en los mecanismos de direccionamiento es que se requieren menosbits para especificar registros que para especificar direcciones de memoria.

    Debido a tcnicas de segmentacin se suelen emplear repertorios tipo carga-almacenamiento, como se ver ms adelante.

    1.7. Estadstica de uso de modos de direccionamiento.

    A travs de mediciones, en mquinas que tienen todos los modos de direccionamiento, ycon diversos programas, se lleg a que:

    un 42% de los modos usados son con offset,un 33% inmediatos,un 13% son con registro indirecto,un 12% de otros modos.

    Es notable que el 88 % de los modos de direccionamiento empleados correspondan amodos con desplazamiento, inmediatos y con registro indirecto. Esto implica que encualquier diseo actual dichos modos deben estar presentes.

    Ntese que con desplazamiento cero se logra el direccionamiento de registro indirecto.Siempre a travs de mediciones se concluy que los tamaos de los valores inmediatosusados en un 50% al 60% de los casos puede lograrse con 8 bits (nmeros desde 0 hasta256, o bien entre 128 y +127); y que con 16 bits para el campo inmediato se puedenefectuar hasta un 80% de los casos de direccionamiento inmediato.

    Tambin por mediciones, se determin que los desplazamientos, empleando 16 bitspermiten cumplir el 99% de los casos. Slo un 1 % de las referencias requieren ms de 16bits.

    1.8. Organizacin de mquina.

    Desde un punto de vista de los diseadores del hardware el estudio de un computadordescribe la forma en que estn organizados los flujos de datos, la estructura del control y laejecucin de microinstrucciones. Tambin incluye el diseo lgico (usando componentesdigitales) y la implementacin fsica.

    Desde un punto de vista del diseador lgico, interesan: Las capacidades y comportamiento caracterstico de las principales unidades

    funcionales. (por ejemplo: Registros, ALU, Shifters, Unidad de control ...) Las formas en que esas componentes estn interconectadas. Los flujos de informacin entre las componentes. Medios lgicos por los cuales se controlan los flujos de datos. Cmo las unidades funcionales (o recursos) realizan el repertorio de instrucciones. Lenguaje de transferencia entreregistros.

  • 7/24/2019 Programacion en Assembler

    10/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 10

    1.9. Partes de un computador.

    Todos los computadores consisten de 5 partes: Procesador: (1) camino de datos y (2) control (3) Memoria (4) Dispositivos de entrada y (5) Dispositivos de salida

    No todas las memorias tienen la misma construccin y estructura Cach: es una memoria rpida en tiempo de acceso, pequea en capacidad, tiene

    costo elevado y est ubicada cerca del procesador Memoria principal: es ms lenta y de mayor volumen en capacidad de

    almacenamiento(es ms barata que la anterior).

    Los dispositivos de Entrada-Salida tienen diversas organizaciones, ya que existen en un

    amplio rango de velocidades (red, pantalla, discos, mouse, teclado, etc.) y en un ampliorango de requerimientos (velocidades, costos, estandarizaciones, etc.)

    1.10. Niveles de representacin.

    Precisaremos ahora el enfoque que emplearemos para comprender el funcionamiento y losprincipios de diseo de un computador. Nos concentraremos primero en un nivelinmediatamente superior al del repertorio de instrucciones, que corresponde a software,para ir gradualmente descendiendo en el nivel de abstraccin.

    Cada nivel tiene un lenguaje asociado. A medida que se desciende aparecen nuevos nivelesde detalle, que explican en un nivel ms bajo lo que se efecta en el nivel alto. Estos dospuntos de vista se refuerzan entre s y permiten entender lo abstracto a travs de situacionescada vez ms concretas.

    En cualquier lenguaje existe un aspecto lxico (vocabulario, las palabras que se puedenescribir); un aspecto sintctico (reglas gramaticales, para escribir correctamente); yfinalmente un aspecto semntico(que asigna un significado a las construcciones).

    Un lenguaje de programacin permite escribir programas que instruyen al computador

    sobre el conjunto organizado de acciones(algoritmo) que deben efectuarse sobre los datos.

  • 7/24/2019 Programacion en Assembler

    11/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 11

    Las acciones y los datos deben describirse con rigurosidad para que puedan sercorrectamente interpretados por un autmata.

    Decidimos comenzar en el nivel del lenguaje de programacin C, para ir descendiendo. Losniveles ms altos se alejan bastante del objetivo de lograr una explicacin delfuncionamiento de un procesador.

    Estudiaremos primero la forma de describir datos y constantes en C y en assembler. En lamedida que aparezcan conceptos, se los ir describiendo. Luego estudiaremos las accionesy el diseo de funciones.

    1.10.1. Programacin en lenguaje C.

    Se emplea el lenguaje C, ya que ste fue diseado considerando que sus elementos pudieran

    ser eficientemente traducidos a assembler.

    La realizacin del recorrido que efectuaremos tambin permitir aprender con mayorprofundidad la programacin en C, ya que veremos cmo se desglosa cada instruccin de Cmediante una o varias instrucciones de un determinado assembler.

    1.10.2. Programacin assembler.

    Comprender el funcionamiento de un computador puede lograrse conociendo lasoperaciones ste que puede realizar.

    La descripcin de las acciones que un procesador realiza y los datos que puede manipularpueden explicarse mediante instrucciones assembler.

    El lenguaje assembler es la representacin simblica de la codificacin binaria de lasinstrucciones o lenguaje de mquina.

    El procesador decodifica los campos binarios y ejecuta la secuencia de transferencias querealizan las acciones que interpretan la instruccin.

    Lenguaje C

    Lenguaje de mquina

    Assembler MIPS

  • 7/24/2019 Programacion en Assembler

    12/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 12

    En assembler se emplean smbolos para los cdigos binarios: del tipo de instruccin, de losregistros, de los valores constantes. Tambin emplea smbolos para especificar direcciones

    de memoria donde pueden estar almacenadas instrucciones o datos.

    Una instruccin requiere especificar las siguientes informaciones: Dnde se encuentran losoperandos de entrada, cul es la operacin a realizar, dnde se depositar el resultado y cules la prxima instruccin a realizar. Cada uno de estos datos demandar una cantidad deinformacin, que suele medirse en bits.

    Por ejemplo: si los datos estn en un arreglo de 32 registros, se necesitarn 5 bits paraespecificar el nmero de un registro; si la memoria tiene 1024 palabras (1 K[palabras]), laespecificacin de una direccin de una palabra requiere de 10 bits; si la memoria tiene 1M[palabras], una direccin requiere ahora 20 bits. Si existen 16 tipos de operaciones, se

    requieren 4 bits para especificar la operacin.

    La forma especfica de encontrar los operandos se fue flexibilizando y complicando atravs del tiempo, ya que empleando algunos bits adicionales puede especificarse, porejemplo, que la direccin de la memoria est en un registro, o que el operando se encuentrasumando el contenido de dos registros. Las diversas formas de interpretar la informacinpara obtener los operandos se tratar, ms adelante, bajo el ttulo modos dedireccionamiento.

    Cada una de estas informaciones puede verse como un campo de bits:

    Se ha ilustrado los campos de una instruccin con dos operandos de entrada y un resultado.

    Si la instruccin es de salto incondicional, los campos de entrada y salida no estarnpresentes, pero se tendr un campo para especificar la direccin de salto.

    Si la instruccin es una bifurcacin (por ejemplo: salte a tal direccin si el operando uno yel operando dos son iguales) no se requiere el campo de resultado, pero ste se reemplazapor la direccin de salto.

    Algunas instrucciones permiten que uno de los campos sea una constante. Se dice que estoscampos son inmediatos (el valor viene inmediatamente en la instruccin). Si el dato est enun registro, se requiere la operacin adicional de leer el registro; en estos casos se dice queel dato es indirecto (no viene directamente en el cdigo de la instruccin).

    Si la operacin es mondica, no estar presente uno de los operandos de entrada (porejemplo la negacin bit a bit de un operando).

    operacin operando operando resultado modo

  • 7/24/2019 Programacion en Assembler

    13/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 13

    En los diferentes repertorios el orden de los campos puede ser distinto; en algunos otros, elcampo de operacin puede estar subdividido en dos.

    Finalmente podemos conceptualizar una instruccin de mquina como una secuencia deunos y ceros. Si el nmero de bits necesarios es menor o igual al de una palabra dememoria, pueden ensamblarse los distintos campos en una celda de la memoria, como seilustra a continuacin.

    Si el nmero de bits es mayor, pueden emplearse dos o ms palabras para especificar unainstruccin. Esto implica que tendr que accesarse en ms de una oportunidad a la memoriapara comenzar a procesar la instruccin.

    La forma usual de especificar los operandos en assembler es emplear notacin simblica.

    El cdigo de operacin suele describirse con una palabra (en ingls) que describe laoperacin; a este campo suele denominarse mnemnico. Suele ser una abreviatura o lasprimeras letras de un concepto; por ejemplo: jal que recuerdajump and link.Luego, si estn presentes, le siguen los operandos de entrada y salida.

    Suele describirse cada instruccin en una lnea, y los campos suelen separarse con espacios(y ms generalmente por tabs, lo que se logra digitando la tecla a la izquierda de la letra Q).

    Tambin al inicio de la lnea puede existir un rtulo (label en ingls) que identifica, enforma simblica, la direccin de la memoria en que comienza la instruccin. La separacinentre el rtulo y el mnemnico de la operacin suele ser dos puntos.

    En este lenguaje simblico de mquinapuede definirse lneas completas como comentarios,y tambin puede colocarse un comentario de fin de lnea despus de los campos de lainstruccin.

    Entonces, puede generalizarse la descripcin simblica (assembler) de una instruccinsegn:

    rtulo: operacin op1, op2, op3 ; comentario de fin de lnea.

    Pueden agregarse, a los operandos de entrada, algunos smbolos especiales para describir elmodo de direccionamiento. En el ejemplo siguiente, los parntesis redondos implican unmodo de direccionamiento.

    rtulo: operacin op1, offset(op2)

    instruccin

  • 7/24/2019 Programacion en Assembler

    14/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 14

    1.11. Aprender haciendo.

    Es necesario acompaar este estudio con actividades prcticas, ya que mediante el apoyo de

    herramientas computacionales ser ms sencillo fijar los conceptos. Utilizaremos lassiguientes herramientas:

    Primero se experimenta con un compilador C, que se ejecute en un PC. Luego mediante elcompilador cruzado LCC, se traduce a assembler. Posteriormente se visualiza en elsimulador SPIM el lenguaje de mquina generado, y los datos.

    Si bien se estudia un procesador determinado, el procedimiento de aprendizaje puedeemplearse para otros procesadores, disponiendo de las herramientas adecuadas(compilador, simulador).

    1.12. Ensambladores, Compiladores, Ligadores, Simuladores.

    Se dispone de cdigos binarios para las diferentes instrucciones de mquina. Tambinexisten cdigos binarios para los nmeros de los registros. Existen reglas para codificar loscampos inmediatos de las instrucciones, tanto los campos de datos como los que establecendirecciones (en bifurcaciones y saltos).

    La informacin anterior permite ensamblar instrucciones, se entiende por esto: pasar deassembler a cdigo binario.

    Cuestin que realiza eficientemente un programa ensamblador, pero que suele ser difcil

    empleando mtodos de papel y lpiz. En los inicios de los computadores, los programas seescriban en binario, mediante conmutadores que permitan grabar cada bit de lainstruccin, en una palabra de la memoria. El emplear mecanismos de abstraccin parasimbolizar los operandos y las direcciones fue un gran adelanto.

    Al mismo tiempo se agreg al ensamblador la capacidad de incorporar constantes(equivalencias), y la de evaluar expresiones. De este modo algunos campos numricos

    Compilador C

    SPIM

    LCC

  • 7/24/2019 Programacion en Assembler

    15/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 15

    pueden escribirse tambin en forma simblica. (Desgraciadamente SPIM no dispone de estacaracterstica). El ensamblador del microcontrolador 8051, dispone de esta facilidad.

    Luego se le agreg simbolismos para programar la memoria de datos en: bytes, mediaspalabras, palabras, arreglos, strings, zonas inicializadas con valores establecidos, zonas dememoria reservadas para el programa no iniciadas con valores, lograr datos alineados.Permitiendo as manejar en forma simple las direcciones donde estn las diferentesvariables y constantes de un programa.

    Despus se agreg la posibilidad de crear secuencias de instrucciones y programarlas conun nombre abstracto. Esto se denomina macro. Este concepto no es una subrutina, sino unsimple reemplazo de un texto (en una lnea, la instruccin macro) por otro texto(generalmente en varias lneas, la expansin de la macro instruccin). Algunosensambladores tienen macros predefinidas (es el caso de SPIM) para incorporar unrepertorio ampliado; otros permiten que el programador cree su propia biblioteca de macros(es el caso del ensamblador para el 8051). En el manual del programador existe un listadocompleto de las macros que posee SPIM, su estudio permite ver cmo realizar nuevasacciones simples con las primitivas.

    Ms adelante se incorpor la posibilidad de disponer de bibliotecas de funciones osubrutinas, y de incorporar el cdigo a un programa que las invoque. Ahora el programadordebe conocer el prototipo de las funciones de la biblioteca y sus argumentos, para poderemplearlas. Se le adicion programas para crear bibliotecas y mantenerlas (agregar,eliminar, y cambiar funciones). Tambin un ligador (linker) para juntar las zonas de datosy funciones de biblioteca con las funciones y los datos del programa.

    Tambin se incorpor el ensamblado condicional, es decir que algunas partes del cdigo seincorporen o no, dependiendo de alguna expresin o constante.

    Gran parte de la historia del desarrollo del assembler fue heredada por el lenguaje C. Unode los objetivos de su diseo fue precisamente reemplazar la programacin assembler.

    Un lenguaje de programacin de alto nivel permite describir datos y algoritmos en formaabstracta. Un programa denominado compilador, compila un programa traducindolo alassembler de un determinado procesador (existe en la red el proyecto GNU, que permiteobtener en forma pblica diversos compiladores para procesadores especficos). Puede

    disponerse de un mismo programa en C, y compilarlo para procesadores diferentes.

    Si el compilador se ejecuta en una mquina con otro procesador se dice que es uncompilador cruzado (cross compiler) es el caso del lcc.Un programa, ejecutndose en un determinado procesador, que permite ejecutar instrucciones de unprocesador diferente se denomina simulador, es el caso de SPIM.

  • 7/24/2019 Programacion en Assembler

    16/16

    UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICA

    ELO311 Estructuras de ComputadoresProgramacin Assembler.

    Leopoldo Silva Bijit 16-08-2005 16

    ndice general.

    1. INTRODUCCIN........................................................................................................................................ 1

    1.1.REPERTORIO DE INSTRUCCIONES. ............................................................................................................ 11.2.TIPOS DE REPERTORIOS. ........................................................................................................................... 2

    1.2.1. Mquinas de Stack. .......................................................................................................................... 21.2.2. Mquinas con acumulador. ............................................................................................................. 31.2.3. Mquinas de Registro-Memoria. ........... ........... ........... .......... ........... ........... ........... ........... .......... .... 31.2.4. Mquinas de Carga Almacenamiento. (Load-Store) .......... .......... ........... ........... .......... ........... ...... 4

    1.3.COMPARACIN DE LAS ARQUITECTURAS.................................................................................................. 4a) Mquina de stack:............................................................................................................................ 4b) Mquina con acumulador: .............................................................................................................. 5c) Mquina con operandos registro-memoria ..................................................................................... 5d) Mquina con registros carga-almacenamiento.............................................................................. 5

    1.4.INSTRUCCIONES TPICAS DE UN REPERTORIO............................................................................................ 51.5.ESTADSTICAS DE USO DE INSTRUCCIONES. .............................................................................................. 71.6.MODOS DE DIRECCIONAMIENTO............................................................................................................... 71.7.ESTADSTICA DE USO DE MODOS DE DIRECCIONAMIENTO. ....................................................................... 91.8.ORGANIZACIN DE MQUINA................................................................................................................... 91.9.PARTES DE UN COMPUTADOR. ................................................................................................................ 101.10.NIVELES DE REPRESENTACIN. ............................................................................................................ 10

    1.10.1. Programacin en lenguaje C....................................................................................................... 111.10.2. Programacin assembler............................................................................................................. 11

    1.11.APRENDER HACIENDO. ......................................................................................................................... 141.12.ENSAMBLADORES,COMPILADORES,LIGADORES,SIMULADORES. ....................................................... 14