Vous êtes sur la page 1sur 40

ARQUITECTURA DE COMPUTADORAS TEMA LENGUAJE ENSAMBLADOR PROFESOR

Ing. Xavier Veloz

INTEGRANTES
Cesar Hurtado

Andrs Garca

CONTENIDO
1.1 Historia del Lenguaje Ensamblador(Assembler) 1.2 Introduccin (Qu es Assembler?) 1.3 Caractersticas 1.4 Ventajas y desventajas 1.5 Uso practico en la actualidad

1.1 HISTORIA DEL LENGUAJE ENSAMBLADOR


Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y la EDSAC, se componan en el lenguaje real de las mquinas mismas. La dificultad de programar las mquinas de esta manera limitaba drsticamente su utilidad y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programacin ms orientados hacia la expresin de soluciones con la notacin de los problemas mismos. Los primeros lenguajes de programacin se conocieron como Lenguajes Ensambladores,

1.2 INTRODUCCION
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel, se llaman as porque estn muy cercanos al hardware del ordenador. Es por ello de el lenguaje ensamblador asigna una abreviatura a cada instruccin en binario (cdigo mquina), de esta forma es ms fcil recordar y ms difcil equivocarse con las instrucciones o abreviaturas. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos.

Que es assembler?
Constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador.

Utilizado para escribir programas informticos.

1.3 CARACTERISTICAS
El programa ensamblador lee un archivo escrito en lenguaje ensamblador y sustituye cada uno de los cdigos mnemotcnicos por su equivalente cdigo mquina. Los programas se hacen fcilmente portables de mquina a mquina y el clculo de bifurcaciones se hace de manera fcil.

1.4 Ventajas y desventajas Ventajas


Mximo rendimiento: mxima velocidad y mnimo tamao

Puede explotar al mximo el CPU


Acceso a cualquier recurso de la computadora Ayuda a conocer a detalle cmo trabaja la computadora

Desventajas
El programa slo corre en un CPU Es difcil llegar a ser programador experto Es difcil escribir programas grandes y complejos

Es difcil depurar y dar mantenimiento a los programas


Un error puede provocar que falle el equipo

1.5 Uso practico en la actualidad


Mejorar la eficiencia de una rutina especfica que se ha transformado en un cuello de botella.

Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que no son soportadas por los Lenguajes de alto nivel.

Escribir manejadores de dispositivos para comunicarse directamente con hardware especial tales como tarjetas de red

La manipulacin directa del hardware.

En los programas encajados que almacenan solamente una cantidad pequea de memoria y el dispositivo se piensa para hacer solas tareas del propsito en:

Telfonos

Sistemas del carburante para automvil

Los sistemas de seguridad y los sensores

sensores

Programadores del juego, permitiendo a los juegos funcionar ms rpidamente. En tiempo real programas que necesitan la sincronizacin y respuestas exactas, tales como simulaciones, sistemas de navegacin del vuelo, y equipo mdico. El lenguaje ensamblador todava se ensea en la mayora de la informtica y de los programas electrnicos de la ingeniera.

Al escribir virus de la computadora, bootloaders, ciertos drivers de dispositivo, u otros artculos muy cerca del hardware o del sistema operativo bajo.

Aplicaciones en la Ingeniera del Software:


CUANDO HAY IMPLICADOS GRFICOS Si un programa est dibujando una imagen en la pantalla, tiene que trabajar muy rpido, o la espera sera intolerable. CUANDO ES NECESARIO TOMAR MUCHAS DECISIONES Esto es a menudo necesario en programas de juegos complejos, tales como las damas o el ajedrez. El programa tiene que intentar y comprobar muchas posibilidades y decidir un movimiento que sea razonable.

Sistemas Embebidos: impresoras, cmaras, autos, armas, juguetes, etc. Tiempo Real: en la industria y manufactura, adquisicin datos, control robots

Transporte: barcos, aviones, sondas espaciales, etc.


Entretenimiento: Graficacin, Multimedia, Cine y VideoJuegos DSP (Procesamiento de seal digital (DSP)): Procesamiento de Seales, Voz e Imgenes

Expositor: Andrs Marcelo Garca Correa

Correo: agarcia@est.ups.edu.ec

Para poder realizar un programa se requieren de varias herramientas: Primero un editor para poder crear el programa fuente. Un compilador que no es mas que un programa que traduce el programa fuente a un programa objeto. Un enlazador o linker que genere un ejecutable a partir del programa objeto.

Se debe de tomar en cuenta ciertas reglas para programar en un leguaje Ensamblador, enfocndonos a la forma de escribir las instrucciones para que sea capaz de interpretarlas. Bsicamente el formato de una lnea de cdigo en lenguaje ensamblador consta de 4 partes:

