Sei sulla pagina 1di 15

Interrupcin 21H Propsito: Llamar a diversas funciones del DOS.

Sintaxis: Int 21H Nota: Cuando trabajamos en M SM es necesario especificar !ue el valor !ue estamos utili"ando es #exadecimal. $sta interrupcin tiene varias funciones% para accesar a cada una de ellas es necesario !ue el el re&istro ' se encuentre el n(mero de funcin !ue se re!uiera al momento de llamar a la interrupcin.

Funciones para desplegar informacin al video. )*' $x#ibe salida )+' ,mpresin de cadena -video. /)' $scritura en dispositivo0 rc#ivo Funciones para leer informacin del teclado. )1' $ntrada desde teclado ) ' $ntrada desde teclado usando buffer 23' Lectura desde dispositivo0arc#ivo Funciones para trabajar con archivos. $n esta seccin unicamente se expone la tarea espec4fica de cada funcin% para una referencia acerca de los conceptos empleados refierase a la unidad 5% titulada: 6,ntroduccin al manejo de arc#ivos6. Mtodo FC )3' brir arc#ivo 1/' Lectura secuencial 17' $scritura secuencial 18' Crear arc#ivo *1' Lectura aleatoria **' $scritura aleatoria Handles 2C' Crear arc#ivo 2D' brir arc#ivo 2$' Cierra manejador de arc#ivo 23' Lectura desde arc#ivo0dispositivo

/)' $scritura en arc#ivo0dispositivo /*' Mover apuntador de lectura0escritura en arc#ivo Funcin !2H "so# Desplie&a un caracter a la pantalla. $egistros de llamada#

' 9 )*' DL 9 :alor del caracter a desple&ar. $egistros de retorno# Nin&uno $sta funcin nos desplie&a el caracter cu;o codi&o #exa&esimal corresponde al valor almacenado en el re&istro DL% no se modifica nin&(n re&istro al utili"ar este comando. $s recomendado el uso de la funcin /)' de la misma interrupcin en lu&ar de esta funcin. Funcin !%H

"so# Desplie&a una cadena de carateres en la pantalla.

$egistros de llamada# ' 9 )+' DS:D< 9 Direccin de inicio de una cadena de caracteres $egistros de retorno# Nin&uno. $sta funcin desplie&a los caracteres% uno a uno% desde la direccin indicada en el re&istro DS:D< #asta encontrar un caracter &% !ue es interpretado como el final de la cadena. Se recomienda utili"ar la funcin /)' en lu&ar de esta funcin. Funcin '!H

"so#

$scribir a un dispositivo o a un arc#ivo.

$egistros de llamada# ' 9 /)' =< 9 :4a de comunicacin C< 9 Cantidad de b;tes a escribir DS:D< 9 Direccin del inicio de los datos a escribir $egistros de retorno# C3 9 ) si no #ubo error < 9 N(mero de b;tes escritos C3 9 1 si #ubo error < 9 Cdi&o de error $l uso de esta funcin para desple&ar informacin en pantalla se reali"a dandole al re&istro =< el valor de 1 !ue es el valor preasi&nado al video por el sistema operativo MS>DOS. Funcin !1H

"so# Leer un caracter del teclado ; desple&arlo.

$egistros de llamada# ' 9 )1' $egistros de retorno# L 9 Caracter le4do Con esta funcin es mu; sencillo leer un caracter del teclado% el cdi&o #exadecimal del caracter le4do se &uarda en el re&istro L. $n caso de !ue sea un caracter extendido el re&istro L contendra el valor de ) ; ser? necesario llamar de nuevo a la funcin para obtener el cdi&o de este caracter. Funcin !(H

"so# Leer caracteres del teclado ; almacenarlos en un buffer.

$egistros de llamada# '9) ' DS:D< 9 Direccin del ?rea de almacenamiento

