Вы находитесь на странице: 1из 10

INT 21H La mayora de servicios funciones del sistema operativo MS-D S se o!

!tienen a trav"s de la interrupcin soft#are 21H$ %s por esto &ue se le denomina D S-'(I) D S'((LI*'TI N-(+ ,+'M-INT%+-'*% La INT 21H est. compuesta por un /rupo de funciones$ *uando se accede a la INT 21H0 1ay &ue indicar el n2mero de funcin &ue &ueremos e3ecutar$ La llamada a la INT 21H se reali4ar. como si/ue) - Introducimos en 5'H6 el n2mero de funcin a la &ue deseamos acceder$ - %n caso de &ue deseemos acceder a una su!-funcin dentro de una funcin0 de!emos indicarlo introduciendo en 5'L6 el n2mero de esa su!-funcin$ - Llamar a la INT 21H$ INT 21H -uncin 71H %ntrada de *ar.cter con %co 5 salida6 LL'M'D') 'H 8 71H D%9:%L9%) 'L 8 *di/o 'S*II del *ar.cter ledo y %c1o a pantalla 5si 'H 87;H6 es servicio sin %c1o6 %-%*T ) Se lee un car.cter del dispositivo de entrada est.ndar0 y se enva al dispositivo est.ndar de salida$ Si al llamar a la funcin no 1a!a nin/2n car.cter disponi!le0 se esperar. a &ue lo 1aya$ Normalmente el dispositivo est.ndar de entrada es el teclado0 y el dispositivo est.ndar de salida es la pantalla$ INT 21H -uncin 72H Salida de *ar.cter LL'M'D') 'H 8 72H DL 8 *di/o 'S*II a enviar al dispositivo de salida$ D%9:%L9%) N'D'$ %-%*T ) Se enva el car.cter depositado en el re/istro DL al dispositivo est.ndar de salida$ La salida puede ser redireccionada 1acia un fic1ero0 impresora0 etc INT 21H -uncin 7<H %nvo de *ar.cter a la Impresora LL'M'D') 'H 8 7<H DL 8 *di/o 'S*II a enviar al dispositivo de salida$ D%9:%L9%) N'D' %-%*T ) Se enva el car.cter depositado en DL al puerto paralelo$ Si no se 1a redireccionado la salida0 el dispositivo por defecto en el puerto paralelo de salida 5L(T1 (+N6 es la impresora$ INT 21H -uncin 7=H %nvo de *ar.cter a la pantalla como sm!olo

LL'M'D') 'H 8 7=H DL 8 sm!olo entre >cuotation mar?s> @'@ >A>$ D%9:%L9%) N'D' INT 21H -uncin 7BH 9isuali4acin de una cadena de caracteres LL'M'D') 'H 8 7BH DS)DC 8 Se/mento) Despla4amiento de la cadena a visuali4ar 5in DC - offset address of strin/ in data se/ment6 DS de!e apuntar al se/mento donde se encuentra la cadena$ DC de!e contener el despla4amiento de la cadena dentro de ese se/mento$ %3emplo) Definition of t1e messa/e in Data se/ment MS, DD >T1is is a messa/eE> or >T1is$$$>0>E> (ro/ram in *ode se/ment Mov 'H0 7BH Mov DC0 ffset MS, Int 21 H D%9:%L9%) N'D'$ %-%*T ) Se enva una cadena de caracteres al dispositivo est.ndar de salida$ Si no se 1a redireccionado la salida0 la cadena se enviar. a la pantalla$ INT 21H -uncin 7'H Leer cadena de sm!olos desde teclado y su cdi/o se almacena al !uffer LL'M'D') 'H 8 7'H DC 8direccin de !uffer en se/mento de datos D%9:%L9%) %n direccin DS)DC la cadena de 'S*II cdi/os de sm!olos entrantes %3emplo$ Define Duffer address in data se/ment D:- DD =070707070707 5=-sim!ols0 < places for input sim!ols !y 4ero0 and last 4ero is for +%T:+N 6$ More t1an = - !eep and i/nore In code se/ment t1e pro/ram Mov 'HF 7'1 Mov DC0 ffset D:INT 21H F input < sym!ols to !uffer #it1 >return> code and output all of t1em to screen INT 21H -uncin 7DH *ompro!acin del estado de la entrada LL'M'D') 'H 8 7DH D%9:%L9%) 'L 8 77H si no 1ay car.cter disponi!le$

