LENGUAJE ENSAMBLADOR

19
INTRODUCCIÓN A ENSAMBLADOR El lenguaje simbólico que se utiliza para codificar los programas origen que se procesan por el ensamblador es llamado lenguaje ensamblador. Este lenguaje es una colección de símbolos mnemónicos que representan: operaciones (mnemónicos de instrucciones para la máquina o de directrices para el ensamblador), nombres simbólicos, operadores y símbolos especiales. El lenguaje ensamblador proporciona códigos de operación de los mnemónicos para todas las instrucciones de la máquina contenidas en la lista de instrucciones. Además, el lenguaje ensamblador contiene mnemónicos directrices, los cuales especifican acciones auxiliares que se llevan a cabo por el ensamblador. Estas directrices no siempre son traducidas a lenguaje máquina. Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier editor de textos o procesador de palabras que sea capaz de producir una salida de texto en ASCII. Una vez que el código origen ha sido escrito, el archivo origen es ensamblado mediante su procesamiento a través de algún ensamblador. LENGUAJE ENSAMBLADOR El lenguaje Assembly es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Fue usado principalmente en los inicios del desarrollo de software, cuando aun no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la

Transcript of LENGUAJE ENSAMBLADOR

Page 1: LENGUAJE  ENSAMBLADOR

INTRODUCCIÓN A ENSAMBLADOREl lenguaje simbólico que se utiliza para codificar los programas origen que se procesan por el ensamblador es llamado lenguaje ensamblador.

Este lenguaje es una colección de símbolos mnemónicos que representan: operaciones (mnemónicos de instrucciones para la máquina o de directrices para el ensamblador), nombres simbólicos, operadores y símbolos especiales.

El lenguaje ensamblador proporciona códigos de operación de los mnemónicos para todas las instrucciones de la máquina contenidas en la lista de instrucciones.

Además, el lenguaje ensamblador contiene mnemónicos directrices, los cuales especifican acciones auxiliares que se llevan a cabo por el ensamblador.

Estas directrices no siempre son traducidas a lenguaje máquina.

Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier editor de textos o procesador de palabras que sea capaz de producir una salida de texto en ASCII.

Una vez que el código origen ha sido escrito, el archivo origen es ensamblado mediante su procesamiento a través de algún ensamblador.

LENGUAJE ENSAMBLADOR

El lenguaje Assembly es un tipo de lenguaje de bajo nivel utilizado para escribir

programas informáticos, y constituye la representación más directa del código máquina

específico para cada arquitectura de computadoras legible por un programador.

Fue usado principalmente en los inicios del desarrollo de software, cuando aun no se

contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en

ambientes académicos y de investigación, especialmente cuando se requiere la

manipulación directa de hardware, se pretenden altos rendimientos o un uso de recursos

controlado y reducido.

Muchos dispositivos programables (como los microcontroladores) aun cuentan con el

Assembly como la única manera de ser manipulados.

Page 2: LENGUAJE  ENSAMBLADOR

DEFINICIONES DE ENSAMBLADOR

1. Macro : Macro Su uso elimina la realización de tareas repetitivas, automatizándolas. Básicamente, se trata de un grupo de comandos de una aplicación, organizados según un determinado juego de instrucciones y cuya.

2. Código Objeto : Código Objeto Código generado por un compilador o un ensamblador traducido por un código fuente de un programa. Casi siempre este término se refiere al código máquina que puede ejecutarse.

3. Macroensamblador : Macroensamblador Lenguaje ensamblador que utiliza macros para su utilización.

4. Cualitativo : Cualitativo Algoritmos: Son los que pueden ser descritos en una serie de pasos o instrucciones representados por medio de palabras para mantener una respuesta o solución de problemas.

5. Mac : Mac Macintosh. Serie de computadores personales de Apple. El Mac original con su gabinete vertical se introdujo en 1984. El sistema operativo del Mac con su interfaz gráfica de usuario.

ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR

Macros  Para hacer la tarea del programador más grata, se usan algunas convenciones. Cada uno puede adoptar las que más le agraden y ayuden para ser más productivo. En general, las convenciones son cualquier acción que facilita la revisión y comprensión de un programa, especialmente el que uno mismo ha escrito cuando tiene que revisarlo algunos meses después.

