Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Inicio
Casa
Índices
Buscar
Artículo al azar
Cambios recientes
English
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
API del MS DOS
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
El '''API del MS DOS''' o '''MS-DOS API''' es un [[API]] usado originalmente en [[MS-DOS]]/[[PC-DOS]], y más adelante por otros sistemas [[DOS]]. La mayoría de las llamadas al DOS API invocan la [[interrupción de software]] 21h ([[INT (instrucción x86)|INT]] 21h). Llamando la INT 21h con un número de subfunción en el [[registro de procesador]] AH y otros parámetros en otros registros, se pueden invocar varios servicios del DOS. Los servicios del DOS incluyen la entrada por teclado, salida por pantalla, acceso a archivos de disco, ejecutar programas, la asignación de memoria, y otras cosas. Las subfunciones proporcionadas en el primer lanzamiento del MS-DOS en 1981 fueron fuertemente orientadas a la compatibilidad con el [[CP/M]]. Un importante mejora del DOS API (influenciada parcialmente por ciertos conceptos de [[Unix]]) fue realizada para el lanzamiento del MS-DOS 2.0 de 1983, agregando numerosas nuevas subfunciones para manejar la entrada/salida de archivos usando las "handles" (manejadores) abstractos y soporte para sub-directorios. En estas nuevas subfunciones, los strings son generalmente terminados por un [[byte]] NUL ([[ASCIIZ]]). En la versión MS-DOS 3.1 (lanzada en 1985), varias subfunciones fueron añadidas para manejar [[red de coputadora|redes]]. En la versión MS-DOS 4, fueron introducidas llamadas para manejar la [[memoria expandida]] de acuerdo a la especificación de Lotus-Intel-Microsoft. Hay varias implementaciones del DOS API, incluyendo [[PC-DOS]], [[MS-DOS]], [[DR-DOS]], [[FreeDOS]], [[PTS-DOS]], y otros. El DOS API está basado en el [[BIOS]], y las rutinas del DOS con frecuencia internamente accesan a [[llamadas de interrupción del BIOS]] [[DOS extenders]] junto con [[DOS Protected Mode Interface]] (DPMI) extienden el DOS API al [[modo protegido]] de 16 bits o de 32 bits. El API del MS DOS es parcialmente dependiente en el código [[x86]], por lo tanto el DOS no puede ser portado a otras arquitecturas de procesador. == El API del MS DOS y Windows == Las versiones 1.0 a 3.1 de [[Microsoft Windows]] eran los [[Shell (informática)|shells]] gráficos que corrían en MS-DOS y confiaban en el API del MS DOS (aunque usando [[API de Windows|su propio API]] para los programas de Windows). [[Windows 9x]] también estaba basado en el DOS, pero utilizó una versión personalizada del MS-DOS, principalmente como [[cargador de arranque]]. No usaba mucho el API del MS DOS después de cargarse. Sin embargo, Windows 9x proporcionó el DOS API a los programas que corrían dentro de una ventana shell de comandos. Versiones anteriores de Windows 9x (al menos a través de la primera edición de Windows 98) también podían cargarse en una simple [[interfaz de línea de comandos]] "Modo DOS" sin el [[GUI]] y sin servicios de sistema de Windows, para correr programas puros de DOS. Las versiones del DOS de Windows 9x (numeradas 7.0 en adelante) incluyen varias nuevas subfunciones de servicio para manejar el [[nombre de archivo largo|nombres de archivo largos]] (LFNs). Estas subfunciones LFN del DOS no fueron incluidos en Windows NT, pero estaban en versiones posteriores como [[Windows XP]]. [[Windows NT]] y los sistemas basados en él (ej. Windows XP y [[Windows Vista]]) no están basados en MS-DOS, pero usan una [[máquina virtual]], [[NTVDM]], para manejar el DOS API. NTVDM trabaja haciendo correr un programa del DOS en el [[Modo 8086 virtual]] (una emulación del [[Modo real]] dentro del [[modo protegido]] disponible en [[Intel 8086|80386]] y procesadores más recientes). [[DOSEMU]] para [[Linux]] usa un acercamiento similar. == Servicios comunes del DOS == Algunas llamadas de funciones INT 21h. El número de la llamada se pasa a través de AH: {|class="wikitable" ! AH <br />([[hexadecimal|hex]]) ! Descripción ! Versión<br />DOS ! Parámetros ! Retorno |- | 00 | {{nowrap|Termina programa}} | 1.0+ | | Nunca<ref name="ctyme2551">{{cita web|título=Int 21/AH=00h|url=http://www.ctyme.com/intr/rb-2551.htm}} 090912 ctyme.com</ref> |- | 01 | {{nowrap|Lee caracteres desde [[STDIN]]}} | 1.0+ | | AL=Carácter leído<ref name="ctyme2552">{{cita web|título=Int 21/AH=01h|url=http://www.ctyme.com/intr/rb-2552.htm}} 090912 ctyme.com</ref> |- | 02 | {{nowrap|Escribe carácter a [[STDOUT]]}} | 1.0+ | DL=Carácter |<ref name="ctym2554">{{cita web|título=Int 21/AH=02h|url=http://www.ctyme.com/intr/rb-2554.htm}} 090912 ctyme.com</ref> |- | 03 | Lee caracteres desde el [[puerto serial]] | 1.0+ | | |- | 04 | Escribe caracteres al puerto serial | 1.0+ | | |- | 05 | Escribe caracteres en la impresora | 1.0+ | | |- | 06 | Entrada/salida directa por consola | 1.0+ | | |- | 07 | Entrada directa por consola sin eco | 1.0+ | | AL |- | 08 | Entrada por consola sin eco | 1.0+ | | |- | 09 | {{nowrap|Escribe string a [[STDOUT]]}} | 1.0+ | DS:DX=Puntero a un string terminado en '$' |<ref name="ctyme2562">{{cita web|título=Int 21/AH=09h|url=http://www.ctyme.com/intr/rb-2562.htm}} 090912 ctyme.com</ref> |- | 0A | Entrada con buffer por teclado | 1.0+ | | |- | 0B | Lee estado de la entrada | 1.0+ | | |- | 0C | Limpia buffer de entrada | 1.0+ | | |- | 0D | Resetea disco | 1.0+ | | |- | 0E | Asigna unidad de disco por defecto | 1.0+ | | |- | 0F | Abre archivo | 1.0+ | | |- | 10 | Cierra archivo | 1.0+ | | |- | 11 | Encuentra primer archivo | 1.0+ | | |- | 12 | Encuentra siguiente archivo | 1.0+ | | |- | 13 | Borra archivo | 1.0+ | | |- | 14 | Lectura secuencial | 1.0+ | | |- | 15 | Escritura secuencial | 1.0+ | | |- | 16 | Crea o trunca un archivo | 1.0+ | | |- | 17 | Cambia nombre de un archivo | 1.0+ | | |- | 18 | Reservado | 1.0+ | | |- | 19 | Obtiene unidad de disco por defecto | 1.0+ | | |- | 1A | Asigna dirección de transferencia de disco | 1.0+ | | |- | 1B | Obtiene la información de asignación (allocation) para la unidad por defecto | 1.0+ | | |- | 1C | Obtiene la información de asignación (allocation) para la unidad especificada | 1.0+ | | |- | 1D | Reservado | 1.0+ | | |- | 1E | Reservado | 1.0+ | | |- | 1F | Obtiene el bloque de parámetros de disco (DPB) para la unidad por defecto | 1.0+ | | |- | 20 | Reservado | 1.0+ | | |- | 21 | Lectura aleatoria | 1.0+ | | |- | 22 | Escritura aleatoria | 1.0+ | | |- | 23 | Obtiene el tamaño del archivo en número de registros | 1.0+ | | |- | 24 | Asigna número de registro aleatorio | 1.0+ | | |- | 25 | Asigna vector de interrupción | 1.0+ | | |- | 26 | Crea PSP | 1.0+ | | |- | 27 | Lee bloque aleatorio | 1.0+ | | |- | 28 | Escribe bloque aleatorio | 1.0+ | | |- | 29 | Parsea nombre de archivo | 1.0+ | | |- | 2A | Obtiene la fecha | 1.0+ | | |- | 2B | Ajusta la fecha | 1.0+ | | |- | 2C | Obtiene la hora | 1.0+ | | |- | 2D | Asigna la hora | 1.0+ | | |- | 2E | Asigna la bandera de verificación | 1.0+ | | |- | 3C | Crea o trunca un archivo | 2+ | CX=Atributos del archivo ; {{nowrap|DS:DX->nombre de archivo [[C string|ASCIZ]]}} | [[Carry flag|CF]]=1 si hubo error ; AX=código de error ; {{nowrap|AX=[[Descriptor de archivo|handle de archivo]]}}<ref name="ctyme2778">{{cita web|título=Int 21/AH=3Ch, Creat|url=http://www.ctyme.com/intr/rb-2778.htm}} 090911 ctyme.com</ref> |- | 3D | Abre archivo existente | 2+ | AL=Modos de acceso e intercambio ; DS:DX->Archivo ASCIZ ; {{nowrap|CL=máscara de atributo}} | CF=1 si hubo error ; AX=código de error ; AX=handle de archivo<ref name="ctyme2779">{{cita web|título=Int 21/AH=3Dh, Open|url=http://www.ctyme.com/intr/rb-2779.htm}} 090911 ctyme.com</ref> |- | 3F | Lee desde un archivo o dispositivo | 2+ | BX=[[Descriptor de archivo|handle de archivo]] ; {{nowrap|CX=bytes a leer}} ; DS:DX->datos | CF=1 si hubo error ; AX=código de error o bytes leídos<ref name="ctyme2783">{{cita web|título=Int 21/AH=3Fh, Read|url=http://www.ctyme.com/intr/rb-2783.htm}} 090911 ctyme.com</ref> |- | 40 | Escribe a archivo o dispositivo | 2+ | BX=handle de archivo ; CX=bytes a escribir ; DS:DX->datos | CF=1 si hubo error ; AX=código de error o bytes escritos<ref name="ctyme2791">{{cita web|título=Int 21/AH=40h, Write|url=http://www.ctyme.com/intr/rb-2791.htm}} 090911 ctyme.com</ref> |- | 3E | Cierra archivo | 2+ | BX=handle de archivo | CF=1 si hubo error ; AX=código de error<ref name="ctyme2782">{{cita web|título=Int 21/AH=3Eh, Close|url=http://www.ctyme.com/intr/rb-2782.htm}} 090911 ctyme.com</ref> |- | 42 | Ajusta la posición en el archivo | 2+ | AL=origen de la movida, 0-inicio, 1-actual, 2-final ; BX=handle de archivo ; CX:DX=(con signo) desplazamiento | CF=1 si hubo error ; AX=código de error ; DX:AX=posición desde el principio<ref name="ctyme2799">{{cita web|título=Int 21/AH=42h, Lseek|url=http://www.ctyme.com/intr/rb-2799.htm}} 090911 ctyme.com</ref> |- | 4C | Sale del programa con un código de error indicado | 2.0+ | AL=código del error (0: salida normal) |} == Sistemas operativos que soportan el API del MS DOS == * [[MS-DOS]] - la más extensa encarnación * [[PC-DOS]] - Versión de [[IBM]] * [[DR-DOS]] - Clon de [[Digital Research]] * [[ROM-DOS]] - Versión en ROM * [[FreeDOS]] - De [[fuente abierta]] libre * [[Microsoft Windows]] - 1.x, 2.x, 3.x, y 9x fueron basados en el DOS == Programas con soporte para el API del MS DOS == * [[NTVDM.EXE]] para [[Windows NT]] * [[DOSEMU]] para [[Linux]] * [[DOSBox]] == Referencias == * [https://web.archive.org/web/20020622163518/http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html wustl.edu - Description of MS-DOS services] * ''The New Peter Norton Programmer's Guide to the IBM PC & PS/2'' by Peter Norton and Richard Wilton, Microsoft Press, 1987 ISBN 1-55615-131-4. * [http://www.ctyme.com/intr/cat-010.htm ctyme.com - INT Calls by function] * [http://www.antionline.com/archive/index.php/t-227867.html antionline.com - Programming example code]<!-- Poor, find better! --> {{listaref}} == Véase también == * [[MS DOS]] * [[IBM PC DOS]] * [[Llamadas de interrupción del BIOS]] * [[DOS/4GW]] * [[DOS MZ ejecutable]] == Enlaces externos == * [http://spike.scu.edu.au/~barry/interrupts.html DOS INT 21h - DOS Function Codes] {{Wayback|url=http://spike.scu.edu.au/~barry/interrupts.html |date=20111013235614 }} * [http://www.infradead.org/devload/FuncRef.html DOS Function Reference] * [http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html INT 21h] {{Wayback|url=http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html |date=20160221232517 }} {{Control de autoridades}} [[Categoría:DOS]] [[Categoría:Tecnología de sistema operativo]] [[Categoría:Arquitectura x86]] [[Categoría:Interrupciones]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
API del MS DOS
»
Añadir idiomas
Añadir tema