Lenguaje Ensamblador

16
LENGUAJE ENSAMBLADOR Ing. Luis Fernando Aguas B.

Transcript of Lenguaje Ensamblador

Page 1: Lenguaje Ensamblador

LENGUAJE ENSAMBLADOR

Ing. Luis Fernando Aguas B.

Page 2: Lenguaje Ensamblador

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.

Page 3: Lenguaje Ensamblador

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.

Page 4: Lenguaje Ensamblador
Page 5: Lenguaje Ensamblador

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.

Page 6: Lenguaje Ensamblador

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

Page 7: Lenguaje Ensamblador

APLICACION MAS IMPORTANTE

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

Page 8: Lenguaje Ensamblador

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.

Page 9: Lenguaje Ensamblador

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.

Page 10: Lenguaje Ensamblador

EJEMPLO RECURSIVIDAD

ld b,8 ; veces a repetir el bucle principalBUCLE_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 internoBUCLE_INTERNO:push bc ; guardamos el valor del registro en la pila... ; código a repetir en el anidadopop bc ; recuperamos el valor original desde la piladjnz BUCLE_INTERNO ; repite el bucle interno ... ; otro código del principalpop bc ; recuperamos el valor original desde la piladjnz BUCLE_EXTERNO ; repite el más externo

Page 11: Lenguaje Ensamblador

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

Page 12: Lenguaje Ensamblador

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).

Page 13: Lenguaje Ensamblador

USO DEL DESENSAMBLADOR

Basicamente se usa para CRACKEAR programas con protecciones basicas.

Tenemos:

Page 14: Lenguaje Ensamblador

PARA CRACKEAR

Hacemos:

El problema radica en encontrar en lenguaje ensamblador, las partes necesarias para hacer dichos cambios

Page 15: Lenguaje Ensamblador

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.

Page 16: Lenguaje Ensamblador

BIBLIOGRAFIA

http://es.wikipedia.org/wiki/Desensambladorhttp://en.wikipedia.org/wiki/Disassemblerhttp://www.geocities.com/~sangcho/disasm.htmlhttp://es.wikipedia.org/wiki/Ensambladorhttp://www.robsy.net/asm.htmhttp://homepage.mac.com/eravila/asmix86.htmlhttp://mx.geocities.com/alfonsoaraujocardenas/

ensamblador.htmlhttp://usuarios.lycos.es/patricio/ensam/

ensam1.htm#page3http://homepage.mac.com/eravila/asmix861.html