=@A$ ) 9 Cantidad de b;tes en el ?rea =@A$ 1 9 Cantidad de b;tes le4dos desde =@A$ * #asta =@A$ ) B * 9 caracteres le4dos $egistros de retorno# Nin&uno Los caracteres son le4dos ; almacenados en un espacio predefinido de memoria. La estructura de este espacio le indica !ue en el primer b;te del mismo se indican cuantos caracteres ser?n le4dos. $n el se&undo b;te se almacena el n(mero de caracteres !ue ;a se le;eron% ; del tercer b;te en adelante se escriben los caracteres le4dos. Cuando se #an almacenado todos los caracteres indicados menos uno la bocina suena ; cual!uier caracter adicional es i&norado. Para terminar la captura de la cadena es necesario darle C$NA$DE. Funcin )FH

"so# Leer informacin de un dispositivo o arc#ivo.

$egistros de llamada# ' 9 23' =< 9 N(mero asi&nado al dispositivo C< 9 N(mero de b;tes a procesar DS:D< 9 Direccin del ?rea de almacenamiento $egistros de retorno# C3 9 ) si no #a; error ; < 9 n(mero de b;tes leidos. C3 9 1 si #a; error ; < contendra el cdi&o del error. Funcin !FH

"so# brir arc#ivo 3C=

$egistros de llamada# ' 9 )3'

DS:D< 9 puntador a un 3C= $egistros de retorno# L 9 ))' si no #ubo problema% de lo contrario re&resa )33' Funcin 1'H

"so# Leer secuencialmente un arc#ivo 3C=.

$egistros de llamada# ' 9 1/' DS:D< 9 puntador a un 3C= ;a abierto. $egistros de retorno# L 9 ) si no #ubo errores% de lo contrario se re&resara el cdi&o correspondiente de error: 1 error al final del arc#ivo% * error en la estructura del 3C= ; 2 error de lectura parcial. $sta funcin lo !ue #ace es !ue lee el si&uiente blo!ue de informacin a partir de la direccin dada por DS:D<% ; actuali"a este re&istro. Funcin 1*H

"so# $scribir secuencialmente a un arc#ivo 3C=

$egistros de llamada# ' 9 17' DS:D< 9 puntador a un 3C= ;a abierto $egistros de retorno# L 9 ))' si no #ubo errores% de lo contrario contendra el cdi&o del error: 1 disco lleno o arc#ivo de solo lectura% * error en la formacin o especificacin del 3C=. La funcin 17' despuFs de escribir el re&istro al blo!ue actual actuali"a el 3C=. Funcin 1+H

"so# Crear un arc#ivo 3C=.

$egistros de llamada# ' 9 18' DS:D< 9 puntador a un 3C= ;a abierto. $egistros de retorno# L 9 ))' si no #ubo errores% de lo contrario contendra el valor )33'

Se basa en la informacin proveida en un 3C= para crear un arc#ivo en el disco. Funcin 21H

"so# Leer en forma aleatoria un arc#ivo 3C=.

$egistros de llamada# ' 9 *1' DS:D< 9 puntador a un 3C= ;a abierto. $egistros de retorno# 9 ))' si no #ubo error% de lo contrario ' contendra el cdi&o del error: 1 si es fin de arc#ivo% * si existe error de especificacin de 3C= ; 2 si se le; un re&istro parcial o el apuntador del arc#ivo se encuentra al final del mismo. $sta funcin lee el re&istro especificado por los campos del blo!ue actual ; re&istro actual de un 3C= abierto ; coloca la informacin en el DA -?rea de transferencia de disco o DisG Aransfer rea.. Funcin 22H

"so# $scribir en forma aleatoria en un arc#ivo 3C=.

