Vous êtes sur la page 1sur 12

INTRODUCCION Lenguaje de Bajo Nivel Un programa escrito en lenguaje ensamblador es almacenado como texto (tal como programas de alto

nivel). Cada instruccin representa exactamente una instruccin de la maquina. Se denomina lenguaje mquina a la serie de datos que la parte fsica de la computadora o hardware, es capaz de interpretar. Una computadora digital o, mejor dicho, su parte fsica, slo distingue datos de tipo binario, es decir, constituidos por dos nicos valores a los que se denomina valor 0 y valor 1. Para representar datos que contengan una informacin se utilizan una serie de unos y ceros cuyo conjunto indica dicha informacin. La informacin que hace que el hardware de la computadora realice una determinada actividad de llama instruccin. Por consiguiente una instruccin es un conjunto de unos y ceros. Las instrucciones as formadas equivalen a acciones elementales de la mquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la mquina se denomina lenguaje mquina. El lenguaje ensamblador es un lenguaje de bajo nivel, es decir, ligado con el <<hard>> concreto de una determinada mquina. Aqu radica la diferencia importante con los lenguajes ms complejos, llamados de alto nivel, como el Basic, Pascal, Cobol, etc., ya que en stos el programador no tiene porque reconocer el <<hard>> de la mquina. Trabaja con variables, constantes e instrucciones simblicas, y es el traductor quien las transforma en las direcciones apropiadas.

INSTRUCCIONES BSICAS Las abreviaciones se pueden combinar para las instrucciones con varios operandos.

Fig. 1 Abreviaturas de los formatos.

Tabla 1. Instrucciones bsicas de lenguaje ensamblador

Tabla 2. Instrucciones bsicas de lenguaje ensamblador

Tabla 3. Instrucciones bsicas de lenguaje ensamblador

Tabla 4. Instrucciones bsicas de lenguaje ensamblador

Tabla 5. Instrucciones bsicas de lenguaje ensamblador

DESCRIPCION DE LAS INSTRUCCIONES MS BASICAS Instruccin MOVE. La instruccin esencial es MOV . Ella translada datos de un lugar a otro (como el operador de asignacin en un lenguaje de alto nivel). Toma dos operandos: mov dest, src El dato especificado por src es copiado a dest. Una restriccin es que los dos operandos no pueden ser operandos de memoria. Esto seala otra peculiaridad del ensamblador. Hay a menudo algunas reglas arbitrarias sobre como se usan las instrucciones. Los operandos deben tener el mismo tamao. El valor de AX no puede ser almacenado en BL.

Instruccin CALL La instruccin CALL hace un salto incondicional a un subprograma y empuja en la pila la direccin de la prxima instruccin. La instruccin RET saca una direccin de la pila y salta a esta direccin. Cuando se usa esta instruccin, es muy importante que uno administre la pila correctamente ya que la instruccin RET debe extraer de la pila el nmero correcto. Instruccin LEA (Load Efective Adress). La instruccin LEA nunca lee la memoria! Solo calcula la direccin que sera leda por otra instruccin y almacena esta direccin en el primer operando de registro. Ya que no se hace ninguna lectura a memoria, no hay necesidad, ni esta permitido definir el tamao de la memoria (dword u otros).

Stack (Pila) Muchas CPU tienen soporte para una pila. Una pila es una lista LIFO (Last In Firist Out). La pila es un arca de memoria que esta organizada de esta manera. La instruccin PUSH aade datos a la pila y la instruccin POP quita datos. El dato extrado siempre es el ltimo dato insertado (esta es la razn por la cual es llamado FIFO). Stack significa pila en ingls, pila en el sentido de apilar cosas, no de batera elctrica. Es una zona de la memoria en donde se guardan cosas. Por ejemplo las variables locales de las subrutinas y funciones, los parmetros, algunos resultados intermedios de clculos complejos, etc. Todo el manejo del stack lo realiza el compilador de forma automtica, as que no hace falta preocuparse salvo cuando se acaba el lugar y el programa genera un error (stack overflow). Lo ms importante de esta estructura es que en cada momento slo se tiene acceso a la parte superior del stack (no a las cosas que estn apiladas debajo). Entonces cada subrutina puede guardar sus datos en el stack, y las subrutinas a las que llame no los afectarn.La pila es una zona de la memoria sobre la que se pueden escribir y leer datos de forma convencional. Esta zona tiene una posicin especial que se denomina la cima de la pila. El procesador contiene dos instrucciones de su lenguaje mquina para realizar las operaciones de apilar y des apilar datos de la pila. Los datos que se pueden apilar y des apilar, en el caso del Intel Pentium son siempre de tamao 4 bytes.

