P. 1
Lenguaje ensamblador

Lenguaje ensamblador

|Views: 50|Likes:
Publicado porMarco Farina

More info:

Published by: Marco Farina on Feb 03, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

11/27/2012

pdf

text

original

Lenguaje ensamblador El lenguaje ensamblador es un lenguaje de programación que es una traducción directa del código de máquina (Éste código

es interpretado por el microprocesador), para que pueda ser entendible por los seres humanos, por lo tanto es un lenguaje de bajo nivel. El lenguaje ensamblador permite una optimización que no se consigue con lenguajes de medio y alto nivel. Permite la creación de programas muy rápidos y muy pequeños, además se tiene un control que no se consigue con un lenguaje de alto nivel. Hay que tener en cuenta que éste libro está orientado a la arquitectura x86 (Es la arquitectura que utiliza la PC IBM y las compatibles) y no es compatible con otra arquitectura.

Sintaxis del lenguaje ensamblador
La sintaxis es la siguiente Nombre de la instrucción Operando 1, Operando 2, Operando 3, Operando 4, ... El nombre de la instrucción está formada por 2 o 3 letras, los operandos pueden ser registros, constantes o direcciones de memoria. La cantidad de operandos dependerá de la instrucción. Por ejemplo: MOV AL, [1000] Esta instrucción indica que se copie el valor de la porción de la memoria que esté en la ubicación 1000 (En hexadecimal) a la parte baja del registro AX (AL). Cuando un operando es un valor de una dirección de memoria, ésta dirección se escribe entre corchetes, recordar que el operando 1 es el destino y el operando 2 es el origen. Y cuando es una constante dependerá del ensamblador, en el caso del debug (Un programa que sirve para crear y editar aplicaciones que viene con el DOS) se interpretarán como hexadecimales, en los siguientes ejemplos se interpretará que las constantes son números hexadecimales. También se puede tomar un valor de la memoria apuntado por un registro, por ejemplo: MOV AL, [DI] DI está apuntado al valor que está en la memoria que será copiado al registro AL. El nombre MOV viene de la palabra move, que es una palabra del ingles que significa mover. Justamente la instrucción mencionada significa, mover el valor apuntado por DI a AL. También se puede copiar el valor de un registro a otro MOV AL, BL En este caso se copia el valor de BL a AL

en informática. dado que a pesar de que las computadoras parecen comprender un lenguaje natural. basándose en un código fuente. basado en el sistema binario. o código máquina. que se deriva del código fuente y está diseñado para ser legible sólo por la máquina. el lenguaje de alto nivel más conocido. las instrucciones de programa legibles por el programador y escritas en un lenguaje ensamblador o de más alto nivel. Cada línea se traduce a código máquina y se ejecuta. pero también puede ser código fuente de lenguaje ensamblador o una variante de código máquina. en este caso más complejo. los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. Lenguaje máquina El lenguaje propio del ordenador. código generado por un compilador o un ensamblador. en informática. Casi siempre este término se refiere al código máquina que puede ejecutarse directamente en la unidad central de proceso (CPU) del sistema. Véase también Lenguaje de programación. La traducción de un código fuente de alto nivel a un código máquina también se realiza con un compilador. pero que puede hacer que falle el ordenador si no está bien diseñado.Relación entre los lenguajes de alto nivel y el lenguaje ensamblador. Intérpretes y compiladores La traducción de una serie de instrucciones en lenguaje ensamblador (el código fuente) a un código máquina (o código objeto) no es un proceso muy complicado y se realiza normalmente por un programa especial llamado compilador. como en el caso de los programas en que se reutilizan partes del código. sino que recorren el código fuente una línea cada vez. El programador debe introducir todos y cada uno de los comandos y datos en forma binaria. resulta difícil de utilizar para las personas. o mediante un intérprete. lo hacen en realidad de una forma rígida y sistemática. debe compilarse de nuevo. Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales. Aunque este proceso es más lento. es menos susceptible de provocar fallos en la computadora. Los intérpretes. Código fuente. por otro lado. El código objeto resultante es un programa rápido y listo para funcionar. y una operación sencilla como comparar el contenido de un registro con los datos situados en una ubicación del chip de memoria puede tener el siguiente . En BASIC. traducido a partir del código fuente de un programa. el código objeto. como el inglés. son más lentos que los compiladores ya que no producen un código objeto. Código objeto. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante. Cuando la línea se lee por segunda vez. Un compilador crea una lista de instrucciones de código máquina. El concepto contrario es el código objeto.

