INSTITUTO TECNOLÓGICO DE CELAYA Página 1 de 8

Transcripción

INSTITUTO TECNOLÓGICO DE CELAYA Página 1 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
CARRERA
INGENIERIA EN SISTEMAS COMPUTACIONALES
PRACTICA No.
1
NOMBRE DE LA
PRACTICA
CREACION Y
ESCRITURA DE
ARCHIVOS EN
ENSAMBLADOR
AUTOR: LILIANA NORIA MONTOYA
NOMBRE DE LA ASIGNATURA
LENGUAJES DE INTERFAZ
DURACION(HORAS)
1 (max)
1
INTRODUCCION
La manipulación de archivos es algo que, todos los que hacemos uso de una computadora, usamos
siempre, ahora, compete a esta asignatura el analizar la forma en que la computador lo realiza, lo
cual es más complejo que un simple “Clic derecho” y seleccionar “Nuevo, borrar, etc.”
2
OBJETIVO (COMPETENCIA)
El alumno aprenderá la forma en que los archivos son creados en la computadora en base al
lenguaje ensamblador (recordemos que este tiene que ser trasladado a código binario para que la
computadora realmente trabaje).
3
FUNDAMENTO
El lenguaje ensamblador, es un lenguaje de programación de bajo nivel para los computadores,
microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa
una representación simbólica de los códigos de máquina binarios y otras constantes necesarias
para programar una arquitectura dada de CPU y constituye la representación más directa del
código máquina específico para cada arquitectura legible por un programador.
Un archivo informático está identificado por un nombre y una descripción, el cual almacena
información en formato binario.
En lenguajes de alto nivel se manejan estos archivos, escondiendo los componentes sobre el
manejo y compilación de los mismos. La manipulación de archivos se reduce a tareas bastante
simples.
Sin embargo, en lenguaje ensamblador, la manipulación de ellos requiere de mayor detalle.
Hay dos maneras de operar los archivos lenguaje ensamblador. La primera y más antigua se llama
“bloque de control de archivo” (FCB: File Control Block).
La segunda y más nueva se llama metodología de Handles o canales de comunicación.
 Ventajas de manipulación de archivos a través de FCB.
 Permiten un número ilimitado de archivos abiertos.
 Los FCB se usan para crear volumen en los dispositivos de almacenamiento.
 Ventajas de manipulación de archivos a través de handles
 Simplicidad para manejar errores.
 Funciones de handle pueden permanecer en las variables actuales de sistema
operativo.
Página 1 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
 Toman ventaja de la estructura de directorio del S.O.
 Permite al programador centrarse en la programación y no ocuparse de tantos
detalles.
NOTA: FCB fue sustituido por los handles debido a que no permite nombres de archivo con una
longitud máxima a los 8 caracteres.
4



4
REQUISITOS BÁSICOS.
Deberá comprender el lenguaje ensamblador, básicamente lo referente a manipulación de
registros, interrupciones, variables y directivas.
Deberá contar con un emulador, el que sea de su preferencia.
Puede auxiliarse de manuales o algunas de las referencias que le serán proporcionadas.
DESARROLLO
 Esta práctica muestra y explica la creación de un archivo “.txt” y escritura en el mismo, en