Etiqueta, variable o constante: No siempre definida, si se define es necesario utilizar separadores para diferenciar de las otras partes. Directiva o Instruccin: Es el nombre con el que se conoce a la instruccin que queremos que se ejecute.

Operando(s): La mayora de las instrucciones trabajan con 2 operando pero algunos que funcionan con 1. El primero normalmente es el operando destino, que es el deposito del resultado de alguna operacin; El segundo es el operando fuente que lleva el dato que ser procesado Los operandos se separan entre si por una coma (,).

Comentarios: Como su nombre lo indica es tan solo un informativo, sirve como ayuda para el programador . Ejemplo:

ETIQ1: MOV AX,BX ; EJEMPLO

La UCP o CPU tiene 14 registros internos, cada uno de ellos de 16 bits (una palabra). Los bits estn enumerados de derecha a izquierda, de tal modo que el bit menos significativo es el bit 0. Los registros se pueden clasificar de la siguiente forma:

AX: Registro acumulador. Es el principal empleado en las operaciones aritmticas. BX: Registro base. Se usa para indicar un desplazamiento. CX: Registro contador. Se usa como contador en los bucles. DX: Registro de datos. Tambin se usa en las operaciones aritmticas. Estos registros son de uso general y tambin pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable tambin a los registros BX, CX y DX.

CS: Registro de segmento de cdigo. Contiene la direccin de las instrucciones del programa. DS: Registro segmento de datos. Contiene la direccin del rea de memoria donde se encuentran los datos del programa. SS: Registro segmento de pila. Contiene la direccin del segmento de pila. La pila es un espacio de memoria temporal que se usa para almacenar valores de 16 bits (palabras). ES: Registro segmento extra. Contiene la direccin del segmento extra. Se trata de un segmento de datos adicional que se utiliza para superar la limitacin de los 64Kb del segmento de datos y para hacer transferencias de datos entre Segmentos.

SP: Puntero de la pila. Contiene la direccin relativa al segmento de la pila. BP: Puntero base. Se utiliza para fijar el puntero de pila y as poder acceder a los elementos de la pila.

Para comenzar a dar los primeros pasos en Assembler es aconsejable entender las interioridades del computador, en especial el funcionamiento del CPU. Por ello es necesario aprender una herramienta que ofrece MS-DOS.

Esta en todas las maquinas que contengan MS-DOS, DOS. Es un programa que permite introducir o escribir pequeos programas en ensamblador o lenguaje de maquina. Pudiendo ejecutar instrucciones una a una(paso a paso). De esta manera se pueden localizar y corregir errores.

Para entrar al DEBUG hay dos maneras: 1.- Ir a Inicio-> Ejecutar , al salir la pantalla de ejecutar escribir cmd, y luego DEBUG. 2.- Ir a Inicio-> Ejecutar , al salir la pantalla de ejecutar escribir DEBUG.

? (Help) - sintaxis: ? Muestra una lista con los comandos del DEBUG y su uso. Q (Quit) - sintaxis: Q Salir del DEBUG H (HEX)- sintaxis: H <numero1> <numero2> Suma y resta los parmetros indicados en el DEBUG, y el resultado se expresa en dicho formato. -H 3 2 0005 0001 R (Register) sintaxis: R Muestra el contenido actual de los registros, permitiendo su modificacin. Si no se especifica ningn parmetro muestra el contenido de todos los registro y bandera. En la primera lnea se visualiza los registros de trabajo o generales (AX,BX,CX,DX), de los registros punteros de pila (SP y BP) y de los registros de ndice (SI y DI). Si se especifica el nombre de un registro muestra el valor seguido por : (dos puntos) para introducir un valor. -R AX AX 0000 :

COMANDOS DEL DEBUG


E(Enter) sintaxis: E <direccin> Muestra el contenido de la posicin de memoria indicada. - E 100 3BDO:1000 E4,01 3BDO:1001 85,D8 En este caso la secuencia 01D8 corresponde al cdigo de instruccin ADD AX,BX T(trace) sintaxis: T<direccin> ejecuta una instruccin en la instruccin actual CS:IP G (go) sintaxis: G <direccin> ejecuta un programa detenindose en la direccin indicada. U (Unassemble) sintaxis: U <rango> Desensambla los cdigos de las direcciones de memoria especificadas, muestra un listado equivalente a los cdigos encontrados. A (Assemble) sintaxis: A <direccin> Permite introducir directamente instrucciones o sentencias e ensamblador, con el fin de crear rutinas o programas.

COMANDOS DEL DEBUG