$egistros de llamada# ' 9 **' DS:D< 9 puntador a un 3C= abierto. $egistros de retorno# L 9 ))' si no #ubo error% de lo contrario contendr? el cdi&o del error: 1 si el disco est? lleno o es arc#ivo de solo lectura ; * si #a; error en la especificacin de 3C=. $scribe el re&istro especificado por los campos del blo!ue actual ; re&istro actual de un 3C= abierto. $scribe dic#a informacin a partir del contenido del DA -?rea de transferencia de disco.. Funcin )CH

"so# Crear un arc#ivo si no existe o dejarlo en lon&itud ) si existe. -'andle.

$egistros de llamada# ' 9 2C' C' 9 tributo de arc#ivo DS:D< 9 puntador a una especificain SC,,H $egistros de retorno# C3 9 ) ; < el n(mero asi&nado al #andle si no #a; error% en caso de #aberlo C3 ser? 1 ; < contendra el cdi&o de error: 2 ruta no encontrada% / no #a; #andles disponibles para asi&nar ; 7 acceso ne&ado. $sta funcin sustitu;e a la 18'. $l nombre del arc#ivo es especificado en una cadena SC,,H% la cual tiene como caracter4stica la de ser una cadena de b;tes convencional terminada con un caracter ). $l arc#ivo creado contendra los atributos definidos en el re&istro C< en la si&uiente forma: :alor tributos ))' Normal )*' $scondido )/' Sistema )8' $scondido ; de sistema $l arc#ivo se crea con los permisos de lectura ; escritura. No es posible crear directorios utili"ando esta funcin. Funcin ),H

"so# bre un arc#ivo ; re&rese un #andle

$egistros de llamada# ' 9 2D' L 9 modo de acceso DS:D< 9 puntador a una especificacin SC,,H $egistros de retorno# C3 9 ) ; < 9 n(mero de #andle si no #a; errores% de lo contrario C3 9 1 ; < 9 cdi&o de error: )1' si no es v?lida la funcin% )*' si no se encontr el arc#ivo% )2' si no se encontr la ruta% )/' si no #a; #andles disponibles% )7' en caso de acceso ne&ado% ; )C' si el cdi&o de acceso no es v?lido. $l #andle re&resado es de 18 bits.

$l cdi&o de acceso se especifica en la si&uiente forma: =,AS 587/2*1 . . . . ) ) ) Solo lectura . . . . ) ) 1 Solo escritura . . . . ) 1 ) Lectura0$scritura . . . < . . . D$S$D: DO Funcin )-H

"so# Cerrar arc#ivo -'andle..

$egistros de llamada# ' 9 2$' =< 9 'andle asi&nado $egistros de retorno# C3 9 ) si no #ubo errores% en caso contrario C3 ser? 1 ; el cdi&o de error: )8' si el #andle es inv?lido. < contendr?

$sta funcin actuali"a el arc#ivo ; libera o deja disponible el #andle !ue estaba utili"ando. Funcin )FH

"so# Leer de un arc#ivo abierto una cantdad definida de b;tes ; los almacena en un buffer espec4fico.

$egistros de llamada# ' 9 23' =< 9 'andle asi&nado C< 9 Cantidad de b;tes a leer DS:D< 9 puntador a un ?rea de trabajo. $egistros de retorno# C3 9 ) ; < 9 n(mero de b;tes leidos si no #ubo error% en caso contrario C3 9 1 ; < 9 cdi&o de error: )7' si acceso ne&ado ; )8' si no es v?lido el #andle. Funcin '!H

"so#

$scribe a un arc#ivo ;a abierto una cierta cantidad de b;tes a partir del buffer desi&nado.

$egistros de llamada# ' 9 /)' =< 9 'andle asi&nado C< 9 Cantidad de b;tes a escribir. DS:D< 9 puntador al buffer de datos. $egistros de retorno# C3 9 ) ; < 9 n(mero de b;tes escritos si no #a; errores% en caso de existir C3 9 1 ; < 9 cdi&o del error: )7' si el acceso es ne&ado ; )8' si el #andle es inv?lido. Funcin '2H

