Академический Документы
Профессиональный Документы
Культура Документы
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.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.
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.
Desventajas
El programa slo corre en un CPU Es difcil llegar a ser programador experto Es difcil escribir programas grandes y complejos
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
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
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.
Sistemas Embebidos: impresoras, cmaras, autos, armas, juguetes, etc. Tiempo Real: en la industria y manufactura, adquisicin datos, control robots
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:
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 :
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