Lenguaje Ensamblador

LuisFerAguas 2,101 views 16 slides Nov 04, 2013
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

No description available for this slideshow.


Slide Content

LENGUAJE ENSAMBLADOR Ing. Luis Fernando Aguas B.

CONCEPTOS El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas de computadora, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Una computadora digital, sólo distingue datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina 0 y 1. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información. Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora.

El mnemónico "mov" es un código de operación u "opcode" , elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover).- El opcode es seguido por una lista de argumentos o parámetros , completando una instrucción de ensamblador típica. Las instrucciones así formadas equivalen a acciones elementales de la máquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la máquina se denomina lenguaje máquina. La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y la traducción inversa la puede efectuar un desensamblador. Los ensambladores, son capaces de ensamblar el programa traducido a partir de varias piezas, procedimientos o subrutinas a código binario ("1" y "0") que entiende el procesador. El código simbólico puede parecer de difícil acceso, pero es más fácil de recordar e interpretar que el binario o el hexadecimal.

Ventajas Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C. El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer Los lenguajes de alto nivel fueron diseñados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseñado para una computadora especifica, o, de manera más correcta, para una familia especifica de microprocesadores.

APLICACIONES mover llenar un registro con un valor constante mover datos de una posición de memoria a un registro o viceversa escribir y leer datos de dispositivos computar sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos on en otro registro realizar operaciones binarias, incluyendo operaciones lógicas (AND/OR/XOR/NOT) comparar valores entre registros (mayor, menor, igual) afectar el flujo del programa saltar a otra posición en el programa y ejecutar instrucciones allí saltar si se cumplen ciertas condiciones (IF) saltar a otra posición, pero guardar el punto de salida para retornar

APLICACION MAS IMPORTANTE Se lo usa cuando se requiere manipular directamente el HARDWARE, pudiendo: DESHABILITAR/HABILITAR, LEER/ESCRIBIR desde perifericos.

EJEMPLO 1 El siguiente es un ejemplo del programa clásico Hola mundo escrito para la arquitectura de procesador x86 bajo el sistema operativo DOS.

EJEMPLO 2 Una selección de instrucciones para una computadora virtual con las correspondientes direcciones de memoria en las que se ubicarán las instrucciones. Estas direcciones no son estáticas. Cada instrucción se acompaña del código ensamblador generado (código objeto) que coincide con la arquitectura de computador virtual.

EJEMPLO RECURSIVIDAD ld b,8 ; veces a repetir el bucle principal BUCLE_EXTERNO: push bc ; guardamos el valor del registro en la pila ... ; código a repetir en el principal ld b,128 ; veces a repetir el bucle interno BUCLE_INTERNO: push bc ; guardamos el valor del registro en la pila ... ; código a repetir en el anidado pop bc ; recuperamos el valor original desde la pila djnz BUCLE_INTERNO ; repite el bucle interno ... ; otro código del principal pop bc ; recuperamos el valor original desde la pila djnz BUCLE_EXTERNO ; repite el más externo

DESENSAMBLADOR Un desensamblador es un programa de computación que traduce desde lenguaje máquina (código binario) al lenguaje de programación (assembler). El programa desensamblador a utilizar, depende exclusivamente del microprocesador que estamos usando (para que pueda reconocer las instrucciones del código binario), de la arquitectura de la máquina y del sistema operativo en uso

QUE NO HACE UN DESENSAMBLADOR? Rescatar los nombres de las variables o las funciones nombradas por el programador Recuperar los comentarios Rescatar código fuente perdido Recuperar la estructura de clases ****Existe una EXCEPCION a todo esto y es cuando el que compiló el programa ha habilitado una opción, que es incluir la información de debug en el programa (usualmente se trata de programas en fase de desarrollo y no de programas finales).

USO DEL DESENSAMBLADOR Basicamente se usa para CRACKEAR programas con protecciones basicas. Tenemos:

PARA CRACKEAR Hacemos: El problema radica en encontrar en lenguaje ensamblador, las partes necesarias para hacer dichos cambios

CONCLUSIONES El lenguaje ensamblador, es algo muy complicado en comparacion con lenguajes de alto nivel, que ocupan palabras del idioma ingles. El lenguaje ensamblador nos da gran control sobre el Hardware, pudiendo activar o desactivar los mismos tan solo con algunas direcciones. El lenguaje ensamblador es un lenguaje de bajo nivel, pero puede llegar a ser de los mas potentes. Los desensambladores son las herramientas mas basicas para crackear programas. La mayoria de controladores de la computadora estan hechos en lenguaje de ensamblador porque trabajan directo con los dispositivos.

BIBLIOGRAFIA http://es.wikipedia.org/wiki/Desensamblador http://en.wikipedia.org/wiki/Disassembler http://www.geocities.com/~sangcho/disasm.html http://es.wikipedia.org/wiki/Ensamblador http://www.robsy.net/asm.htm http://homepage.mac.com/eravila/asmix86.html http://mx.geocities.com/alfonsoaraujocardenas/ensamblador.html http://usuarios.lycos.es/patricio/ensam/ensam1.htm#page3 http://homepage.mac.com/eravila/asmix861.html
Tags