'L 8 --H si 1ay al/2n car.cter disponi!le$ %-%*T ) Se comprue!a si 1ay al/2n car.cter procedente del dispositivo est.ndar de entrada$ La entrada puede ser redireccionada$ Si no 1ay tal redireccin0 se comprue!a el !uffer de teclado INT 21H -uncin 7%H Seleccin de disco LL'M'D') 'H 8 7%H DL 8 *di/o de la unidad 578' 0 18D 0 etc$$$6 D%9:%L9%) 'L 8 N2mero de unidades l/icas del sistema %-%*T ) Selecciona una unidad de disco para &ue se convierta en la unidad por defecto o actual$ frece adem.s informacin acerca del n2mero total de unidades l/icas del sistema$ :na unidad fsica como un disco duro puede estar particionada en varias unidades l/icas desi/nadas por * 0 D0 % 0etc INT 21H -uncin 1BH !tener disco actual LL'M'D') 'H 8 1BH D%9:%L9%) 'L 8 *di/o de la unidad actual 578' 0 18D 0 etc$$$6 %-%*T ) Devuelve el cdi/o de la unidad de disco activa o por defecto$ INT 21H -uncin GBH *rear directorio LL'M'D') 'H 8 GBH DS)DC 8 Se/mento) Despla4amiento de una cadena 'S*II con el nom!re del directorio$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Se crea un nuevo directorio usando la unidad de disco y la va de acceso especificada en la cadena 'S*IIH$ INT 21H -uncin G'H Dorrar directorio LL'M'D') 'H 8 G'H DS)DC 8 Se/mento) Despla4amiento de una cadena 'S*II con el nom!re del directorio a !orrar$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1

'C 8 *di/o de error$ %-%*T ) Se elimina el directorio indicado de la unidad de disco y la va de acceso especificada en la cadena 'S*II$ INT 21H -uncin GDH %sta!lecer directorio actual LL'M'D') 'H 8 GDH DS)DC 8 Se/mento) Despla4amiento de una cadena 'S*II con el nom!re del directorio$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) %sta!lece como directorio actual el indicado mediante la cadena 'S*II$ INT 21H -uncin IJH !tener directorio actual LL'M'D') 'H 8 IJH DL 8 *di/o de la unidad 57 8 unidad por defecto0 actualF1 8 ' F 2 8 D F etc$$$6 DS)SI 8 Se/mento) Despla4amiento de un !uffer de =I !ytes$ %ste !uffer contendr. el nom!re del directorio0 con toda la va de acceso al mismo0 en forma de cadena 'S*II$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) %sta!lece como directorio actual el indicado mediante la cadena 'S*II$ %sta funcin se a!ortar. 5indic.ndolo mediante *f y 'C6 si el cdi/o de unidad no es v.lido$ -unciones de mane3o de -ic1eros INT 21H -uncin G*H *rear -ic1ero LL'M'D') 'H 8 G*H *C 8 'tri!utos del fic1ero) 77H -ic1ero Normal$ 71H -ic1ero de Slo Lectura$ 72H -ic1ero culto$ 7GH -ic1ero de Sistema$ DS)DC 8 Se/mento) Despla4amiento de una cadena 'S*II con el nom!re de fic1ero$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 'C 8 Handle o mane3ador de fic1ero$ Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$