el usuario puede también controlar el resultado de un procedimiento. haciendo que la macro responda de forma diferente bajo condiciones diversas. La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo. que dedicaron tanto tiempo y esfuerzo al aprendizaje de la programación de un ordenador. una lista de códigos de operación mnemotécnicos y de operadores simbólicos. se minimizan los errores tipográficos y se permite a los usuarios que no conozcan el programa reproducir conjuntos de instrucciones previamente grabados por alguien más experto en la aplicación. En el lenguaje ensamblador.formato: 11001010 00010111 11110101 00101011. y un método que permitiera que el mismo programa pudiera ejecutarse en varios tipos de máquinas. Estas necesidades llevaron al desarrollo de lenguajes de alto nivel. Las instrucciones de macros se pueden guardar en el programa mismo o en un archivo separado que el programa pueda identificar. el lenguaje ensamblador puede utilizarse con un solo tipo de chip de CPU o microprocesador. Sin embargo. empleando para ello sólo una fracción del tiempo necesario para programar en lenguaje máquina. ejecuta el programa. una macro es un nombre que define un conjunto de instrucciones que serán sustituidas por la macro cuando el nombre de ésta aparezca en un programa (proceso denominado expansión de macros) en el momento de ensamblar el programa. Los programadores. un conjunto de acciones o instrucciones grabadas y ejecutadas mediante una simple una instrucción. MACROS Macro: en aplicaciones de computadora. “En el lenguaje de programación ensamblador”. es posible escribir y depurar o eliminar los errores lógicos y de datos en los programas escritos en lenguaje ensamblador. a código objeto (es decir. Lo que se necesitaba era un método abreviado en el que un enunciado simbólico pudiera representar una secuencia de numerosas instrucciones en lenguaje máquina. Un programa ensamblador traduce el código fuente. MACRO INTERNO . cada comando mnemotécnico y sus operadores simbólicos equivalen a una instrucción de máquina. Así se evita la introducción repetitiva de instrucciones. Lenguaje ensamblador Uno de los métodos inventados por los programadores para reducir y simplificar el proceso es la denominada programación con lenguaje ensamblador. a continuación. se veían obligados a aprender un nuevo estilo de programación cada vez que trabajaban con otra máquina. Si la aplicación incluye también un lenguaje de macros que responda a variables e instrucciones condicionales. Al asignar un código mnemotécnico (por lo general de tres letras) a cada comando en lenguaje máquina. a lenguaje máquina) y.

AX ENDM . Una macro interna es aquella que se declara y se llaman dentro del mismo programa. cuerpo de . se utiliza la directiva MACRO. de la macro . la pseudo-op MACRO y opcionalmente. aunque es aceptable cualquier otro nombre válido que sea único. hasta ENDM (“fin de la macro”). b) CUERPO: Contiene el código real que será insertado en cualquier programa que llame al nombre de la macro. Para definir una macro. La directiva MACRO en la primer línea indica al ensamblador que las instrucciones que siguen. El formato de esta directiva es : (nombre_de_macro) MACRO (lista_parámetros) Una macro consta de tres partes esenciales: a) CABECERA: Contiene el nombre de la macro. DATA MOV DS. es un conjunto de instrucciones que se pueden mandar a llamar desde cualquier parte del programa. Una macro interna se declara de la siguiente manera: Sintaxis: . La directiva ENDM termina la definición de la macro. c) FIN: Debe incluir la sentencia ENDM. son parte de la definición de la macro. Una macro también se puede definir como un grupo de instrucciones repetitivas en un programa que se codifica sólo una vez y puede utilizarse cuantas veces sea necesario. [1] Internas. Las instrucciones entre MACRO y ENDM comprenden el cuerpo de la definición de la macro. variables ficticias que serán pasadas desde la macro.Una macro. la definición . Define macro MOV AX. AX MOV ES. Si su programa realiza frecuentemente funciones de entrada/salida. Fin de la macro El nombre de esta macro es INICIO. las macros ofrecen la facilidad de codificar una sola vez un conjunto de instrucciones y reutilizar el código cuantas veces desee dentro de su programa. Una macro es una pseudo-op que permite el establecimiento de operaciones únicas en ensamblador o la inclusión de frecuentes llamadas de código ensamblador. Ejemplo de una macro sencilla: INICIO MACRO .

CALL Duplica Este código queda: MOV AL.Cuando se quiere el código más rápido y no importa ser repetitivo (código grande) 2. Esta es la “llamada” al macro El ensamblador sustituye cada vez que aparezca la macro. 1 . 2 SHL AL.. CALL Duplica Duplica AL . [2] . 1 .<Nombre> MACRO [parámetros] … ENDM Ejemplo: Duplica AL? MACRO SHL AL. CALL Duplica SHL AL. que se “llaman” pero no repiten el código Ejemplo: MOV AL.-Cuando se van a generar diversas variantes de código similar 3.-No cuando se quiere código compacto. 1 ENDM Código que la usa: MOV AL. No es como los procedimientos. CALL Duplica Cuándo usarlas y cuándo no 1. usar procedimientos). evitando repetir el mismo (en este caso. 2 Duplica AL . 2 Duplica AL .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->