lab-3-2015

21
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERÍA Y ARQUITECTURA ESCUELA DE INGENIERIA ELECTRICA SISTEMAS DIGITALES PROGRAMABLES I Reporte Guía de Laboratorio N° 3 Alumnos: Carnet: Br. Monteagudo Guevara, Jorge Donaciano MG10034

Upload: jorge-monte

Post on 12-Jan-2016

216 views

Category:

Documents


3 download

DESCRIPTION

en lenguaje ensamblador

TRANSCRIPT

Page 1: LAB-3-2015

UNIVERSIDAD DE EL SALVADORFACULTAD DE INGENIERÍA Y ARQUITECTURAESCUELA DE INGENIERIA ELECTRICASISTEMAS DIGITALES PROGRAMABLES I

Reporte Guía de Laboratorio N° 3

Alumnos: Carnet:

Br. Monteagudo Guevara, Jorge DonacianoMG10034

Ciudad Universitaria, 21 Abril de 2015.

Page 2: LAB-3-2015
Page 3: LAB-3-2015

INTRODUCCION.

En este laboratorio se busca que el estudiante tenga conocimientos de las formas que pueden tomar los programas escritos para correr bajo el ambiente del sistema operativo DOS.

El DOS carece por completo de interfaz gráfica, y no utiliza el ratón, aunque a partir de ciertas versiones solía incluir controladoras para detectarlo, inicializarlo y hacerlo funcionar bajo diversas aplicaciones de edición y de interfaz y entorno gráfico, además de diversos juegos que tendían a requerirlo. Por sí sólo es incapaz de detectar el hardware, a menos que las mencionadas controladoras incluyan en su núcleo de sistema, como residentes en memoria, el código, instrucciones y funciones necesarias.

La necesidad de mantener la compatibilidad con programas antiguos, hacía cada vez más difícil programar para DOS, debido a que la memoria estaba segmentada, es decir, la memoria apuntada por un puntero tenía como máximo el tamaño de un segmento de 64KB. Para superar estas limitaciones del modo real de los procesadores x86, se recurría al modo protegido de los procesadores posteriores (80386, 80486...), utilizando programas extensores que hacían funcionar programas de 32 bits sobre DOS.

OBJETIVOS.

OBJETIVO GENERAL:

Conocer y entender los distintos formatos que puede tener un programa bajo el ambiente DOS.

OBJETIVOS ESPECIFICOS:

Conocer las directivas más importantes utilizadas por MASM y TASM.

Realizar el proceso de ensamblado y link usando la ventana del DOS.

Page 4: LAB-3-2015

MARCO TEORICO.

El Sistema Operativo con objeto de facilitar el trabajo de los ordenadores contiene rutinas y modelos de gestión de E/S evitando a los programadores y usuarios conocer las instrucciones de la máquina concreta de cada periférico.

MS-DOS, acrónimo de Microsoft Disk Operating System (sistema operativo de disco de Microsoft). Como otros sistemas operativos, el sistema MS-DOS supervisa las operaciones de entrada y salida del disco y controla el adaptador de vídeo, el teclado y muchas funciones internas relacionadas con la ejecución de programas y el mantenimiento de archivos. El MS-DOS es un sistema operativo mono tarea y mono usuario con una interfaz de línea de comandos.

El DOS se compone de tres ficheros principales:

IO.SYS MSDOS.SYS COMMAND.COM

Los dos primeros son el núcleo del Sistema Operativo al arrancar el ordenador se copian en memoria y pasan a controlar la computadora. El Command.com es el intérprete de comandos, cuando el usuario teclea un comando, si este es interno lo ejecuta directamente, si es externo ejecuta ese otro programa cambiando el contador de programa para que apunte a ese nuevo programa.

Dentro del DOS distinguimos:

Directorios. Ficheros. Sistemas de ficheros en MS-DOS:

Tres niveles:

1. Nivel Hardware: es el nivel de los dispositivos que manejan el disco (FDC Floppy Disk Controller), mediante este dispositivo se accede al disco pudiéndose formatear una pista, leer un sector, fusionarse sobre una pista etc. Proporciona una serie de comandos para operar con Fidel disco.

2. Nivel de implementación: trata de como el MS-DOS crea la estructura de ficheros sobre los sectores del disco.