%-%*T ) Si el fic1ero indicado mediante la cadena 'S*II ya eKista0 entonces se vaca su contenido0 &uedando con lon/itud 7$ Si el fic1ero no eKista0 entonces se crea$ %n am!os casos0 el fic1ero se a!re0 y se devuelve un Handle mane3ador de fic1ero para los restantes accesos a dic1o fic1ero$ %sta funcin se a!ortar. 5indic.ndolo mediante *f y 'C6 si) -La va de acceso indicada en la cadena 'S*II es errnea$ -Se va a crear el fic1ero en el directorio ra4 y "ste ya est. lleno %l Handle es un n2mero mediante el cual se referencia a un fic1ero dado$ De esta forma es m.s cmodo tra!a3ar con fic1eros$ (ara cada uno de los fic1eros con &ue tra!a3emos0 tendremos un n2mero 5Handle6 &ue lo representar.$ INT 21H -uncin GDH '!rir -ic1ero LL'M'D') 'H 8 GDH 'L 8 Modo de acceso$ Dits 7-2) (ermiso de lecturaLescritura$ 777! 'cceso de slo lectura$ 771! 'cceso de slo escritura$ 717! 'cceso de lecturaLescritura$ Dit G) 7! 5+eservado6$ Dits I-=) Modo de comparticin de -ic1ero 777! Slo el pro/rama actual puede acceder al arc1ivo 771! Slo el pro/rama actual puede acceder al arc1ivo$ 717! tro pro/rama puede leer el arc1ivo0 pero no escri!ir en "l$ 711! tro pro/rama puede escri!ir en el arc1ivo0 pero no leerlo$ 177! tro pro/rama puede leer y escri!ir en el arc1ivo$ Dit J) Dit de @1erencia@ Handle-fla/$ 7! Si el 1andle se 1ereda por un pro/rama 1i3o$ 1! Si el 1andle no se 1ereda$ DS)DC 8 Se/mento) Despla4amiento de una cadena 'S*II con el nom!re de fic1ero$ D%9:%L9%) Si se e3ecut correctamente -la/ de acarreo 5*f6 8 7 'C 8 Handle o mane3ador de fic1ero Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Mediante esta funcin se a!re un fic1ero ya eKistente0 y se devuelve un Handle para acceder al fic1ero en lo sucesivo$ INT 21H -uncin G%H *errar -ic1ero LL'M'D') 'H 8 G%H DC 8 Handle$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$

%-%*T ) Mediante esta funcin se cierra un fic1ero &ue estuviera a!ierto$ Se utili4a el Handle para indicar el fic1ero a cerrar$ Tras cerrar el fic1ero0 dic1o Handle se li!era para nuevos fic1eros$ Se vuelvan al disco todos los !uffers internos asociados al fic1ero$ INT 21H -uncin G-H Lectura de -ic1ero o dispositivo LL'M'D') 'H 8 G-H DC 8 Handle$ *C 8 N2mero de !ytes a leer$ DS)DC 8 Se/mento) Despla4amiento del !uffer donde se depositar.n los caracteres ledos D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 'C 8 Dytes transferidos Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Dado un 1andle v.lido0 se reali4a una transferencia desde el fic1ero referenciado por ese 1andle 1acia el !uffer de memoria especificado mediante DS)DC$ Se transferir.n tantos caracteres como se especifi&ue en *C$ 'cto se/uido0 se actuali4a el puntero de fic1ero 1asta el car.cter &ue si/ue al !lo&ue ledo$ Mediante esta funcin es posi!le leer caracteres del teclado0 usando el 1andle 7$ INT 21H -uncin I7H %scritura en -ic1ero o dispositivo$ LL'M'D') 'H 8 I7H DC 8 Handle$ *C 8 N2mero de !ytes a escri!ir$ DS)DC 8 Se/mento) Despla4amiento del !uffer desde donde se van a tomar los caracteres a escri!ir$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 'C 8 Dytes transferidos$ Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error %-%*T Dado un 1andle v.lido0 se reali4a una transferencia desde el !uffer de memoria indicado mediante DS)DC 1acia el fic1ero o dispositivo referenciado por el Handle$ Se transferir.n tantos caracteres como se especifi&ue en *C$ 'cto se/uido0 se actuali4a el puntero de fic1ero una posicin por delante del !lo&ue escrito0 para &ue futuras escrituras no @mac1a&uen@ los datos &ue ya 1u!iera$ Mediante esta funcin es posi!le escri!ir caracteres en la pantalla0 usando el 1andle 1$ INT 21H -uncin I1H Dorrar -ic1ero$

