ASEMBLER
ASEMBLER
ASEMBLER
LABORATORIO 04
PROGRAMACION EN ASEEMBLER Objetivos: Conocer el entorno de programacin de bajo nivel ASEEMBLER Interactuar con los registros generales del procesador. Programar a bajo nivel haciendo uso de comandos en aseembler
ASSEMBLER: El lenguaje ensamblador es el sistema alfanumrico para escribir cdigo mquina mediante expresiones abreviadas (mnemotcnicos). La compilacin es ms complicada porque incluye la conversin de operaciones matemticas complejas, comandos de lenguaje natural o tipos de comandos complejos. Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas mquinas. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la mquina, la memoria, dispositivos de E/S, etc. Software necesario: Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador (Turbo Assembler) que no es ms que un programa que "traduce" el programa fuente a un programa objeto. Y tercero un enlazador (Turbo Linker), que genere el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que se tenga a la mano, como compilador utilizaremos el programa Turbo Assembler (TASM), y como enlazador utilizaremos el Turbo Link (TLINK). La extensin usada para que el TASM reconozca los programas fuente en ensamblador es .ASM, una vez traducido el programa fuente, el TASM crea un archivo con la extensin .OBJ, este archivo contiene un "formato intermedio" del programa, llamado as porque an no es ejecutable pero tampoco es ya un programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la combinacin de varios de estos archivos, un programa ejecutable, cuya extensin es .EXE.
Juegos de instrucciones Las instrucciones del 8086 se pueden dividir en varios grupos: Instrucciones de transferencia de datos Instrucciones aritmticas Instrucciones lgicas Instrucciones de desplazamiento y rotaciones Instrucciones de E/S Instrucciones de control del flujo del programa Instrucciones de cadena de caracteres La estructura del ensamblador: En el lenguaje ensamblador las lneas de cdigo constan de dos partes, la primera es el nombre de la instruccin que se va a ejecutar y la segunda son los parmetros del comando u operando. Por Ejemplo: ADD ah bh Aqu "ADD" es el comando a ejecutar (en este caso una adicin o suma) y tanto "ah" como "bh" son los parmetros. El nombre de las instrucciones en este lenguaje puede estar formado de 2 a 6 letras, a estas instrucciones tambin se les llama nombres mnemnicos o cdigos de operacin, ya que representan alguna funcin que habr de realizar el procesador. Existen algunos comandos que no requieren parmetros para su operacin, as como otros que requieren solo un parmetro. Pasos para ingresar al Assembler: 1. Copiar la carpeta TASM en C:\ 2. Luego abrir DOS 3. Acceder a la carpeta TASM 4. Empezar a programar.
Procedimiento: Desarrollar en ASSEMBLER los siguientes programas: 1. Debe aparecer: 0 1 2 3 4 5 6 7 8 9 1.1. Crear programa en Assembler: edit numero.asm 1.2. Empezar a escribir el cdigo: pila segment stack dw 64 dup (?) pila ends cdigo segment asume cs:cdigo, ss: pila inicio: mov ah,02
mov dl,30h imprimir: int 21h mov bl,dl mov dl,0ah int 21h mov dl,bl cmp dl,39h jz fin inc dl jmp imprimir fin: mov ah,4ch int 21h cdigo ends end inicio
1.3. Verificar si tiene errores con TASM numero.asm 1.4. Escribir TLINK numero 1.5. Para ejecutar el programa se escribe: numero
2. Debe aparecer: 9 8 7 6 5 4 3 2 1 0 2.1. Crear programa en Assembler: edit des_num.asm 2.2. Escribir el cdigo Empezar a escribir: pila segment stack dw 64 dup (?) pila ends cdigo segment asume cs:cdigo, ss: pila inicio: mov ah,02 mov dl,39h imprimir: int 21h
mov bl,dl mov dl,0ah int 21h mov dl,bl cmp dl,30h jz fin dec dl jmp imprimir fin: mov ah,4ch int 21h cdigo ends end inicio
2.3. Verificar si tiene errores con TASM des_num.asm 2.4. Escribir TLINK des_num 2.5. Para ejecutar el programa se escribe: des_num
abcdefghijklmnopqrstuvwxyz 3.1. Crear programa en Assembler: edit letras.asm 3.2. Escribir el cdigo pila segment stack dw 64 dup (?) pila ends cdigo segment asume cs:cdigo, ss: pila inicio: mov ah,02 mov dl,41h mayuscula: int 21h cmp dl,5ah jz numerous inc dl
jmp mayusculas numeros: mov dl,0ah int 21h mov dl,30h num: int 21h cmp dl,39h jz minusculas inc dl jmp num minsculas: mov dl,0ah int 21h mov dl,61h min: int 21h cmp dl,7ah jz fin inc dl jmp min fin: mov ah,4ch int 21h cdigo ends end inicio
3.3. Verificar si tiene errores con TASM letras.asm 3.4. Escribir TLINK letras 3.5. Para ejecutar el programa se escribe: letras
4. Debe aparecer: 0 1 2 3 4 5 6 7 8 9 A B C D . . . Z 4.1. Crear programa en Assembler: edit letnum.asm 4.2. Escribir el cdigo
4.3. Verificar si tiene errores con TASM letnum.asm 4.4. Escribir TLINK letnum 4.5. Para ejecutar el programa se escribe: letnum
Conclusiones: El lenguaje ensamblador como cualquier lenguaje de programacin es un conjunto de palabras que le indican al ordenador lo que tiene que hacer. Sin embargo la diferencia fundamental es que cada instruccin escrita en lenguaje ensamblador tiene una correspondencia exacta con una operacin en el procesador. Por lo que son operaciones muy sencillas tales como: Cargar 32 en el registro BX o Transferir el contenido del registro CL al CH. Las palabras del lenguaje ensamblador son nemotcnicas que representan el cdigo mquina, lenguaje que entiende el procesador.