MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 PRACTICA NO. 0 INICIANDO. OBJETIVO: EN ESTA PRACTICA DESARROLLAREMOS EL USO DEL ENSAMBLADOR TASM PARA EL MICROPROCESADOR 8086 Y SUPERIORES. RECURSOS: Para implementar los ejercicios de programación en lenguaje ensamblador se utilizarán las siguientes herramientas de software: Editor: Ensamblador: Enlazador: Depurador: EDIT / NE / o cualquier otro que genere archivos ASCII. TASM.EXE TLINK.EXE TD.EXE TEORIA. El Turbo Assembler (TASM), un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de herramientas de programación en lenguaje ensamblador para la familia de los microprocesadores x86. Como se pudiera esperar, trabajaban bien con los compiladores de lenguaje de alto nivel de Borland para los PC, como Turbo C y Turbo Pascal. Junto con el resto de suite de lenguajes de programación Turbo, Turbo Assembler ya no es mantenido. El paquete Turbo Assembler vino junto con el enlazador Turbo Linker, y era interoperable con el depurador Turbo Debugger. Para la compatibilidad con el ensamblador Microsoft Macro Assembler (MASM) de Microsoft, TASM también podía ensamblar los archivos de código fuente del MASM por medio de su modo MASM. Al igual que éste, es un ensamblador de alto nivel REFERENCIA: http://es.wikipedia.org/wiki/Turbo_Assembler DESARROLLO. 1. OBTENER LOS ARCHIVOS QUE SE USARAN EN EL ENSAMBLADOR 8086 PARA ENSAMBLAR UN ARCHIVO FUENTE .ASM Y REALIZAR SU EJECUCION. TODO ES LLEVARLO A CABO EN EL MODO DE SISTEMA MSDOS. PASO 1. CONECTESE A INTERNET Y MEDIANTE UN BUSCADOR (EJ. GOOGLE) LOCALICE EL SITIO DONDE SE ENCUENTREN LOS ARCHIVOS TASM.EXE Y TLINK.EXE EN CUALQUIERA DE LAS VERSIONES. PASO 2. UNA VEZ QUE TENGA LOCALIZADOS LOS ARCHIVOS DESCARGUELOS Y GRABELOS EN UN CARPETA DE SU DISCO DURO (EJ. C:\INFORMATICA> ) O EN SU MEMORIA USB. (EJ. G:\INFORMATICA>). EN CASO DE ESTAR COMPRIMIDOS, HAGA UNA EXTRACCION DE ESOS ARCHIVOS O TODOS SEGÚN SEA EL CASO. PASO 3. ABRA EL EDITOR DE TEXTO (EJ. BLOCK DE NOTAS DE WINDOWS) Y ESCRIBA EL SIGUIENTE PROGRAMA EN ENSAMBLADOR. LA ESTRUCTURA SIGUIENTE ES LA FORMA ESTANDAR. MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 UNA VEZ ESCRITO LAS INSTRUCCIONES DEL SIGUIENTE PROGRAMA, GUARDELO EN LA CARPETA DONDE SE LOCALIZA TAMBIEN LOS ARCHIVOS TASM.EXE Y TLINK.EXE, EL NOMBRE DEL ARCHIVO SERA UTILIZANDO SOLO DE 1 A 8 CARACTERES DE LONGITUD Y LA EXTENSION DEBERA SER .ASM. POR EJEMPLO GUARDELO COMO: HOLA.ASM EN SU CARPETA C:\INFORMATICA O G:\INFORMATICA LISTADO DEL PRIMER PROGRAMA ESCRITO EN ENSAMBLADOR 80 86 USANDO TASM ;--------------------------------------------------------- guarde este archivo como HOLA.ASM ; ; HOLA.ASM ; ; PROGRAMA CLASICO DE EJEMPLO EN ENSAMBLADOR. DESPLIEGA MENSAJE EN PANTALLA PILA SEGMENT STACK DW 64 DUP(?) PILA ENDS DATA SEGMENT SALUDO DB 'HOLA MUNDO, !!!!!!!!! ',10,13,'$' ; MENSAJE EN CADENA SALUDO DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILA INICIO: MOV AX,DATA MOV DS,AX MOV DX,OFFSET SALUDO ;ENVIA EL MENSAJE A PANTALLA MOV AH,09H ;SERVICIO PARA ENVIAR MENSAJE INT 21H ;INTERRUPCION DOS MOV AH,4CH ;SALIR A MODO DE SISTEMA INT 21H CODE ENDS END INICIO ;---------------------------------------------------------------- MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 PASO 4. ABRA UNA VENTANA AL MODO DE SISTEMA (DOS) UTILIZANDO CUALQIERA DE LOS DOS METODOS SIGUIENTES: a) METODO 1. DE CLICK EN INICIO DE CLICK EN EJECUTAR ESCRIBA EL COMANDO: CMD APARECERA LA VENTANA dar click en inicio dar click en todos los programas dar click en accesorios dar click en modo de sistema y aparecerá la misma venta activa del método 1 b) METODO 2. PASO 5. ESTANDO EN LA VENTANA ACTIVA DE DOS, CAMBIE A SU CARPETA DE TRABAJO DONDE SE TIENEN LOS ARCHIVOS TASM.EXE, TKINK.EXE Y HOLA.ASM DESDE MSDOS COMO SE INIDICA SI SU CARPETA ESTA EN LA UNIDAD C: CD .. CD .. CD INFORMATICA MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 SI SU CARPETA ESTA EN OTRA UNIDAD, EJEMPLO UNA USB DENOMINADA H: SIMPLEMENTE ESCRIBA LA LETRA DE LA UNIDAD SEGUIDA DE DOS PUNTOS, EJEMPLO H: LUEGO APARECERA EL PROMOPT H:>- LUEGO ESCRIBA: APARECERA CD INFORMATICA H:\INFORMATICA> MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 PASO 6. DESDE LA VENTANA ACTIVA DE MSDOS ENSAMBLAMOS NUESTRO ARCHIVO HOLA.ASM TECLEAMOS: tasm /l /zi hola.asm Turbo Assembler comenzará a ensamblar al programa desplegando: Turbo Assembler Version 4.1 Copyright (c) 1988 by Borland International Assembling file: HOLA.ASM Error messages: None Warning messages: None Remaining memory: 407k Use el comando DIR para observar los archivos generados por el programa Turbo Assembler, tecleando: dir Estos son: hola.obj hola.lst Para convertir el programa objeto en un programa ejecutable usaremos el programa TLINK.EXE, tecleando: tlink /v /m /s /l hola TLink empezará a convertir el programa desplegando lo siguiente: Turbo Link Version 2.0 Copyright (c) 1987, 1988 By Borland International Use el comando DIR para observar los archivos generados por el programa TLink, tecleando: dir Estos son: hola.map hola.exe MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 PASO 7. YA ENSAMBLADO Y COMPILADO EL ARCHIVO HOLA.ASM AL ARCHIVO HOLA.EXE, LO PODEMOS EJECUTAR ESCRIBIENDO EL NOMBRE Y ENTER. C:\INFORMATICA> HOLA <enter> Resultado de la ejecución, mostrar en pantalla un mensaje “HOLA MUNDO, !!!!!!!!!” MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 2. TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 EN ESTE PUNTO, SE LLEVAREA A CABO EL MISMO PROCEDIMIENTO DESDE EL PASO 3 DEL PUNTO 1 ANTERIOR, ABRIENDO NUEVAMENTE EL EDITOR Y ESCRIBIR EL SIGUIENTE PROGRAMA EN ENSAMBLADOR. ESTE PROGRAMA ESTARA ESCRITO OTRO FORMATO O ESTRUCTURA, SE LE DENOMINA ESTRUCTURA COMPACTA. ASMISMO, EL PROGRAMA YA ESCRITO SE GUARDARA CON EL NOMBRE DE ARCHIVO HELLO.ASM Y SE ENSAMBLARA PARA SU EJECUCION- PRUEBE SU RESULTADO. ;----------------------------------------------------------------;HELLO.ASM – Presenta el mensaje "Hello World" ; .MODEL SMALL .STACK 100h .DATA HelloMessage DB '...... Hello, world...', 13, 10,'$' ;‘$’ es el terminador ;para la función 9 ;de la INT 21h .CODE principal: mov ax,@data mov ds,ax mov ah,9 mov dx, OFFSET HelloMessage int 21h mov ah, 4ch int 21h ; punto de inicio del programa ; hace apuntar DS hacia el segmento de datos ; función de impresión de string de MS-DOS ;carga DX con el offset de "Hello, ;world" dentro de DATA ; llama a la INT 21h para imprimir el mensaje ; 4Ch es la función del DOS para terminar la ; ejecución de un programa ; finaliza la ejecución, retorna al prompt del MS-DOS END principal ; directiva que le notifica al TASM el fin del código ; ---------------------------------------------------------------- MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 3. TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 UTILIZANDO EL ARCHIVO HOLA.ASM, NUEVAMENTE LEERLO DESDE EL EDITOR DE TEXTO Y REALIZAR LO SIGUIENTE: modifique la línea 23 para que en lugar de tener la instrucción: mov DS,AX se tenga un error de sintaxis: mob DS,AX Grabe el programa y salga del editor. Trate de ensamblar el programa, repitiendo los pasos de ensamblado como en el punto 1. El ensamblador desplegará el siguiente mensaje de error: 4. A CONTINUACIÓN SE PRESENTA UN ARCHIVO DE PROCESAMIENTO POR LOTES (BATCH) QUE PERMITE AUTOMATIZAR EL PROCESO DE ENSAMBLAR (TASM.EXE) Y ENLAZAR (TLINK.EXE) UN PROGRAMA EN ENSAMBLADOR. UTILIZA EL EDITOR DE TEXTO PARA CREARLO Y GRÁBELO EN SU DISCO Y CARPETA DE TRABAJO (C:\INFORMATICA>), CON EL NOMBRE COMPILAR.BAT. -------------------- ESCRIBA Y GRABE LO SIGUIENTE Rem Este archivo de procesamiento por lotes ensambla y liga un rem programa fuente usando el macroensamblador del 8086: rem TURBO ASSEMBLER y el ligador TLINK de Borlant Int. @echo off rem Si no se incluyo el nombre del archivo if $$%1 == $$ goto ERROR1 rem Si no existe el archivo if not exist %1.asm goto ERROR2 rem llama al ensamblador tasm /l /zi %1.asm MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 rem Si hubo un error al ensamblado if errorlevel 1 goto FIN rem Llama al ligador tlink /v /m /s /l %1 goto FIN :ERROR1 echo . echo Uso: ASSM nomArch (omita la extension .asm) echo . goto FIN :ERROR2 echo . echo No existe el archivo %1.asm echo . :FIN CON ESTE ARCHIVO, USTED YA NO ESCRIBIRA POR SEPARADO TASM O TLINK, SINO QUE SOLO ESCRIBIRA EL NOMBRE COMPILAR Y EL ARCHIVO A ENSAMBLAR Y ENLAZAR, COMO SE MUESTRA: C:\INFORMATICA> COMPILAR HOLA DESPUES DE ESTO, SE HABRAN GENERADO LOS ARCHIVOS: .LST, .MAP, .OBJ Y .EXE DEL ARCHIVO ENSAMBLADO. AL UTLIZAR ESTA FORMA NO ES NECESARIO ESCRIBIR LA EXTENSION .ASM, TAL COMO SE MUESTRA ARRIBA NI LA EXTENSION .BAT EN EL NOMBRE DE COMPILAR. 5. ENSAMBLE, COMPILE Y EJECUTE EL SIGUIENTE PROGRAMA. ; MOSTRANDO UN MENU EN PANTALLA ; SOLO SE EXHIBEN LAS OPCIONES, NO SE REALIZAR NINGUNA OPERACION ;---------------------------------------------------------------.MODEL SMALL .STACK .DATA CrLf db 10,13,10,13,'$' menu db 10,13,' 1. ALTA ' db 10,13,' 2. BAJA ' db 10,13,' 3. MODIFICACION' db 10,13,' 4. LISTADO ' db 10,13,' 5. IMPRIMIR ' db 10,13,' 6. SALIR ' db 10,13,' ' db 10,13,' Opcion?: $' MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 msg db 10,13,' GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 -- MENU PRINCIPAL -- ',10,13,10,13,'$' .CODE _MENU: ;SEGMENTO DE DATOS MOV AX,@DATA MOV DS,AX ;------------------------------------;LIMPIAR PANTALLA mov ah,00h mov al,03h int 10h ;MOSTRAR TITULO EN MSG MOV DX,OFFSET MSG MOV AH,09H INT 21H ;MOSTRAR MENU MOV DX,OFFSET MENU MOV AH,09H INT 21H ;LEER TECLADO MOV AH,01H INT 21H ;------------------------------------_SALIR_DOS: MOV AH,4CH INT 21H END _MENU 6. DISEÑAR UN PROGRAMA EN ENSAMBLADOR UTILIZANDO LA ESTRUCTURA COMPACTA QUE MUESTRE EN PANTALLA TODO EL TEXTO QUE SE INDICA A CONTINUACION. ;------------------------------------------------------------------------------------------- 1. Arquímedes (científico griego, alumno de Euclides, 287-212 a.C.): "Dadme un punto de apoyo 2. 3. 4. 5. y levantaré el Mundo" Arquímedes (científico griego, alumno de Euclides, 287-212 a.C.): "¡Eureka!" (que significa "¡Lo encontré!") Aristóteles de Estagira (filósofo griego, discípulo de Platón y preceptor de Alejandro Magno, 384-322 a.C.): "Saber es acordarse" Aristóteles de Estagira (filósofo griego, discípulo de Platón y preceptor de Alejandro Magno, 384-322 a.C.): " Lo que está en nuestro poder hacer, también está en nuestro no poder hacerlo" Aristóteles de Estagira (filósofo griego, discípulo de Platón y preceptor de Alejandro Magno, 384-322 a.C.): "Todo lo que hacemos está puesto con el ojo en otra cosa" MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 6. Aristóteles de Estagira (filósofo griego, discípulo de Platón y preceptor de Alejandro Magno, 384-322 a.C.): "La virtud está en el término medio" 7. Antístenes de Atenas (filósofo griego, discípulo de Gorgias y Sócrates, fundador de la escuela 8. 9. 10. 11. 12. cínica, 455-360 a.C.): "Consulta el ojo de tu enemigo, porque es el primero que ve tus defectos" Albert Einstein (físico alemán, nacionalizado suizo y luego estadounidense, 1879-1955): "No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" Albert Einstein (físico alemán, nacionalizado suizo y luego estadounidense, 1879-1955): "Si tu intención es describir la verdad, hazlo con sencillez y la elegancia déjasela al sastre" Albert Einstein (físico alemán, nacionalizado suizo y luego estadounidense, 1879-1955): "Dios no juega a los dados" (Ver cita de Bohr). Albert Einstein (físico alemán, nacionalizado suizo y luego estadounidense, 1879-1955): "la imaginacion es más importante que el conocimiento." Thomas Alva Edison (inventor estadounidense, 1847-1931): "No sabemos ni un cienmilmillonésimo de nada" ;---------------------------------------------------------------------------------------------APUNTES PARA ESTE EJERCICIO: i. ESTRUCTURA COMPACTA DE UN PROGRAMA EN ENSAMBLADOR USANDO TASM .MODEL SMALL .STACK .DATA ; variables a inicializar .CODE _INICIO: MOV AX,@DATA MOV DS,AX ;-------------------------------------- ;-------------------------------------_SALIR: MOV AH,4CH INT 21H END _INICIO ii. RUTINA PARA ENVIASR A PANTALLA DE TEXTO UN MENSAJE MATERIA: INFORMATICA BÀSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programación. DPTO.: COMUNICACIONES Y ELECTRÒNICA SALON: 308 TRIM: PRIMAVERA 2009 GPO: A DICIS – DIV. INGENIERIAS CAMPUS SALAMANCA – IRAPUATO UNIVERSIDAD DE GUANAJUATO HORARIO: MAR Y JUE de 8:00 a 10:15 MOV DX, OFFSET mensaje MOV AH, 09H INT 21H NOTAS: EL RESULTADO DE CADA PROGRAMA DE ESTA PRACTICA, SE ENVIARA AL CORREO: [email protected] (pantalla de resultados: ventana de modo de sistema) REVISE Y ESTUDIE CADA EJERCICIO Y TRATE DE ENTENDERLOS PARA LOS EJERCICIOS QUE SE REALIZARAN EN LAS SIGUIENTES PRACTICAS. CUALQUIER DUDA O COMENTARIO FAVOR DE EXPRESARLO