N (names) - Sintaxis: N <Nombre_fichero.com> Asigna un nombre al fichero del programa. Esta orden no guarda el programa. Solo le da un nombre. - n Nombre.com W (write) sintaxis: W Guarda el programa en el fichero indicado con el nombre N, hay que tener en cuenta que hay que asignar el numero de byte que ocupa el programa en el par de registros BX:CX. D (dump) sintaxis: D <INTERVALO> Vuelca o muestra el contenido de la memoria en pantalla. No muestra instrucciones, solo muestra el contenido de las celdas en memoria (valor de sus bytes).

Para ensamblar un programa en el Debug se utiliza el comando "a" (assemble); cuando se utiliza este comando se le puede dar como parmetro la direccin donde se desea que se inicie el ensamblado, si se omite el parmetro el ensamblado se iniciar en la localidad especificada por CS:IP, usualmente 0100H, que es la localidad donde deben iniciar los programas con extensin .COM, y sera la localidad que utilizaremos debido a que debug solo puede crear este tipo especfico de programas.

Imprimir una cadena A en la pantalla: -R (para comprobar los valores inciales) -R AX (Entrar 0200, con lo que AH valdr 02 y AL 00) -R DX (Entrar 0041, con lo que AH valdr 00 y AL 41) -E 100 (Entrar CD que es el mnemnico INT) -E101 (Entrar 21, que indica el operando de la sentencia INT) -R (Para verificar lo ingresado) -G 102(Para ejecutar hasta la lnea 102)

-A 100 2726:0100 MOV AH,63 2726:0102 MOV AL,99 2726:0104 AND AH, AL 2726:0106 -

-A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'Esto es una cadena de prueba.$' 2826:0127 -R BX (entrar 0000) -R CX (entrar 27) -N CADENA1.COM -W

A 100 2726:0100 MOV AX,63 2726:0102 MOV DX,99 2726:0104 ADD AX,DX 2726:0106 SUB DX,100 2726:0108 DIV AX,10 2726:0106 MUL AX,DX -T ; PARA VER EL RESULTADO

- a100 0C1B:0100 jmp 125 ; brinca a la direccin 125H 0C1B:0102 [Enter] - e 102 'Cadena a visualizar 15 veces' 0d 0a '$' - a125 0C1B:0125 MOV CX,000F ; veces que se desplegara la cadena 0C1B:0128 MOV DX,0102 ; copia cadena al registro DX 0C1B:012B MOV AH,09 ; copia valor 09 al registro AH 0C1B:012D INT 21 ; despliega cadena 0C1B:012F LOOP 012D ; si CX>0 brinca a 012D 0C1B:0131 INT 20 ; termina el programa

--a100 0C1B:0100 jmp 125 ; brinca a la direccin 125H 0C1B:0102 [Enter] - e 102 'Cadena a visualizar 15 veces' 0d 0a '$' - a125 0C1B:0125 MOV BX,000F ; veces que se desplegara la cadena 0C1B:0128 MOV DX,0102 ; copia cadena al registro DX 0C1B:012B MOV AH,09 ; copia valor 09 al registro AH 0C1B:012D INT 21 ; despliega cadenA 0C1B:012F DEC BX ; decrementa en 1 a BX 0C1B:0130 JNZ 012D ; si BX es diferente a 0 brinca a 012D 0C1B:0132 INT 20 ; termina el programa.

- a100 0C1B:0100 jmp 125 ; brinca a la direccin 125H 0C1B:0102 [Enter] - e 102 'Cadena a visualizar 15 veces' 0d 0a '$' - a125 0C1B:0125 MOV DX,0102 ; copia cadena al registro DX 0C1B:0128 MOV CX,000F ; veces que se desplegara la cadena 0C1B:012B MOV AH,09 ; copia valor 09 al registro AH 0C1B:012D INT 21 ; despliega cadena 0C1B:012F DEC CX ; decrementa en 1 a CX 0C1B:0130 JCXZ 0134 ; si CX es igual a 0 brinca a 0134 0C1B:0132 JMP 012D ; brinca a la direcci&oauten 012D 0C1B:0134 INT 20 ; termina el programa

Manuales Assembler, DEBUG, MASM http://club.telepolis.com/mydream/Asm/ASM1.html http://club.telepolis.com/mydream/Asm/Pract2.html http://www.scribd.com/doc/23193931/Tutorial-assembler-en-Debug http://www.scribd.com/doc/2984626/Curso-basico-de-Ensamblador

Videos Tutoriales de DEBUG http://www.youtube.com/watch?v=pDRmCzR845A

Vous aimerez peut-être aussi