3. Nivel lógico: trata de como el MS-DOS maneja los ficheros por medio del (FCB Fail Control Block) y del Handless (identificadores

Page 5: LAB-3-2015

1. PROCEDIMIENTO.

Utilizando el archivo “.com” proporcionado en la guía de laboratorio se ha procedido a realizar el proceso de ensamblado y enlazado similar a lo realizado en la guía 2; el archivo “.com”, se muestra a continuación:

; programa. comNAME 33;versión de un archivo.COM para una impresiónCSEG SEGMENT PARA PUBLIC "CODE"ORG 100H ; origen de programaASSUME CS:CSEG, DS:CSEG, SS:CSEG, ES,CSEG ;----------------PROCEDIMIENTO--------------CODIGO PROC NEARMOV DX, OFFSET MENSAJE; obtener la posición del mensajeMOV AH, 09H ; despliega una cadena en el área de datosINT 21H ; llama al DOSMOV AL,0 ; retornar al códigoMOV AH,4CH ; terminarCODIGO ENDP; finaliza el CODIGO;--------------------FIN DEL PROCEDIMIENTO-------------MENSAJE DB "Experimento del programador$", 0DH, 0AHCSEG ENDSEND CODIGO

Luego lo depuramos como se muestra en la siguiente imagen 1:

Creando los siguientes archivos en la carpeta BIN cono se muestra en laimagen2:

Page 6: LAB-3-2015

Como el programa se creó con extensión .COM para crear un programa .COM a partir de uno .EXE se usó el programa BIN del DOS el formato general a seguir fue: exe2bin PROGR.EXE PROGR.COM, como se muestra en la imagen 3:

Obteniendo el archivo deseado de la imagen 4:

Se Imprimió el código fuente y el archivo .LST creado por el ensamblador, el cual puede apreciarse a continuación:

Microsoft (R) Macro Assembler Version 6.11 04/28/14 22:47:3933.asm Page 1 - 1

; programa. comNAME 33;version de un archivo.COM para una impresión

0000 CSEG SEGMENT PARA PUBLIC "CODE" ORG 100H; origen del programa ASSUME CS:CSEG, DS:CSEG, SS:CSEG, ES:CSEG ;----------------PROCEDIMIENTO--------------

0100 CODIGO PROC NEAR 0100 BA 010B R MOV DX, OFFSET MENSAJE; obtener la posición del mensaje

Page 7: LAB-3-2015

0103 B4 09 MOV AH, 09H; despliega una cadena en el área de datos 0105 CD 21 INT 21H ; llama al DOS 0107 B0 00 MOV AL,0 ; retornar al código 0109 B4 4C MOV AH,4CH ; terminal 010B CODIGO ENDP; finaliza el CODIGO

;--------------------FIN DEL PROCEDIMIENTO------------- 010B 45 58 50 45 52 49 MENSAJE DB "Experimento del programador$", 0DH,0AH 4D 45 4E 54 4F 20 44 45 4C 20 50 52 4F 47 52 41 4D 41 44 4F 52 24 0D 0A 0129 CSEG ENDS

END CODIGO

Microsoft (R) Macro Assembler Version 6.11 04/28/14 22:47:3933.asm Symbols 2 - 1

Segments and Groups:

N a m e Size Length Align Combine Class

CSEG . . . . . . . . . . . . . . 16 Bit 0129 Para Public 'CODE'

Procedures, parameters and locals:

N a m e Type Value Attr

CODIGO . . . . . . . . . . . . . P Near 0100 CSEG Length= 000B Public

Symbols:

N a m e Type Value AttrMENSAJE . . . . . . . . . . . . Byte 010B CSEG

0 Warnings 0 Errors

El resultado obtenido corriendo el archivo “.exe” desde el símbolo del sistema ha sido el siguiente: Imagen 5

Page 8: LAB-3-2015

Se escribió el programa .EXE, se depuraron algunos errores, se ensamblo y enlazo según el procedimiento escrito en la práctica de laboratorio anterior; el código ha sido el siguiente:;PROGRMA.EXE;Version de un archivo .EXE para una impresiónCSEG SEGMENT PARA PUBLIC "CODE"ASSUME CS: CSEG, DS: DSEG, SS: STACK;-----------------SEGMENTO DE CODIGO---------CODIGO PROC FAR;----------LIMPIADO PANTALLA----------------MOV AX, 0600MOV BH, 07H ; Atributo característico blanco con fondo negroMOV CX, 0 ; punto de partida de la limpiezaMOV DX, 2379 ; final de la limpiezaINT 10H; Inicia centrado el textoMOV AX, DSEGMOV DS, AXMOV DX, OFFSET MENSAJE; obtener la posición del mensajeMOV AH, 09 ; despliega una cadena en el área de datos INT 21H ; llama al DOS MOV AH, 0INT 16HCODIGO ENDPCSEG ENDS;------------SEGMENTO DE DATOS------------DSEG SEGMENT PARA "DATA" MENSAJE DB "Experimento del programador$" DSEG ENDS; ---------SEGMENTO DE PILA---------------- STACK SEGMENT PARA STACK "STACK" DB 20 DUP ("STACK")STACK ENDSEND

El proceso de ensamblado y enlazado es el mismo utilizado en la práctica anterior, el cual se muestra en la imagen 6:

Page 9: LAB-3-2015

Creando los siguientes archivos correspondientes a la imagen 7:

Luego se ejecutó el archivo creado, para obtener la impresión del mensaje, el mensaje es “Experimento del programador”, como puede apreciarse en la siguiente imagen 8:

ASIGNACIONES:

1. Listado de ambos programas:

Microsoft (R) Macro Assembler Version 6.11 04/29/14 00:45:43nom.asm Page 1 - 1

.MODEL SMALL 0000 .DATA ; define el segmento de datos tipo publico 0000 2B 2B 2B 2B 2B 2B MENS1 DB "+++++++ laboratorio # 3++++++++$" 2B 6C 61 62 6F 72 61 74 6F 72 69 6F

Page 10: LAB-3-2015

20 23 20 33 2B 2B 2B 2B 2B 2B 2B 2B 24 001F 47 41 52 43 49 41 MENS2 DB "GARCIA REYES, PEDRO DAVID $" 20 52 45 59 45 53 2C 20 50 45 44 52 4F 20 44 41 56 49 44 20 24 003A 4D 4F 4E 54 45 41 MENS3 DB "MONTEAGUDO GUEVARA, JORGE DONACIANO$" 47 55 44 4F 20 47 55 45 56 41 52 41 2C 20 4A 4F 52 47 45 20 44 4F 4E 41 43 49 41 4E 4F 24 005E 50 52 45 53 49 4F MENS4 DB "PRESIONE CUALQUIER LETRA PARA SALIR$" 4E 45 20 43 55 41 4C 51 55 49 45 52 20 4C 45 54 52 41 20 50 41 52 41 20 53 41 4C 49 52 24

0000 .CODE ; genera un inicio de código tipo publico.STARTUP ; define el offset 76100hMOSTRAR MACRO FILA, COLUMNA, MENS; macro

para mostrar el mensaje MOV DH, FILA

MOV DL, COLUMNAMOV BH, 0 ; carga el número de página a

mostrarMOV AH, 02 ; petición para colocar el

cursorINT 10H ; llama al BIOSLEA DX, MENS; carga la dirección de la

indicaciónMOV AH, 09H ; despliega una cadena en

el área de datosINT 21H ; llama al DOS

ENDM 0017 CODIGO PROC FAR ; procedimiento lejano

MOSTRAR 9, 22, MENS1; imprime en pantalla el mensaje principal 0017 B6 09 1 MOV DH, 9 0019 B2 16 1 MOV DL, 22 001B B7 00 1 MOV BH, 0 ; carga el número de página a mostrar 001D B4 02 1 MOV AH, 02 ; petición para colocar el cursor 001F CD 10 1 INT 10H ; llama al BIOS 0021 8D 16 0000 R 1 LEA DX, MENS1; carga la dirección de la indicación 0025 B4 09 1 MOV AH, 09H ; despliega una cadena en el área de datos

Page 11: LAB-3-2015

0027 CD 21 1 INT 21H ; llama al DOSMOSTRAR 13,22, MENS2; imprime en pantalla el

mensaje Jorge 0029 B6 0D 1 MOV DH, 13 002B B2 16 1 MOV DL, 22 002D B7 00 1 MOV BH, 0 ; carga el número de página a mostrar 002F B4 02 1 MOV AH, 02 ; petición para colocar el cursor 0031 CD 10 1 INT 10H ; llama al BIOS 0033 8D 16 001F R 1 LEA DX, MENS2 ; carga la dirección de la indicacion 0037 B4 09 1 MOV AH, 09H ; despliega una cadena en el area de datos 0039 CD 21 1 INT 21H ;l lama al DOS

MOSTRAR 15,22, MENS3; imprime en pantalla el mensaje pedro 003B B6 0F 1 MOV DH, 15 003D B2 16 1 MOV DL, 22 003F B7 00 1 MOV BH, 0 ; carga el número de página a mostrar 0041 B4 02 1 MOV AH, 02 ; petición para colocar el cursor 0043 CD 10 1 INT 10H ; llama al BIOS 0045 8D 16 003A R 1 LEA DX, MENS3; carga la dirección de la indicacion 0049 B4 09 1 MOV AH, 09H ; despliega una cadena en el area de datos 004B CD 21 1 INT 21H ; llama al DOS

MOSTRAR 23,40, MENS4 ; imprime en pantalla el mensaje para salir 004D B6 17 1 MOV DH, 23 004F B2 28 1 MOV DL, 40 0051 B7 00 1 MOV BH, 0 ; carga el número de página a mostrar 0053 B4 02 1 MOV AH, 02 ; petición para colocar el cursor 0055 CD 10 1 INT 10H ; llama al BIOS 0057 8D 16 005E R 1 LEA DX, MENS4; carga la dirección de la indicacion 005B B4 09 1 MOV AH, 09H ; despliega una cadena en el area de datos 005D CD 21 1 INT 21H ; llama al DOS 005F B4 00 MOV AH, 0H ; leer carácter del teclado 0061 CD 16 INT 16H ; llama los driver del teclado 0063 CODIGO ENDP; fin de código

.EXIT ; salir END ; fin

Page 12: LAB-3-2015

Microsoft (R) Macro Assembler Version 6.11 04/29/14 00:45:43nom.asm Symbols 2 - 1

Macros:

N a m e Type

MOSTRAR . . . . . . . . . . . . Proc

Segments and Groups:

N a m e Size Length Align Combine Class

DGROUP . . . . . . . . . . . . . GROUP_DATA . . . . . . . . . . . . . 16 Bit 0082 Word Public 'DATA'_TEXT . . . . . . . . . . . . . 16 Bit 0067 Word Public 'CODE'

Procedures, parameters and locals:

N a m e Type Value Attr

CODIGO . . . . . . . . . . . . . P Far 0017 _TEXT Length= 004C Public

Symbols:

N a m e Type Value Attr

@CodeSize . . . . . . . . . . . Number 0000h @DataSize . . . . . . . . . . . Number 0000h @Interface . . . . . . . . . . . Number 0000h @Model . . . . . . . . . . . . . Number 0002h @Startup . . . . . . . . . . . . L Near 0000 _TEXT@code . . . . . . . . . . . . . Text _TEXT@data . . . . . . . . . . . . . Text DGROUP@fardata? . . . . . . . . . . . Text FAR_BSS@fardata . . . . . . . . . . . . Text FAR_DATA@stack . . . . . . . . . . . . . Text DGROUPMENS1 . . . . . . . . . . . . . Byte 0000 _DATAMENS2 . . . . . . . . . . . . . Byte 001F _DATAMENS3 . . . . . . . . . . . . . Byte 003A _DATAMENS4 . . . . . . . . . . . . . Byte 005E _DATA

0 Warnings 0 Errors

Page 13: LAB-3-2015

2. Escriba un programa equivalente en formato .EXE el programa mostrara un mensaje en pantalla conteniendo los nombres de los autores en renglones a parte utilizando interrupciones (sin acceder directamente los chips de video).

.MODEL SMALL

.DATA ;define el segmento de datos tipo publico MENS1 DB "+++++++laboratorio # 3++++++++$" MENS2 DB "MONTEAGUDO GUEVARA, JORGE DONACIANO$" MENS3 DB "PRESIONE CUALQUIER LETRA PARA SALIR$" .CODE ; genera un inicio de código tipo publico.STARTUP ; define el offset 76100hMOSTRAR MACRO FILA, COLUMNA, MENS ;macro para mostrar el mensaje MOV DH, FILA MOV DL, COLUMNA MOV BH, 0 ; carga el número de página a mostrar MOV AH, 02 ; petición para colocar el cursor INT 10H ; llama al BIOS LEA DX, MENS ; carga la dirección de la indicación MOV AH, 09H ; despliega una cada en el área de datos INT 21H ; llama al DOSENDMCODIGO PROC FAR ; procedimiento lejano MOSTRAR 9, 22, MENS1; imprime en pantalla el mensaje principal MOSTRAR 13,22, MENS2; imprime en pantalla el mensaje Jorge MOSTRAR 23,40, MENS3 ; imprime en pantalla el mensaje para salir MOV AH, 0H ; leer carácter del teclado INT 16H ; llama los driver del tecladoCODIGO ENDP; fin de código.EXIT ; salirEND; fin

Primero se digita en la terminal el comando masm NOM.asm, con lo que se creó el archivo OBJ como se muestra en la imagen 9.

Page 14: LAB-3-2015

Luego se utilizó el comando link NOM.obj, con lo que se creó el archivo exe como se puede observar en la imagen 10.

Finalmente se corrió el archivo EXE obteniéndose los siguientes resultadosde la imagen 11:

3. Escriba el ejemplo .EXE en el formato de modelo pequeño para el programa ensamblador turbo assambler TASM. Ensamble enlace y ejecute el programa.

Utilizando el ejemplo de los nombres de los integrantes que se presentan en pantalla, procedemos a ensamblar y a ejecutar en TASM.

Ahora procedemos igual que en MASM, solo que en lugar de colocar el comando “masm” para crear el archivo .obj, ahora el comando es “tasm” como podemos ver en la imagen 12:

Page 15: LAB-3-2015

Y ahora en lugar de escribir el comando “link”, escribimos el comando “tlink” para crear el ejecutable como se puede observar en la imagen 13.

Con estos dos comandos hemos creado el archivo .obj y .exe que igualmente hacíamos en el MASM. Donde podemos ver en la imagen 14.

Finalmente ejecutamos el archivo .exe y mostrara en la pantalla los nombres de los integrantes del grupo en la imagen 15.

4. Investigue como se han creado programas .COM en distintas versiones de DOS, corra un ejemplo y muestre la ventanas en la cual se muestra la version de DOS y la corrida del programa una sola, y comente los cambios si es que los hay.

MS-DOS fue el producto clave, a finales de los años ochenta del siglo XX, en la transformación de Microsoft desde sus orígenes en los años 70 como proveedor especializado en lenguajes de programación a su actual estado como gigante en la industria informática. Precisamente los ingresos por las ventas de MS-DOS (particularmente mediante contratos exclusivos con marcas, probados como ilegales en Estados Unidos más tarde) [cita requerida] hicieron posible un espectacular crecimiento de la compañía. De hecho, hasta la salida de Windows 95, los ingresos por MS-DOS eran superiores a los de Windows. Con el tiempo MS-DOS imitó otros sistemas operativos; MS-DOS 2.0 introdujo características de Unix tales como subdirectorios, es decir, estructura

Page 16: LAB-3-2015

jerárquica y redirección de entrada/salida de órdenes y tuberías (en inglés pipe). Actualmente, MS-DOS ha sido sustituido por la familia de sistemas Windows de Microsoft, sin embargo la consola de comando del sistema permite acceder a un entorno de texto con casi los mismos comandos de MS-DOS. Las primeras versiones de Windows podían ejecutar programas para MS-DOS. Las últimas versiones de DOS "extendidas" usaban el modo protegido. Las últimas versiones de Windows se ejecutan independientemente de DOS pero incluyen una parte importante de viejo código que puede ejecutarse en máquinas virtuales (virtual machines).

CONCLUSION.

En base al conocimiento adquirido con la investigación teórica, el desarrollo del laboratorio y la solución de las asignaciones correspondientes, se ha llegado a las siguientes conclusiones:

Se ha conocido los distintos tipos de archivos presentes que se puede desarrollo y ejecutar en MASM

Con el desarrollo de la práctica de laboratorio correspondiente y las asignaciones se han identificado las directivas más usadas y más importantes de MASM, cuyo objetivo es la realización de programas de mejor manera y más eficiente.