lenguaje ensamblador mediante el método de handles.
1. Abra el emulador de su elección (para este caso emu 8086), desde el cual abrirá el
archivo CrearArch.asm incluido en esta carpeta
2. Intente comprender el funcionamiento de los mnemónicos con los que este
familiarizado.
3. A continuación desglosaremos cada una de las secciones del mismo.
org
100h
Página 2 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
start:
mov
xor
lea
int
ah,3Ch
cx,cx
dx,file
21h
Como lo indican los requisitos básicos de la práctica, debe estar familiarizado con la
directiva org 100h, la cual nos indica que el compilado de nuestro archivo generara
un “.com”.
La directiva .start indica al enlazador el punto de inicio del programa. stack señala
al enlazador, de manera similar, cuál es el segmento de pila; al arrancar el
programa, SS apuntará al segmento designado, y SP al final de éste.
INT 21H Función 3CH
Crear Fichero
LLAMADA:
AH = 3CH
CX = Atributos del fichero: 00H Fichero Normal. 01H Fichero de Sólo Lectura. 02H
Fichero Oculto. 03H Fichero de Sistema.
Lea mueve la dirección de “file” al registro dx
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero.
DEVUELVE:
Si se ejecutó correctamente: Flag de acarreo (Cf) = 0
AX = Handle o manejador de fichero.
Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1
AX = Código de error.
EFECTO: Si el fichero indicado mediante la cadena ASCII ya existía, entonces se
vacía su contenido, quedando con longitud 0. Si el fichero no existía, entonces se
crea. En ambos casos, el fichero se abre, y se devuelve un Handle o manejador de
fichero para los restantes accesos a dicho fichero. Esta función se abortará
(indicándolo mediante Cf y AX) si:
-La vía de acceso indicada en la cadena ASCII es errónea.
-Se va a crear el fichero en el directorio raíz y éste ya está lleno
El Handle es un número mediante el cual se referencia a un fichero dado. De esta
forma es más cómodo trabajar con ficheros. Para cada uno de los ficheros con que
trabajemos, tendremos un número (Handle) que lo representará.
mov
lea
int
ax,3d02h
dx,file
21h
Página 3 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
INT 21H Función 3DH
Abrir Fichero
LLAMADA:
AH = 3DH
AL = Modo de acceso. Bits 0-2: Permiso de lectura/escritura.
000b Acceso de sólo lectura.
001b Acceso de sólo escritura.
010b Acceso de lectura/escritura.
Bit 3: 0b (Reservado).
Bits 4-6: Modo de compartición de Fichero
000b Sólo el programa actual puede acceder al archivo
001b Sólo el programa actual puede acceder al archivo.
010b Otro programa puede leer el archivo, pero no escribir en él.
011b Otro programa puede escribir en el archivo, pero no leerlo.
100b Otro programa puede leer y escribir en el archivo.
Bit 7: Bit de 'herencia' ó Handle-flag.
0b Si el handle se hereda por un programa hijo.
1b Si el handle no se hereda.
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero.
DEVUELVE:
Si se ejecutó correctamente Flag de acarreo (Cf) = 0
AX = Handle o manejador de fichero
Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1
AX = Código de error.
EFECTO: Mediante esta función se abre un fichero ya existente, y se devuelve un
Handle para acceder al fichero en lo sucesivo.
mov
handle,ax
mov
mov
mov
lea
int
ah,40h
bx,handle
cx,4
dx,text
21h
INT 21H Función 40H
Escritura en Fichero o dispositivo.
LLAMADA:
AH = 40H
BX = Handle.
CX = Número de bytes a escribir.
DS:DX = Segmento: Desplazamiento del buffer desde donde se van a tomar los
caracteres a escribir.
Página 4 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
DEVUELVE:
Si se ejecutó correctamente: Flag de acarreo (Cf) = 0
AX = Bytes transferidos.
Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1
AX = Código de error
EFECTO Dado un handle válido, se realiza una transferencia desde el buffer de
memoria indicado mediante DS:DX hacia el fichero o dispositivo referenciado por el
Handle. Se transferirán tantos caracteres como se especifique en CX. Acto seguido,
se actualiza el puntero de fichero una posición por delante del bloque escrito, para
que futuras escrituras no 'machaquen' los datos que ya hubiera. Mediante esta
función es posible escribir caracteres en la pantalla, usando el handle 1.
mov
mov
int
ah,3Eh
bx,handle
21h
INT 21H Función 3EH
Cerrar Fichero
LLAMADA:
AH = 3EH
BX = Handle.
DEVUELVE:
Si se ejecutó correctamente:
Flag de acarreo (Cf) = 0
Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1
AX = Código de error.
EFECTO: Mediante esta función se cierra un fichero que estuviera abierto. Se utiliza
el Handle para indicar el fichero a cerrar. Tras cerrar el fichero, dicho Handle se
libera para nuevos ficheros. Se vuelvan al disco todos los buffers internos asociados
al fichero.
ret
file
db
handle dw
text db
end
'Prueba.txt',0 ; nombre del archivo
0
'Lili'
; texto que se escribirá en el archivo
ret extrae una dirección de la pila y salta a ella. Puede ser un retorno cercano
mediante RETN (Near) o lejano mediante RETF (Far); en el primer caso extrae el
offset y en el segundo segmento y offset. Con el uso genérico de la instrucción RET
el ensamblador elige la apropiada. Es muy importante que la subrutina deje la pila
Página 5 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
como estaba justo al ser llamada para que la dirección de retorno quede en la parte
superior, pues de lo contrario al llegar a RET saltaríamos a cualquier sitio menos la
dirección correcta.
Se definen las variables a utilizar mediante las directivas de definición de datos
(db=1 byte, dw=2 bytes).
END es la directiva que indica el final del programa y detiene el proceso de
ensamblaje.
4. Lea cuantas veces sea necesario la explicación anterior, hasta que considere que la
ha comprendido completamente
5. Compile el archivo .asm, y seleccione la ubicación del código compilado (.com).
Página 6 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
6. Ejecute el archivo .com generado en el paso anterior.
7. Observe que el archivo “Prueba.txt” es creado en el mismo directorio donde se
encuentra el archivo .com.
Página 7 de 8
INSTITUTO TECNOLÓGICO DE CELAYA
PRACTICA DE LABORATORIO-LENGUAJES DE
INTERFAZ
AUTOR: LILIANA NORIA MONTOYA
8. Abra el archivo “Prueba.txt” y observe su contenido.
9. Para cualquier posible aclaración de conceptos puede consultar los links incluidos
en las referencias de este documento.
5
ANEXOS
 ../Practica/CrearArch.asm
6





REFERENCIAS
http://yaqui.mxl.uabc.mx/~mediciones/sem10-1/practica4.pdf
http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html
http://www.isaatc.ull.es/asignaturas/arqcontrol/manual.pdf
http://www.rinconsolidario.org/eps/asm8086/CAP6.html
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r86194.PDF
Página 8 de 8

Documentos relacionados