LL'M'D') 'H 8 I1H DS)DC 8 Se/mento) Despla4amiento de la cadena 'S*II con el nom!re del fic1ero a !orrar$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Se !orra el fic1ero indicado mediante la cadena 'S*II INT 21H -uncin I2H %sta!lecer puntero de fic1ero$ LL'M'D') 'H 8 I2H 'L 8 *di/o de despla4amiento) 771 Despla4amiento desde el inicio del fic1ero$ 711 Despla4amiento desde la posicin actual del puntero$ 721 Despla4amiento desde el final del fic1ero$ DC 8 Handle del fic1ero$ *C 8 Mitad m.s si/nificativa del despla4amiento$ DC 8 Mitad menos si/nificativa del despla4amiento$ D%9:%L9%) Si se e3ecut correctamente -la/ de acarreo 5*f6 8 7 DC 8 Mitad m.s si/nificativa del puntero actuali4ado$ 'C 8 Mitad menos si/nificativa del puntero actuali4ado$ Si N se e3ecut correctamente -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) *am!ia el valor del puntero de fic1ero0 permitiendo as un acceso aleatorio al fic1ero$ (odremos0 mediante esta funcin0 escri!ir y leer caracteres en cual&uier posicin del fic1ero0 sin pasar por las anteriores$ INT 21H -uncin IGH Su!funcin 771 !tener atri!utos de fic1ero LL'M'D') 'H 8 IGH 'L 8 771 DS)DC 8 Se/mento) Despla4amiento de la cadena 'S*IIH con el nom!re del fic1ero$ D%9:%L9% Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 *C 8 'tri!utos del fic1ero Si Dit 7 8 10 -ic1ero de slo lectura$ Si Dit 1 8 10 -ic1ero oculto$

Si Dit 2 8 10 -ic1ero de sistema$ Si Dit < 8 10 %l arc1ivo 1a sido modificado desde el 2ltimo !ac?up$ Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Mediante esta funcin se o!tiene informacin acerca de los atri!utos de un determinado fic1ero0 indicado mediante la cadena 'S*II$ INT 21H -uncin IGH Su!funcin 711 . %sta!lecer atri!utos de fic1ero LL'M'D') 'H 8 IGH 'L 8 711 *C 8 Nuevos atri!utos para fic1ero$ Si ponemos Dit 7 8 10 atri!uto de slo lectura$ Si ponemos Dit 1 8 10 atri!uto de oculto$ Si ponemos Dit 2 8 10 atri!uto de sistema$ De!emos esta!lecer Dit G 8 7 De!emos esta!lecer Dit I 8 7$ Si ponemos Dit < 8 10 indicar. &ue el fic1ero 1a sido modificado desde el 2ltimo !ac?up$ DS)DC 8 Se/mento) Despla4amiento de la cadena 'S*IIH con el nom!re del fic1ero$ D%9:%L9%) Si se e3ecut correctamente -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T ) Mediante esta funcin se esta!lecen nuevos atri!utos a un fic1ero dado$ %ste fic1ero se indica mediante la cadena 'S*II$ INT 21H -uncin <=H +enom!rar -ic1ero Mover -ic1ero LL'M'D') 'H 8 <=H DS)DC 8 Se/mento) Despla4amiento de la cadena 'S*II con el nom!re actual del fic1ero$ %S)DI 8 Se/mento)Despla4amiento de la cadena 'S*II con el nuevo nom!re para el fic1ero$ D%9:%L9%) Si se e3ecut correctamente) -la/ de acarreo 5*f6 8 7 Si N se e3ecut correctamente) -la/ de acarreo 5*f6 8 1 'C 8 *di/o de error$ %-%*T )