Fig. 2 Cdigo para sacar el rea de un crculo, solicitando al usuario el radio.

Fig. 3 Compilacin y Ejecucin del programa radio.c

Fig. 4 Conversin del programa radio.c a Lenguaje Ensamblador radio.s

Fig. 5 Programa radio.c en Lenguaje Ensamblador radio.s ANALISIS DEL PROGRAMA: radio.s 1 .file radio.c: Hace referencia al archivo en su codigo original radio.c 2 .section .rodata .rodata : Los datos iniciados se colocan en el segmento .section

3 Impresin de la cadena radio etiquetada como LC0 4 Lectura por teclado de tipo dato flotante etiquetado como LC1 5 Impresin de la cadena el area es mas la lectura del dato a travs del teclado etiquetada como LC3 6 .text: Indica donde van a estar las instrucciones 7 .globl main: Le dice al ensamblador que tome la etiqueta main como universal para que se utilice en cualquier modulo del programa.. type main, @function: Indica que puede acceder en cualquier funcin del programa. 8 leal: Load Efective Adress calcula el valor de la variable local 9 andl: aplica a cada uno de los 8 pares de bits correspondientes en los registros. 10 pushl: Aaden datos a la pila 11 movl: Almacena el valor %ebp a %esp 12 pushl:Aade datos a la pila 13 subl: Resta el valor de %esp a $36 14 movl: Almacena el valor %esp a la etiqueta $.LC0 15 call :Hace un salto incondicional a un subprograma para ejecutar la funcion printf e imprime la etiqueta LC1 16 leal: Load Efective Adress calcula el valor de la variable local 17 movl: Almacena el valor 4(%esp) a la etiqueta $.LC1 que es el tipo de dato que se requiere 18 call: scanf lee el dato que se introduce por el teclado de tipo %f

10

19 flds: Carga un numero de punto flotante ANALISIS DEL PROGRAMA: radio.s 20 fldl: Carga un numero de punto flotante de acuerdo al tamao de la etiqueta LC2 21 Fmulp: Multiplicacin del registro de un numero de precisin simple 22 flds: Carga un numero de punto flotante 23 fstpl: Almacena el tope de la pila en la memoria 24 movl : Almacena el valor %esp a la etiqueta $.LC3 25 call : Hace un salto incondicional a un subprograma para ejecutar la funcion printf e imprime la etiqueta .LC3 26 movl :Almacena el valor %eax a $0 27 addl: Suma %esp a $36 28 popl: Quita datos a la pila de %ecx y ebp 29 leal: Load Efective Adress calcula el valor de la variable local 30 ret: Saca el valor de eax, es decir el valor correcto de la pila. 31 .section .rodata : Los datos iniciados se colocan en el segmento .section .rodata y aqu es donde termina el modulo de su uso.

11

CONCLUSIONES De acuerdo con lo estudiado se puede decir que actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos. Cabe destacar que de acuerdo a la investigacin del tema es importante menciona que programar en lenguaje ensamblador es difcil de aprender, entender, leer, escribir, depurar y mantener, por eso surgi la necesidad de los lenguajes compilados. A pesar de perder rendimiento en un proceso de compilacin, en la actualidad la mayora de las computadoras son suficientemente rpidas. El lenguaje ensamblador no es portable. Programar en lenguaje ensamblador lleva mucho tiempo. Los programas hechos en lenguaje ensamblador son generalmente ms rpidos. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 100 veces ms rpidos que con lenguajes de alto nivel. Los programas hechos en lenguaje ensamblador generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contrapartida en lenguaje de alto nivel. Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles de formar en un lenguaje de alto nivel.

12

Vous aimerez peut-être aussi