Sunteți pe pagina 1din 15

Lenguaje ensamblador Manejo de archivos con el micro 8086

Gustavo Dvila Nov 2011

Que son archivos


!n archivo in"ormtico esta identi"icado #or un nombre $ una descri#ci%n& el cual almacena in"ormaci%n en "ormato binario 'es decir ceros $ unos() *n lenguajes de alto nivel manejan los gru#os de in"ormaci%n 'archivos(& escondiendo la com#lejidad sobre el manejo $ com#ilaci%n de los mismos) *n lenguajes de alto nivel la mani#ulaci%n de archivos se reduce a taras sim#les como #or ejem#lo& creaci%n& lectura& escritura) *n lenguaje ensamblador& la mani#ulaci%n de archivo re+uiere de ma$or detalle

,orma de -#erar en los archivos


.a$ dos '2( maneras #ara o#erar los archivos en lenguaje ensamblador) La #rimera $ ms antigua se llama /bloque de control de archivo0 ',123 ,ile 1ontrol 2loc4( La segunda $ mas nueva se le dice metodologa Handles o canales de comunicacin)

,orma de -#erar en los archivos


.a$ dos '2( maneras #ara o#erar los archivos en lenguaje ensamblador) La #rimera $ ms antigua se llama /bloque de control de archivo0 ',123 ,ile 1ontrol 2loc4( La segunda $ mas nueva se le dice metodologa Handles o canales de comunicacin o File Handler (Manejadores de archivo))

5entajas de mani#ulaci%n de archivos a trav6s de ,12


7ermiten tener numero ilimitados de archivos abiertos) Los ,12 se usan #ara crear volumen en los Dis#ositivos de almacenamiento)

5entajas de mani#ulaci%n de archivos a trav6s de handles


8im#licidad #ara manejar errores) ,unciones de .andle #ueden #ermanecer en las versiones actuales de 8)9oman ventaja de la estructura de directorio del 8)-) 7ermite al #rogramador centrarse en la #rogramaci%n #ura sin ocu#arse de tantos detalles) Nota: Debido a +ue ,12 no #ermite ms +ue nombres de archivo de 8 caracteres m:imo $ no serv;a #ara almacenar rutas a archivo inclu$endo directorios& "ue sustituido entonces #or los Maneja de archivos

*jem#lo de abrir archivo en ,12 <<))


M-5 =.& -,. M-5 D?& -,,8*9 =@1.A5AN9 21h 1M7 =L& -,,. B* *@@-@ *@@-@3 > =#ertura del =rchivo > Direcci%n del =rchivo > Llamado de la interru#ci%n

<<))

,orma de -#erar en los archivos con los .andler


Las "unciones 2sicas #ara el manejo de archivos con la Ant 21. son3 ,unci%n C1.3 8e utiliDa #ara crear un archivo ,unci%n E0.3 8e utiliDa #ara Escribir sobre un archivo ,unci%n C*.3 8e utiliDa #ara cerrar un archivo

-#erar con "unci%n C1.


La ,unci%n C1. 1rear o 9runca un archivo =.FC1. 1?F =tributo del =rchivo D83D? @egistros de @egreso3 La bandera de acarreo '1,(3 1,F 0& todo estuvo bien $ =? obtiene el numero .andle #ara el archivo) 1,F 1& ocurrio un error $ =? obtiene el c%digo de error
=?F0C.& ruta no encontrada =?F0E.& no ha$ una handle dis#onible #ara asignar =?F0G.& acceso negado

*jem#lo de "unci%n C1.


mov ah&Cch mov c:&06. > ,unci%n utiliDada #ara crear archivo > =tributo del archivo > 06.F/*scondido $ de sistema0 mov d:&o""set re#orte int 21h >Llama de la interru#ci%n

=tributos de los archivos


9abla +ue describe los atributos
Valor 00. 02. 0E. 06. Tipo de Atributo Normal *scondido 8istema *scondido $ de 8istema

-#erar con "unci%n E0.


La ,unci%n E0. *scribe a un archivo o Dis#ositivo una cierta cantidad de b$te& a #artir de un bu""er designado =.FE0. 2?F .andle =signado 1?F 1antidad de b$te a ser escritos en el archivo D83D? F =#untador a bu""er de datos

@egistros de @egreso3 La bandera de acarreo '1,(3 1,F 0& todo estuvo bien $ =? obtiene el numero de b$tes escritos) 1,F 1& ocurrio un error $ =? obtiene el c%digo de error
=?F0G.& acceso negado =?F06.& .andle es errado

*jem#lo de "unci%n E0.


mov ah&E0h > "uncion utiliDada #ara escribir en el archivo mov b:&handle > .andle asignado al archivo mov d:& o""set escribearchivo > Direcci%n de datos a escribir mov c:& tamano9e:to > 1antidad de 2$te a escribir int 21h

-#erar con "unci%n C*.


La ,unci%n C*. cierra a un archivo designado =.FC*. 2?F .andle =signado @egistros de @egreso3 La bandera de acarreo '1,(3 1,F 0& todo estuvo bien $ =? obtiene el numero de b$tes escritos) 1,F 1& ocurrio un error $ =? obtiene el c%digo de error
=?F06.& .andle es errado

*jem#lo de "unci%n E0.


mov ah&E0h > "uncion utiliDada #ara escribir en el archivo mov b:&handle > .andle asignado al archivo mov d:& o""set escribearchivo > Direcci%n de datos a escribir mov c:& tamano9e:to > 1antidad de 2$te a escribir int 21h

S-ar putea să vă placă și