Comentamos algunas convenciones que usaremos:

Los ficheros de código fuente llevarán la extensión *.ASM

Los ficheros de listado llevarán la extensión *.LST

Los ficheros de código objeto llevarán la extensión *.OB]

Los ficheros de errores llevarán la extensión *.ERR

Los ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX

Comentario descriptivo del programa (utilizar una cabecera estandarizada).

Definir el micro controlador que se usará (con las directivas LIST e INCLUDE).

Introducir las opciones de compilación (que serán vistas más adelante) (opcional).

Establecer las constantes que se usarán (con la directiva EQU).

Reservar espacios de memoria (directiva RES) (si es necesario).

Page 3: LENGUAJE  ENSAMBLADOR

Configurar los puertos.

Desarrollar el programa con comentarios, en lo posible explicando cada línea de código..

Los mnemónicos escritos en minúscula y las constantes y variables en mayúscula hacen que el código escrito sea más visible.

Colocar las rutinas en el mismo sitio, todas contiguas.

Dibujar diagramas de flujo o escribir seudocódigo.

    Su estructura en un programa ejemplo muy simple:

    Hemos visto la estructura general. Ahora veremos la posición de los elementos del código por 4 columnas:

Columna 1: Etiquetas. Las etiquetas se rigen por las siguientes normas:

Debe situarse en la primera columna.

Debe contener únicamente caracteres alfanuméricos.

El máximo de caracteres es de 31.

Page 4: LENGUAJE  ENSAMBLADOR

Columna 2: Operación. En esta columna se situarán las instrucciones. El campo del código de operación es el único que nunca puede estar vacío; éste siempre contiene una instrucción o una directiva del ensamblador.

Columna 3: Operandos El campo de operan dos o de dirección puede contener una dirección o un dato, o puede estar en blanco. Normalmente contendrá registros o literales con los que se operará (f, l ok, b y w).

Columna 4: Comentario. El campo del comentario o de etiquetas es opcional. Aquí se situará cualquier comentario personalizado que deseemos. Estos son útiles para saber qué hace un programa sin tener que descifrar el código entero. El compilador (ensamblador) ignorará todo texto más allá del carácter punto y coma ";".

Los comentarios generalmente se sitúan en la cuarta columna para describir la acción de una línea de código, pero pueden situarse en cualquier parte de programa para describir cualquier otro evento, siempre que estén después del carácter ";" (semicolon en inglés).

Normalmente las columnas son separadas por una tabulación. El espacio mínimo entre dos columnas es de un carácter, que puede ser un espacio en vez de una tabulación.

Delimitadores (separación entre campos)

Los campos van separados sólo con espacios y/o tabulaciones. No agregue nunca otros caracteres (comas, puntos, etc.)

No utilice espacios extra, particularmente después de comas que separan operando.( Ej: movlw 5, w )

No use caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas.

LAS INSTRUCCIONES DEL ENSAMBLADOR

Instrucciones de salto Son utilizadas para transferir el flujo del proceso al operando indicado.

JMP

JA (JNBE)

JAE (JNBE)

JB (JNAE)

JBE (JNA)

JE (JZ)

JNE (JNZ)

JG (JNLE)

JGE (JNL)

JL (JNGE)

JLE (JNG)

JC

JNC

JNO

JNP (JPO)

JNS

Page 5: LENGUAJE  ENSAMBLADOR

JO

JP (JPE)

JS

Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitiéndose esta acción hasta que el contador sea cero.

LOOP

LOOPE

LOOPNE

Instrucciones de conteo Se utilizan para decrementar o incrementar el contenido de los contadores.

DEC

INC

Instrucciones de comparación Son usadas para comparar operandos, afectan al contenido de las banderas.

CMP

CMPS (CMPSB) (CMPSW)

Instrucciones de banderas Afectan directamente al contenido de las banderas.

CLC

CLD

CLI

CMC

STC

STD

STI

Instrucción JMP

Propósito: Salto incondicional

Sintaxis:

JMP destino

Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos.

Instrucción JA (JNBE)

Propósito: Brinco condicional

Page 6: LENGUAJE  ENSAMBLADOR

Sintaxis:

JA Etiqueta

Después de una comparación este comando salta si está arriba o salta si no está abajo o si no es igual.

Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).

Instrucción JAE (JNB)

Propósito: salto condicional

Sintaxis:

JAE etiqueta

Salta si está arriba o si es igual o salta si no está abajo.

El salto se efectúa si CF esta desactivada.

Instrucción JB (JNAE)

Propósito: salto condicional

Sintaxis:

JB etiqueta

Salta si está abajo o salta si no está arriba o si no es igual.

Se efectúa el salto si CF esta activada.

Instrucción JBE (JNA)

Propósito: salto condicional

Sintaxis:

JBE etiqueta

Salta si está abajo o si es igual o salta si no está arriba.

El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).

Instrucción JE (JZ)

Propósito: salto condicional

Sintaxis:

Page 7: LENGUAJE  ENSAMBLADOR

JE etiqueta

Salta si es igual o salta si es cero.

El salto se realiza si ZF está activada.

Instrucción JNE (JNZ)

Propósito: salto condicional

Sintaxis:

JNE etiqueta

Salta si no es igual o salta si no es cero.

El salto se efectúa si ZF está desactivada.