"so# Mover apuntador al arc#ivo -'andle.

$egistros de llamada# ' 9 /*' L 9 mFtodo utili"ado =< 9 'andle asi&nado C< 9 La parte m?s si&nificativa del offset D< 9 La parte menos si&nificativa del offset $egistros de retorno# C3 9 ) ; D<: < 9 la nueva posicin del apuntador. $n caso de error C3 ser? 1 ; < 9 cdi&o de error: )1' si la funcin no es v?lida ; )8' si el #andle no es v?lido. $l mFtodo utili"ado se confi&ura como si&ue: :alor de L MFtodo ))' partir del principio del arc#ivo )1' partir de la posicin actual )*' partir del final del arc#ivo Interrupcin 1!H Propsito: Llamar a diversas funciones de video del =,OS. Sintaxis: Int 1!H

$sta interrupcin tiene diversas funciones% todas ellas nos sirven para controlar la entrada ; salida de video% la forma de acceso a cada una de las opciones es por medio del re&istro '. $n este tutorial (nicamente veremos al&unas de las funciones de esta interrupcin.

3unciones comunes de la interrupcin 1)'. )*' Seleccin de posicin del cursor )+' $scribe atributo ; caracter en el cursor ) ' $scribe caracter en la posicin del cursor )$' $scritura de caracteres en modo alfanumFrico Funcin !2H

"so# Posiciona el cursor en la pantalla dentro de las coordenadas v?lidas de texto.

$egistros de llamada# ' 9 )*' =' 9 P?&ina de video en la !ue se posicionar? el cursor. D' 9 3ila DL 9 Columna $egistros de retorno# Nin&uno. Las posiciones de locali"acin del cursor son definidas por coordenadas iniciando en )%)% !ue corresponde a la es!uina superior i"!uierda #asta 5+%*/ correspondientes a la es!uina inferior derec#a. Aenemos entonces !ue los valores !ue pueden tomar los re&istros D' ; DL en modo de texto de I) x *7 son de ) #asta */ ; de ) #asta 5+ respectivamente. Funcin !%H

"so# Desple&ar un caracter un determinado n(mero de veces con un atributo definido empe"ando en la posicin actual del cursor.

$egistros de llamada# ' 9 )+' L 9 Caracter a desple&ar =' 9 P?&ina de video en donde se desple&ar? =L 9 tributo a usar C< 9 N(mero de repeticiones.

$egistros de retorno# Nin&uno $sta funcin desplie&a un caracter el n(mero de veces especificado en C< pero sin cambiar la posicin del cursor en la pantalla. Funcin !(H

"so# Desple&ar un caracter en la posicin actual del cursor.

$egistros de llamada# '9) ' L 9 Caracter a desple&ar =' 9 P?&ina en donde desple&ar =L 9 Color a usar -slo en &r?ficos.. C< 9 N(mero de repeticiones $egistros de retorno# Nin&uno. La (nica diferencia entre esta funcin ; la anterior es !ue Fsta no permite modificar los atributos% simplemente usa los atributos actuales. Aampoco se altera la posicin del cursor con esta funcin. Funcin !-H

"so# Desple&ar un caracter en la pantalla actuali"ando la posicin del cursor.

$egistros de llamada# ' 9 )$' L 9 Caracter a desple&ar =' 9 P?&ina donde se desple&ara el caracter =L 9 Color a usar -solo en &r?ficos. $egistros de retorno# Nin&uno Interrupcin 1+H Propsito: Manejar la entrada0salida del teclado. Sintaxis:

Int 1+H :eremos dos opciones de la interrupcin 18'% estas opciones% al i&ual !ue las de otras interrupciones% son llamadas utili"ando el re&istro '.

3unciones de la interrupcin 18' ))' Lee un caracter de teclado )1' Lee estado del teclado Funcin !!H

"so# Leer un caracter del teclado.