%sta funcin permite cam!iar el nom!re a un fic1ero dado$ Tam!i"n permite mover el fic1ero a otro directorio dentro del mismo dispositivo$ %n el se/undo caso0 lo &ue de!emos 1acer es cam!iar el camino &ue nos lleva al fic1ero0 en ve4 del nom!re de fic1ero en s$ 9%+SI N D% MS-D S) 2$7 superior$ N T'S) Se producir. un error si) - la cadena 'S*II indicada es errnea$ - ya eKiste un fic1ero con el mismo nom!re &ue el indicado$ - Se intenta mover el fic1ero a otro dispositivo o unidad$ - %l fic1ero se mueve al directorio ra40 y "ste est. lleno$ -unciones de terminacin de procesos INT 21H -uncin 77H Terminar e3ecucin del (ro/rama LL'M'D') 'H 8 77H *S 8 Direccin del se/mento del (S($ D%9:%L9%) N'D' %-%*T ) Se finali4a la e3ecucin del pro/rama en curso$ %sto conlleva) - Li!eracin de toda la memoria asi/nada al pro/rama$ - Todos los !uffers de fic1ero son vaciados$ - Se cierra cual&uier fic1ero a!ierto por el pro/rama$ - Se restauran los tres vectores de interrupcin 5INT 22H0 INT 2GH0 INT 2IH6 cuyo contenido ori/inal fue almacenado en la pila$ %sta funcin est. pensada para pro/ramas * M0 en los cuales0 el (S( est. en el mismo se/mento &ue el cdi/o del pro/rama$ %n los pro/ramas %C% esto no sucede as0 estando el (S( en diferente se/mento al cdi/o del pro/rama0 por tanto0 no se de!e llamar a esta funcin desde un pro/rama $%C%$ %n am!os casos 5* M y %C%60 es preferi!le utili4ar la funcin I*H0 ya &ue devuelve un cdi/o de retorno la pro/rama padre$ INT 21H -uncin I*H Terminacin de (ro/rama con *di/o de +etorno LL'M'D') 'H 8 I*H 'L 8 *di/o de retorno para el pro/rama padre D%9:%L9%) N'D'$ %-%*T ) Se finali4a la e3ecucin del pro/rama en curso0 y se devuelve un cdi/o de retorno al pro/rama padre$ Mediante este cdi/o de retorno0 se puede ofrecer informacin al pro/rama padre acerca de la e3ecucin del pro/rama 5si se 1a producido error0 etc$$$6 La terminacin del pro/rama conlleva) - Li!eracin de toda la memoria asi/nada al pro/rama$ - Todos los !uffers de fic1ero son vaciados$ - Se cierra cual&uier fic1ero a!ierto por el pro/rama$ - Se restauran los tres vectores de interrupcin 5INT 22H0 INT 2GH0 INT 2IH6 cuyo contenido ori/inal fue almacenado en la pila$

%ste es el m"todo idneo de terminacin de pro/ramas0 ya &ue no necesita &ue el re/istro *S ten/a nin/2n contenido especial$ M aparte0 devuelve informacin al pro/rama padre$ INT 21H -uncin G1H -inali4ar el (ro/rama y De3ar +esidente LL'M'D') 'H 8 G1H 'L 8 *di/o de retorno para el pro/rama padre$ DC 8 *antidad de memoria a de3ar residente 5en p.rrafos6$ D%9:%L9%) N'D' %-%*T ) Se finali4a la e3ecucin del pro/rama en curso0 y se devuelve un cdi/o de retorno al pro/rama padre$ Mediante este cdi/o de retorno0 se puede ofrecer informacin al pro/rama padre acerca de la e3ecucin del pro/rama 5si se 1a producido error0 etc$$$6 'dem.s de esto0 y lo m.s importante) Se de3a residente el pro/rama o parte del mismo0 de forma &ue las si/uientes e3ecuciones de pro/ramas no lo @mac1a&uen@$ La terminacin del pro/rama conlleva) - Li!eracin de toda la memoria asi/nada al pro/rama$ - Todos los !uffers de fic1ero son vaciados$ - Se cierra cual&uier fic1ero a!ierto por el pro/rama$ - Se restauran los tres vectores de interrupcin 5INT 22H0 INT 2GH0 INT 2IH6 cuyo contenido ori/inal fue almacenado en la pila$ :n p.rrafo e&uivale a 1= !ytes$ (or tanto0 en DC 1a!r. &ue indicar el n2mero total de !ytes a de3ar residentes dividido por 1=$ %sta funcin se utili4a en pro/ramacin de utilidades residentes 5como SideNic? o SanDit6$ :na ve4 &ue el pro/rama &ueda residente en memoria0 la . activacin del mismo se reali4a de acuerdo a al/2n criterio del propio pro/rama 5como la pulsacin de una com!inacin de teclas6$ %n este caso0 el pro/rama residente toma el control y al aca!ar su tarea le devuelve el control al pro/rama &ue se estuviera e3ecutando antes de la activacin del residente$

Вам также может понравиться