Instrucción JG (JNLE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JG etiqueta

Salta si es más grande o salta si no es menor o igual.

El salto ocurre si ZF = 0 u OF = SF.

Instrucción JGE (JNL)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JGE etiqueta

Salta si es más grande o igual o salta si no es menor que.

El salto se realiza si SF = OF

Instrucción JL (JNGE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JL etiqueta

Salta si es menor que o salta si no es mayor o igual.

El salto se efectúa si SF es diferente a OF.

Page 8: LENGUAJE  ENSAMBLADOR

Instrucción JLE (JNG)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JLE etiqueta

Salta si es menor o igual o salta si no es más grande.

El salto se realiza si ZF = 1 o si SF es diferente a OF

Instrucción JC

Propósito: salto condicional, se toman en cuenta las banderas.

Sintaxis:

JC etiqueta

Salta si hay acarreo.

El salto se realiza si CF = 1

Instrucción JNC

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNC etiqueta

Salta si no hay acarreo.

El salto se efectúa si CF = 0.

Instrucción JNO

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNO etiqueta

Salta si no hay desbordamiento.

El salto se efectúa si OF = 0.

Instrucción JNP (JPO)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

Page 9: LENGUAJE  ENSAMBLADOR

JNP etiqueta

Salta si no hay paridad o salta si la paridad es non.

El salto ocurre si PF = 0.

Instrucción JNS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si el signo esta desactivado.

El salto se efectúa si SF = 0.

Instrucción JO

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JO etiqueta

Salta si hay desbordamiento (overflow).

El salto se realiza si OF = 1.

Instrucción JP (JPE)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JP etiqueta

Salta si hay paridad o salta si la paridad es par.

El salto se efectúa si PF = 1.

Instrucción JS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JS etiqueta

Salta si el signo está prendido.

El salto se efectúa si SF = 1.

Page 10: LENGUAJE  ENSAMBLADOR

Instrucción LOOP

Propósito: Generar un ciclo en el programa.

Sintaxis:

LOOP etiqueta

La instrucción loopdecremento CX en 1, y transfiere el flujo del programa a la etiqueta dada como operando si CX es diferente a 1.

Instrucción LOOPE

Propósito: Generar un ciclo en el programa considerando el estado de ZF

Sintaxis:

LOOPE etiqueta

Esta instrucción decremento CX en 1. Si CX es diferente a cero y ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando.

Instrucción LOOPNE

Propósito: Generar un ciclo en el programa, considerando el estado de ZF

Sintaxis:

LOOPNE etiqueta

Esta instrucción decremento en uno a CX y transfiere el flujo del programa solo si ZF es diferente a 0.

Instrucción DEC

Propósito: Decrementos el operando

Sintaxis:

DEC destino

Esta operación resta 1 al operando destino y almacena el nuevo valor en el mismo operando.

Instrucción INC

Propósito: Incrementar el operando.

Sintaxis:

INC destino

Page 11: LENGUAJE  ENSAMBLADOR

La instrucción suma 1 al operando destino y guarda el resultado en el mismo operando destino.

Instrucción CMP

Propósito: Comparar los operando.

Sintaxis:

CMP destino, fuente

Esta instrucción resta el operando fuente al operando destino pero sin que éste almacene el resultado de la operación, solo se afecta el estado de las banderas.

Instrucción CMPS (CMPSB) (CMPSW)

Propósito: Comparar cadenas de un byte o palabra.

Sintaxis:

CMP destino, fuente

Con esta instrucción la cadena de caracteres fuente se resta de la cadena destino.

Se utilizan DI como índice para el segmento extra de la cadena fuente y SI como índice de la cadena destino.

Solo se afecta el contenido de las banderas y tanto DI como SI se incrementan.

Instrucción CLC

Propósito: Limpiar bandera de acarreo.

Sintaxis:

CLC

Esta instrucción apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero.

Instrucción CLD

Propósito: Limpiar bandera de dirección

Sintaxis:

CLD

La instrucción CLD pone en cero el bit correspondiente a la bandera de dirección.

Instrucción CLI

Page 12: LENGUAJE  ENSAMBLADOR

Propósito: Limpiar bandera de interrupción

Sintaxis:

CLI

CLI pone en cero la bandera de interrupciones, deshabilitando así aquellas interrupciones enmascarables.

Una interrupción enmascarable es aquella cuyas funciones son desactivadas cuando IF = 0.

Instrucción CMC

Propósito: Complementar la bandera de acarreo.

Sintaxis:

CMC

Esta instrucción complementa el estado de la bandera CF, si CF = 0 la instrucción la iguala a 1, y si es 1 la instrucción la iguala a 0.

Podemos decir que únicamente "invierte" el valor de la bandera.

Instrucción STC

Propósito: Activar la bandera de acarreo.

Sintaxis:

STC

Esta instrucción pone la bandera CF en 1.

Instrucción STD

Propósito: Activar la bandera de dirección.

Sintaxis:

STD

La instrucción STD pone la bandera DF en 1.

Instrucción STI

Propósito: Activar la bandera de interrupción.

Sintaxis:

STI

Page 13: LENGUAJE  ENSAMBLADOR

La instrucción activa la bandera IF, esto habilita las interrupciones externas enmascarables (las que funcionan únicamente cuando IF = 1).

EJERCICIOS:

1. Realizar un programa en ensamblador que permita realizar la suma de dos números:

Cuando aplicamos la instrucción Cd..: nos vamos al interior de la unidad c donde podemos ingresarnos a cualquier carpeta.

Cuando aplicamos la instrucción Cd tasm nos estamos ingresando a la carpeta tasm y lo mismo cuando aplicamos la instrucción Cd bin aquí nos estamos ingresando a una carpeta que está dentro de la carpeta tasm

Con la instrucción edit suma.asm nos aparece en otra pantalla el ejercicio que está realizado en un bloc de notas

Con la siguiente instrucción tasm suma nos apares los diferentes errores posibles que pueda tener el ejercicio

Con la instrucción tlink suma nos muestra la versión Y por último la instrucción suma es la por la cual nosotros vamos a poder ingresar

los datos y ingresamos datos donde esta titilando el cursor.

Ejecución del programa en el símbolo del sistema

Page 14: LENGUAJE  ENSAMBLADOR

2. Realizar un programa en ensamblador que permita realizar la resta de dos números:

Ejecución del programa en el símbolo del sistema

3. Realizar un programa en ensamblador que permita realizar la multiplicación de dos números:

Ejecución del programa en el símbolo del sistema

Page 15: LENGUAJE  ENSAMBLADOR

Realización de los códigos de los diferentes problemas en diferentes bloc de notas para luego ser utilizados cuando se está realizando el programa en ensamblador y en el símbolo del sistema:

SUMA MULTIPLICACION

Page 16: LENGUAJE  ENSAMBLADOR

´

RESTA