$egistros de llamada# ' 9 ))' $egistros de retorno# ' 9 cdi&o de barrido -scan code. del teclado L 9 :alor SC,, del caracter. Cuando se utili"a esta interrupcin se detiene la ejecucin del pro&rama #asta !ue se introdu"ca un caracter desde el teclado% si la tecla presionada es un caracter SC,, su valor ser? &uardado en el re&istro '% de lo contrario el cdi&o de barrido ser? &uardado en L ; ' contendr? el valor ))'. $l cdi&o de barrido fuF creado para manejar las teclas !ue no tienen una representacin SC,, como C LAE% CCONADOLE% las teclas de funcin% etc. Funcin !1H

"so# Leer estado del teclado.

$egistros de llamada# ' 9 )1' $egistros de retorno# Si la bandera de cero% H3% est? apa&ada si&nifica !ue #a; informacin en el buffer% si se encuentra prendida es !ue no #a; teclas pendientes. $n caso de existir informacin el re&istro tecla &uardada en el buffer. ' contendr? el cdi&o de la

Interrupcin 1.H Propsito: Manejar la entrada0salida de la impresora. Sintaxis: Int 1.H $sta interrupcin es utili"ada para escribir caracteres a la impresora% iniciali"arla ; leer su estado.

3unciones de la interrupcin 15' ))' ,mprime un caracter SC,, )1' ,niciali"a la impresora )*' Proporciona el estado de la impresora Funcin !!H

"so# $scribir un caracter a la impresora.

$egistros de llamada# ' 9 ))' L 9 Caracter a imprimir D< 9 Puerto a utili"ar $egistros de retorno# ' 9 $stado de la impresora. $l puerto a utili"ar% definido en D<% se especifica as4: LPA1 9 )% LPA* 9 1% LPA2 9 * ... $l estado de la impresora se codifica bit por bit como si&ue: =,A 10) S,JN,3,C DO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ) 1 Se a&ot el tiempo de espera 1> *> 2 1 $rror de entrada0salida / 1 ,mpresora seleccionada 7 1 Papel a&otado 8 1 Deconocimiento de comunicacin 5 1 La impresora se encuentra libre Los bits 1 ; * no son relevantes.

La ma;or4a de los =,OS (nicamente soportan 2 puertos paralelos aun!ue existen al&unos !ue soportan /. Funcin !1H

"so# ,niciali"ar un puerto de impresin.

$egistros de llamada# ' 9 )1' D< 9 Puerto a utili"ar $egistros de retorno# ' 9 Status de la impresora $l puerto a utili"ar% definido en D<% se especifica as4: LPA1 9 )% LPA* 9 1% etc. $l estado de la impresora se codifica bit por bit como si&ue: =,A 10) S,JN,3,C DO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ) 1 Se a&ot el tiempo de espera 1> *> 2 1 $rror de entrada0salida / 1 ,mpresora seleccionada 7 1 Papel a&otado 8 1 Deconocimiento de comunicacin 5 1 La impresora se encuentra libre Los bits 1 ; * no son relevantes. La ma;or4a de los =,OS (nicamente soportan 2 puertos paralelos aun!ue existen al&unos !ue soportan /. Funcin !2H

"so# Obtener el estado de la impresora.

$egistros de llamada# ' 9 )1' D< 9 Puerto a utili"ar $egistros de retorno#

' 9 Status de la impresora. $l puerto a utili"ar% definido en D<% se especifica as4: LPA1 9 )% LPA* 9 1% etc. $l estado de la impresora se codifica bit por bit como si&ue: =,A 10) S,JN,3,C DO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ) 1 Se a&ot el tiempo de espera 1> *> 2 1 $rror de entrada0salida / 1 ,mpresora seleccionada 7 1 Papel a&otado 8 1 Deconocimiento de comunicacin 5 1 La impresora se encuentra libre Los bits 1 ; * no son relevantes. La mayora de los BIOS nicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

Potrebbero piacerti anche