74
La lista de todas las interrupciones que actualmente son soportados por el emulador. Referencia rápida: INT 10h/00h INT 10h/01h INT 10h/02h INT 10h/03h INT 10h/05h INT 10h/06h INT 10h/07h INT 10h/08h INT 10h/09h 10h/0Ah INT INT 10h/0Ch 10h/0Dh INT INT 10h / 0Eh INT 10h/13h 10h/1003h INT INT 11h 12h INT INT 13h/00h INT 13h/02h INT 13h/03h INT 15h/86h INT 16h/00h INT 16h/01h INT 19h INT 1Ah/00h INT 20h INT 21h INT 21h/01h INT 21h/02h INT 21h/05h INT 21h/06h INT 21h/07h INT 21h/09h 21h/0Ah INT INT 21h/0Bh 21h/0Ch INT INT 21h/0Eh INT 21h/19h INT 21h/25h 21h/2Ah INT INT 21h/2Ch INT 21h/35h INT 21h/39h 21h/3Ah INT INT 21h/3Bh 21h/3Ch INT INT 21h/3Dh 21h/3Eh INT INT 21h/3Fh INT 21h/40h INT 21h/41h INT 21h/42h INT 21h/47h INT 21h / 4Ch INT 21h/56h 33h/0000h INT INT 33h/0001h 33h/0002h INT INT 33h/0003h

La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

Embed Size (px)

Citation preview

Page 1: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

 La lista de todas las interrupciones que actualmente son soportados por el emulador.

Referencia rápida:

INT 10h/00h   INT 10h/01h   INT 10h/02h   INT 10h/03h   INT 10h/05h   INT 10h/06h   INT 10h/07h   INT 10h/08h   INT 10h/09h   10h/0Ah INT   INT 10h/0Ch   10h/0Dh INT   INT 10h / 0Eh   INT 10h/13h

10h/1003h INT   INT 11h   12h INT   INT 13h/00h   INT 13h/02h   INT 13h/03h   INT 15h/86h   INT 16h/00h   INT 16h/01h   INT 19h   INT 1Ah/00h   INT 20h

INT 21h   INT 21h/01h   INT 21h/02h   INT 21h/05h   INT 21h/06h   INT 21h/07h   INT 21h/09h   21h/0Ah INT   INT 21h/0Bh   21h/0Ch INT   INT 21h/0Eh   INT 21h/19h   INT 21h/25h   21h/2Ah INT   INT 21h/2Ch

INT 21h/35h   INT 21h/39h   21h/3Ah INT   INT 21h/3Bh   21h/3Ch INT   INT 21h/3Dh   21h/3Eh INT   INT 21h/3Fh   INT 21h/40h   INT 21h/41h   INT 21h/42h   INT 21h/47h   INT 21h / 4Ch   INT 21h/56h

33h/0000h INT   INT 33h/0001h   33h/0002h INT   INT 33h/0003h

la lista corta de las interrupciones soportadas con las descripciones:

 

INT 10h / AH = 0 - Modo de juego de vídeo.

de entrada: AL = modo deseado de vídeo. estos modos de vídeo son compatibles: 00h - modo texto. 40x25. 16 colores. 8 páginas. 03h - modo texto. 80x25. 16 colores. 8 páginas. 13h - Modo gráfico. 40x25. 256 colores.320x200 píxeles. 1 página. 

Page 2: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

ejemplo:

mov al , 13h mov ah , 0 int 10h

 

INT 10h / AH = 01h - Juego en modo texto forma del cursor.

de entrada: CH = línea inicial del cursor (bits 0-4) y opciones (bits 5-7). CL = Línea de cursor inferior (bits 0-4). cuando el bit 5 de CH se establece en 0 , el cursor es visible. cuando el bit 5 es 1 , el cursor no es visible. 

; Ocultar cursor de texto parpadeante: mov ch , 32 mov ah , 1 int 10h

, Mostrar el cursor de texto estándar parpadeando: mov ch , 6 mov cl , 7 mov ah , 1 int 10h

, Muestran en forma de caja cursor de texto parpadeante: mov ch , 0 mov cl , 7 mov ah , 1 int 10h

; Nota: algunas BIOS requeridas CL ser> = 7,; Formas equivocadas de lo contrario cursor se muestran.  

INT 10h / AH = 2 - Posición de conjunto cursor.

Page 3: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

de entrada: DH = fila. DL = columna. BH = número de página (0 .. 7).

ejemplo:

mov dh , 10 mov dl , 20 mov bh , 0 mov ah , 2 int 10h

 

INT 10h / AH = 03h - obtener la posición del cursor y el tamaño.

de entrada: BH = número de página. retorno: DH = fila. DL = columna. CH = línea inicial del cursor. CL = línea inferior del cursor.

 

INT 10h / AH = 05h - página de selección de vídeo activa.

entrada: AL . = nuevo número de página (0 .. 7) de la página activa se muestra.   

INT 10h / AH = 06h - scroll ventana hacia arriba. INT 10h / AH = 07h - desplácese hacia abajo la ventana.

de entrada: AL . = número de líneas que se realiza desplazamiento (00h = toda la ventana transparente) BH = atribuyen . utiliza para

Page 4: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

escribir líneas en blanco en la parte inferior de la ventana de CH, CL . = fila, columna de la esquina superior izquierda de ventana DH, DL fila = , columna de la esquina inferior derecha de la ventana.

 

INT 10h / AH = 08h - leer el carácter y atributo en la posición del cursor.

de entrada: BH . = número de página retorno: AH = atributo . AL = carácter.

 

INT 10h / AH = 09h - escribir el carácter y atributo en la posición del cursor.

de entrada: AL . carácter = para mostrar BH = número de página. BL = atributo . CX = número de veces para escribir caracteres.

 

INT 10h / AH = 0AH - escritura único personaje en la posición del cursor.

de entrada: AL . carácter = para mostrar BH = número de página. CX =

Page 5: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

número de veces para escribir caracteres.

 

INT 10h / AH = 0Ch - cambie el color de un solo píxel.

de entrada: AL = píxel de color CX . columna = DX = fila.

ejemplo:

mov al , 13h mov ah , 0 int 10h ; conjunto de gráficos del modo de

vídeo. mov al , 1100b mov cx , 10 mov dx , 20 mov ah , 0CH int 10h ; pixel set.

 

INT 10h / AH = 0Dh - obtener color de un solo píxel.

de entrada: CX . columna = DX . = fila de salida: AL = píxel de color

 

INT 10h / AH = 0Eh - Salida de teletipo.

de entrada: AL = carácter a escribir.

Page 6: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

funciona esta muestra un carácter en la pantalla, el avance del cursor y el desplazamiento de la pantalla según sea necesario. la impresión se hace siempre a la corriente activa página. ejemplo: 

mov al , 'a' mov ah , 0EH int 10h

; Nota: en sistemas específicos esta; Función no puede utilizarse en modo gráfico.

 

INT 10h / AH = 13h - escritura cadena.

de entrada: AL = modo de escritura: bit 0 : cursor actualización después de la escritura; bit 1 : cadena contiene atributos . BH . = número de página BL = atributo . si la cadena contiene sólo caracteres (bit 1 de AL es cero) CX = número de caracteres en string (atributos no se cuentan). DL, DH = columna, fila donde se va a empezar a escribir. ES: BP apunta a string para ser impreso.         

ejemplo:

mov al , 1 mov bh , 0 mov bl , 0011_1011b mov cx , msg1end - compensar msg1 ; calcular el

tamaño del mensaje. mov dl , 10 mov dh , 7 empuje cs pop es mov pb , compensar msg1

Page 7: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

mov ah , 13h int 10h jmp msg1endmsg1 db "hola, mundo!"msg1end:

 

INT 10h / AX = 1003h - Intensidad de palanca / parpadeando.

de entrada: BL = modo de escritura: 0 : habilitar colores intensos. 1 :. permitir a parpadear (no soportado por el emulador y ventanas de símbolo del sistema) BH = 0 (para evitar problemas en algunos adaptadores).        

ejemplo:

mov ax , 1003h mov bx , 0 int 10h

 bit tabla de colores:atributo de carácter es de 8 bit con valor, bajo 4 bits puestos tanto en color, de alta 4 bits fijados color de fondo. nota: el emulador y ventanas de línea de comandos del sistema no son compatibles con fondo de parpadear, sin embargo, para que los colores tienen el mismo aspecto en dos y en el modo de pantalla completa es necesario desactivar el fondo de parpadear.

COLOR HEX BIN

0 0000 negro1 0001 azul2 0010 verde3 0011 cyan4 rojo 01005 0101 magenta6 0110 marrón7 0111 gris claro

Page 8: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

8 1000 gris oscuro9 1001 azul claroA 1010 luz verdeB 1011 cian claroC 1100 luz rojaD 1101 magenta claroE 1110 amarilloF 1111 blanco

nota:

, El uso de este código para la compatibilidad con DOS / cmd indicador del modo de pantalla completa: mov ax , 1003h mov bx , 0 , deshabilitar parpadear. int 10h

 

11h INT - obtener la lista de BIOS del equipo.

regreso: AX = equipo BIOS lista de palabras, de hecho esta llamada devuelve el contenido de la palabra en 0040h: 0010h. Actualmente esta función se puede utilizar para determinar el número de serie instalada de unidades de disquete. 

Los campos de bits para el BIOS detecta el hardware instalado:bit (s) Descripción 15-14 Número de dispositivos paralelos. 13 Reservado. 12 puertos juego instalado. Número 11-9 de dispositivos serie. 8 Reservados. 7-6 Número de unidades de disco flexible (menos 1): 00 solo disquete; 01 dos disquetes; 10 tres discos; 11 cuatro disquetes. 5-4 Modo vídeo inicial: 00 EGA, VGA, PGA, o de otro tipo con BIOS de video a bordo; 01 40x25 de color CGA. 10 80x25 CGA color (por defecto emulador). 11 80x25 texto mono. 3 Reservado. 2 PS / 2 para ratón está instalado. Un coprocesador matemático instalado.

Page 9: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

0 Ajuste al arrancar desde un disquete.

 

12h INT - obtener el tamaño de la memoria.

regreso: AX = kilobytes de memoria contigua a partir de las direcciones 00000h absolutos, esta llamada devuelve el contenido de la palabra en 0040h: 0013h.

Las unidades de disquete se emulan mediante FLOPPY_0 (.. 3) archivos. 

 

INT 13h / AH = 00h - Sistema de disco de restablecimiento. 

   

INT 13h / AH = 02h - lee los sectores del disco en la memoria. INT 13h / AH = 03h - escribe sectores del disco.

de entrada:AL = número de sectores para leer / escribir (debe ser distinta de cero) CH = número de cilindros (0 .. 79). CL = número de sector (1 .. 18). DH = número cabeza (0 .. 1). DL = unidad número (0 .. 3, para el emulador que depende de la cantidad de archivos FLOPPY_). ES: BX apunta al búfer de datos.

volver:CF establecido en caso de error. CF claro caso de éxito. AH estado = (0 - si tiene éxito). AL = número de sectores

Page 10: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

transferidos.

Nota: cada sector tiene 512 bytes. 

INT 15h / AH = 86h - Función BIOS espera.de entrada:CX: DX = intervalo en microsegundosvolver:CF claro caso de éxito (intervalo de espera transcurrido), CF situado en error o cuando se espere función ya está en marcha. 

Nota:la resolución del período de espera es de 977 microsegundos en muchos sistemas (1 millón de microsegundos - 1 segundo). Windows XP no es compatible con esta interrupción (siempre establece CF = 1).

 

INT 16h / AH = 00h - obtener pulsación de teclado (sin eco).

volver:AH = BIOS código de exploración. AL = ASCII del carácter. (si está presente una combinación de teclas, se elimina de la memoria intermedia del teclado). 

 

INT 16h / AH = 01h - comprobación de pulsaciones de teclas en el búfer de teclado.

volver:

Page 11: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

ZF = 1 si pulsación de tecla no está disponible. ZF = 0 si pulsación de teclas disponibles. AH = BIOS código de exploración. AL = carácter ASCII. (si está presente una combinación de teclas, no se elimina de la memoria intermedia del teclado). 

 

INT 19h - reinicio del sistema.

Normalmente, el BIOS intentará leer el sector 1, cabeza 0, pista 0 de la unidad A: a 0000h: 7C00h. El emulador sólo se detiene la ejecución, para que arranque desde la unidad de disquete seleccionar desde el menú:"unidad virtual" -> "arranque desde floppy ' 

INT 1Ah / AH = 00h - obtener la hora del sistema.

volver:CX: DX . = número de ciclos de reloj desde la medianoche AL = medianoche contrario, avanzaba cada vez pases de medianoche.

nota: hay aproximadamente 18,20648 ciclos de reloj por segundo, y 1800B0h por 24 horas. AL no está establecido por el emulador.  

INT 20h - Salida para sistema operativo.

 

Page 12: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

La lista corta de emular MS-DOS interrumpe - 21h INT

Sistema de ficheros DOS se emula en C: \ emu8086 \ vdrive \ x (x es una letra de unidad)

Si no se especifica letra de la unidad y el directorio actual no está definida, entonces C: \ emu8086 \ MyBuild \ ruta de acceso se utiliza por defecto. FLOPPY_0, 1,2,3 archivos son emuladas de forma independiente del sistema de archivos DOS. Para la unidad física emulador A: es el archivo c: \ emu8086 \ FLOPPY_0 (por interrupciones de la BIOS: 13h INT y el maletero). Durante las interrupciones del DOS ( INT 21h ) conducir un : se emula en este subdirectorio: C: \ emu8086 \ vdrive \ a \ Nota: El sistema de ficheros DOS limita los nombres de archivo y de directorio de 8 caracteres, la extensión se limita a 3 caracteres, ejemplo de un nombre de archivo válido: miarchivo.txt (archivo name = 6 caracteres, extensión - 3 caracteres).extensión se escribe después del punto, no se permiten otros puntos.

 

INT 21h / AH = 1 - leer el carácter de la entrada estándar, con eco, el resultado se almacena en AL . si no hay un carácter en el buffer del teclado, la función espera hasta que se pulsa una tecla. ejemplo: 

mov ah , 1 int 21h

 

Page 13: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 2 - Escribir carácter a la salida estándar. entrada DL = carácter a escribir, después de la ejecución AL = DL . ejemplo: 

mov ah , 2 mov dl , 'a' int 21h

 

INT 21h / AH = 5 . - salida de caracteres para impresora entrada DL = carácter a imprimir, después de la ejecución AL = DL . ejemplo: 

mov ah , 5 mov dl , 'a' int 21h

 

INT 21h / AH = 6 . - La entrada o salida de la consola directamente los parámetros de salida: DL = 0 .. 254 (código ASCII) para los parámetros de entrada: DL = 255 para las devoluciones de salida: AL = DL para las devoluciones de entrada: ZF conjunto si no carácter disponible y AL = 00h , ZF claro si el personaje está disponible. AL = carácter lectura; búfer se borra. ejemplo: 

Page 14: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

mov ah , 6 mov dl , 'a' int 21h ; carácter de salida.

mov ah , 6 mov dl , 255 int 21h ; obtiene caracter de buffer del

teclado (si lo hay) o un conjunto ZF = 1.

 

INT 21h / AH = 7 . - Entrada de carácter sin eco en AL . si no hay un carácter en el buffer del teclado, la función espera hasta que se pulsa una tecla ejemplo: 

mov ah , 7 int 21h

 

INT 21h / AH = 9 - Salida de una cadena en DS: DX . Cadena debe terminar con ' $ '. ejemplo: 

org 100h mov dx , compensar msj mov ah , 9 int 21h ret msj db "hola mundo $"

 

Page 15: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 0AH - entrada de una cadena en DS: DX , byte puño es el tamaño del buffer, segundo byte es el número de caracteres realmente leídos. esta función es no añadir '$' al final de la cadena. imprimir con INT 21h/ AH = 9 debe configurar carácter dólar al final de la misma y empezar a imprimir desde la dirección DS: DX + 2 . ejemplo: 

org 100h mov dx , compensar tampón mov ah , 0ah int 21h jmp impresióntampón db 10,?, 10 dup ( '' )print:xor bx , bx mov bl , buffer [ 1 ] mov tampón [ bx + 2 ] , '$' mov dx , compensar tampón + 2 mov ah , 9 int 21h ret

la función no permite introducir más caracteres que el tamaño de búfer especificado. véase también int21.asm en c: \ \ examples emu8086 

 

INT 21h / AH = 0Bh - obtener el estado de entrada, devuelve: AL = 00H si no hay caracteres disponibles, AL = 0FFh si el personaje se encuentra disponible. 

 

Page 16: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 0Ch . - buffer del teclado de color y lee la entrada estándar de entrada: AL = número de función de entrada para ejecutar después de buffer de lavado (puede ser 01h, 06h, 07h, 08h, o 0Ah - para otros valores del búfer se vacía pero no se intenta la entrada); otros registros según sea apropiado para la función de entrada seleccionada. 

 

INT 21h / AH = 0Eh . - unidad predeterminada seleccione la entrada: DL drive = nuevo valor predeterminado (0 = A:, 1 = B:, etc) Regreso: AL = número de letras de unidad potencialmente válidas Notas: el valor de retorno es la máxima unidad presentar. 

 

INT 21h / AH = 19h . - get unidad predeterminada actual retorno: AL = unidad (0 = A:, 1 = B:, etc) 

 

INT 21h / AH = 25h - vector set interrupción, entrada: AL = número de interrupciones. DS: DX - Mozo>

Page 17: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

nueva interrupción. 

 

INT 21h / AH = 2Ah - obtener fecha del sistema; vuelta: CX . = año (1980-2099) DH . = mes DL . = día AL = día de la semana (00h = domingo) 

 

INT 21h / AH = 2Ch - obtiene la hora del sistema; vuelta: CH = hora. CL = minuto. DH = segundo. DL = 1/100 segundos. 

 

INT 21h / AH = 35h - get vector de interrupción, entrada: AL = número de interrupción; vuelta: ES: BX - Mozo> interrupción de corriente. 

 

INT 21h / AH = 39h - crear el directorio. entrada: DS: DX -> ruta ASCIZ; cadena terminada en cero, por ejemplo:

org 100h mov dx , compensar ruta de archivo mov ah , 39h int 21h

Page 18: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

enriar

ruta_archivo DB "C: \ mydir" , 0 ; camino que se creará. extremoel código anterior crea c: \ emu8086 \ vdrive \ C \ mydir directorio si se ejecuta el emulador. 

Retorno: CF claro si tiene éxito AX destruido. CF conjunto en caso de error AX = código de error. Nota: todos los directorios de la ruta determinada, debe existir sino el último. 

 

INT 21h / AH = 3Ah . - eliminar el directorio de entrada: DS: DX . -> ASCIZ ruta de directorio a eliminar Retorno: CF está claro si tiene éxito, AX destruido CF se encuentra en error AX = código de error. Notas: El directorio debe ser vacío (no debe haber archivos dentro de ella). 

 

INT 21h / AH = 3BH . - configurar el directorio actual de entrada: DS: DX . -> ASCIZ ruta para convertirse en el directorio actual (máx. 64 bytes) Regreso: indicador de acarreo está claro si tiene éxito, AX . destruidos Carry Flag se encuentra en error AX = el código de error. Notas: incluso si el

Page 19: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

nombre nuevo directorio incluye una letra de unidad, la unidad predeterminada no se cambia, sólo el directorio actual en esa unidad. 

 

INT 21h / AH = 3Ch . - crear o truncar el archivo de entrada: CX = Atributos de archivos: 

mov cx , 0 , normal - sin atributos. mov cx , 1 , de sólo lectura. mov cx , 2 ; oculto. mov cx , 4 ; sistema mov cx , 7 , sistema oculto y de sólo lectura! mov cx , 16 ; archivoDS: DX . -> filename ASCIZ devuelve: CF claro si tiene éxito, AX = identificador de archivo. CF conjunto en caso de error AX = código de error. Nota: si existe el archivo especificado se elimina sin una

advertencia. ejemplo: 

Page 20: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

org 100h mov ah , 3 canales mov cx , 0 mov dx , compensar nombre de archivo mov ah , 3 canales int 21h jc errar mov manija, hacha jmp kNombre de archivo db "miarchivo.txt" , 0manejar dw ?err:; .... k:enriar

 

INT 21h / AH = 3Dh . - Abrir archivo existente Ingreso: AL = modos de acceso y participación:

mov al , 0 ; lectura mov al , 1 ; escritura mov al , 2 , de lectura / escritura

DS: DX . -> nombre de archivo ASCIZ Retorno: CF claro si tiene éxito, AX = identificador de archivo. CF conjunto en caso de error AX = código de error. Nota 1: El puntero del archivo se establece al inicio del archivo. Nota 2: El archivo debe existir. ejemplo: 

Page 21: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

org 100h mov al , 2 mov dx , compensar nombre de archivo mov ah , 3DH int 21h jc errar mov manija, hacha jmp kNombre de archivo db "miarchivo.txt" , 0manejar dw ?err:; .... k:enriar

 

INT 21h / AH = 3Eh . - cerrar el archivo de entrada: BX = identificador de archivo devuelto: CF claro si tiene éxito, AX destruido. CF establecido en el error, AX = código de error (06h). 

 

Page 22: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 3Fh . - leer desde el archivo de entrada: BX = identificador de archivo. CX = Número de bytes a leer. DS: DX . - búfer> para datos de Retorno: CF está claro si tiene éxito - AX = número de bytes realmente leer .; 0 si en EOF (fin de archivo) antes de la llamada CF se establece en error AX . = código de error Nota: los datos se leen a partir de la posición actual del archivo, y la posición del archivo se actualiza después de una lectura correcta de la devuelto AX puede ser menor de la solicitud en CX si una lectura parcial ocurrido. 

 

INT 21h / AH = 40h . - escribir en el archivo de entrada: BX . = identificador de archivo CX . = número de bytes a escribir DS: DX . -> datos para escribir retorno: CF claro si es correcto, AX = número de bytes realmente escritos. CF establecido en error; AX = código de error. Nota: si CX es cero, no se escriben datos y el archivo se trunca o se extienda a los datos de la posición actual se escribe a partir de la posición actual del fichero, y la posición del archivo se actualiza después de el éxito de escribir la causa más común de AX < CX de retorno es un disco lleno. 

Page 23: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

 

INT 21h / 41h AH = - Borrar archivo (desvincular). entrada: DS: DX . -> ASCIZ nombre de archivo (sin comodines, pero vea las notas) de retorno: CF claro si tiene éxito, AX destruido. AL es la unidad de archivo eliminado (indocumentados .) CF establecido en error AX = código de error. Nota: DOS no borra los datos del archivo, sino que simplemente se vuelve inaccesible debido a que la cadena FAT para el archivo se borra de borrar un archivo que está actualmente abierto puede conducir a la corrupción del sistema de archivos. 

 

Page 24: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 42h . - BUSCA - fijar posición actual del fichero de entrada: AL = origen del movimiento: 0 . - Inicio de expediente 1 . - posición actual del fichero 2 . - final del archivo BX . = identificador de archivo CX: DX = desplazamiento . desde el origen de la posición del nuevo archivo de Retorno: CF claro si tiene éxito, DX: AX . = Posición nuevo archivo en bytes desde el comienzo del archivo CF . establecido en el error, AX = código de errorNotas: los orígenes 1 y 2 , el puntero puede ser coloca antes del inicio del archivo, sin error se devuelve en ese caso, pero los intentos posteriores para leer o escribir el archivo se producirán errores. Si la nueva posición está más allá del final actual del archivo, el archivo se ampliará por la siguiente escritura (véase AH = 40h ). ejemplo: 

org 100h mov ah , 3 canales mov cx , 0 mov dx , compensar nombre de archivo mov ah , 3 canales int 21h ; crear el archivo ... mov manija, hacha

Page 25: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

mov bx , asa mov dx , compensado datos mov cx , DATA_SIZE mov ah , 40h int 21h ; escribir en el archivo ...

mov al , 0 mov bx , asa mov cx , 0 mov dx , 7 mov ah , 42h int 21h ; buscar ...

mov bx , asa mov dx , compensar tampón mov cx , 4 mov ah , 3FH int 21h ; leer desde el archivo ...

mov bx , asa mov ah , 3EH int 21h ; cerca archivo ... ret

Nombre de archivo db "miarchivo.txt" , 0manejar dw ?datos db "hola archivos!" DATA_SIZE = $ - compensación de datostampón db 4 dup ( '' )

 

INT 21h / AH = 47h . - obtener el directorio actual de entrada: DL = número de unidad (00h = por defecto, 01h = A:, etc) DS: SI -> 64-byte buffer para nombre de ruta ASCIZ. Regreso: Llevar está claro si tiene éxito Carryse establece en el error, AX = código de error (0Fh) Notas: la ruta devuelta no incluye una unidad de disco y la barra invertida inicial. 

Page 26: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

 

INT 21h / AH = 4 canales - Control de retorno al sistema operativo (STOP). 

 

INT 21h / AH = 56h . - cambiar el nombre de archivo / archivo de movimiento de entrada: DS: DX -> ASCIZ nombre de archivo existente. ES: DI . -> ASCIZ nuevo nombre de archivo devuelto: CF . claro si tiene éxito CFestablecido en el error, AX = error . código Nota: permite moverse entre directorios en la unidad lógica sólo mismas, abrir archivos no deben cambiar el nombre! 

Page 27: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

  

interrumpe Mouse Driver - INT 33h

INT 33h / AX = 0000 - ininialization ratón. cualquier puntero del ratón anterior está oculto. retornos: 

si tiene éxito: AX = 0FFFFh y BX . = número de botones del ratón si hay un error: AX = 0ejemplo:

mov ax , 0 int 33hvéase también: mouse.asm en los ejemplos. 

 

INT 33h / AX = 0001 . - puntero del ratón espectáculo ejemplo: 

mov ax , 1 int 33h

 

Page 28: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 33h / AX = 0002 - ocultar el puntero del ratón visible. ejemplo: 

mov ax , 2 int 33h

 

INT 33h / AX = 0003 . - get posición del ratón y el estado de sus botones devuelve: 

si el botón izquierdo abajo: BX = 1 si el botón derecho abajo: BX = 2 si ambos botones están abajo: BX = 3 CX = x DX = y 

ejemplo:

mov ax , 3 int 33h

; Nota: en el modo 320x200 gráfica el valor de CX se duplica.; Mouse2.asm ver en los ejemplos.

INT 10h / AH = 0 - Modo de juego de vídeo.

de entrada: AL = modo deseado de vídeo. estos modos de vídeo son compatibles: 00h - modo texto. 40x25. 16 colores. 8 páginas. 03h - modo texto. 80x25. 16 colores. 8 páginas. 13h - Modo gráfico. 40x25. 256 colores.320x200 píxeles. 1 página. 

Page 29: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

ejemplo:

mov al , 13h mov ah , 0 int 10h

 

INT 10h / AH = 01h - Juego en modo texto forma del cursor.

de entrada: CH = línea inicial del cursor (bits 0-4) y opciones (bits 5-7). CL = Línea de cursor inferior (bits 0-4). cuando el bit 5 de CH se establece en 0 , el cursor es visible. cuando el bit 5 es 1 , el cursor no es visible. 

; Ocultar cursor de texto parpadeante: mov ch , 32 mov ah , 1 int 10h

, Mostrar el cursor de texto estándar parpadeando: mov ch , 6 mov cl , 7 mov ah , 1 int 10h

, Muestran en forma de caja cursor de texto parpadeante: mov ch , 0 mov cl , 7 mov ah , 1 int 10h

; Nota: algunas BIOS requeridas CL ser> = 7,; Formas equivocadas de lo contrario cursor se muestran.  

Page 30: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 10h / AH = 2 - Posición de conjunto cursor.

de entrada: DH = fila. DL = columna. BH = número de página (0 .. 7).

ejemplo:

mov dh , 10 mov dl , 20 mov bh , 0 mov ah , 2 int 10h

 

INT 10h / AH = 03h - obtener la posición del cursor y el tamaño.

de entrada: BH = número de página. retorno: DH = fila. DL = columna. CH = línea inicial del cursor. CL = línea inferior del cursor.

 

INT 10h / AH = 05h - página de selección de vídeo activa.

entrada: AL . = nuevo número de página (0 .. 7) de la página activa se muestra.   

INT 10h / AH = 06h - scroll ventana hacia arriba. INT 10h / AH = 07h - desplácese hacia abajo la ventana.

Page 31: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

de entrada: AL . = número de líneas que se realiza desplazamiento (00h = toda la ventana transparente) BH = atribuyen . utiliza para escribir líneas en blanco en la parte inferior de la ventana de CH, CL . = fila, columna de la esquina superior izquierda de ventana DH, DL fila = , columna de la esquina inferior derecha de la ventana.

 

INT 10h / AH = 08h - leer el carácter y atributo en la posición del cursor.

de entrada: BH . = número de página retorno: AH = atributo . AL = carácter.

 

INT 10h / AH = 09h - escribir el carácter y atributo en la posición del cursor.

de entrada: AL . carácter = para mostrar BH = número de página. BL = atributo . CX = número de veces para escribir caracteres.

 

INT 10h / AH = 0AH - escritura único personaje en la posición del cursor.

Page 32: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

de entrada: AL . carácter = para mostrar BH = número de página. CX = número de veces para escribir caracteres.

 

INT 10h / AH = 0Ch - cambie el color de un solo píxel.

de entrada: AL = píxel de color CX . columna = DX = fila.

ejemplo:

mov al , 13h mov ah , 0 int 10h ; conjunto de gráficos del modo de

vídeo. mov al , 1100b mov cx , 10 mov dx , 20 mov ah , 0CH int 10h ; pixel set.

 

INT 10h / AH = 0Dh - obtener color de un solo píxel.

de entrada: CX . columna = DX . = fila de salida: AL = píxel de color

 

INT 10h / AH = 0Eh - Salida de teletipo.

Page 33: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

de entrada: AL = carácter a escribir.funciona esta muestra un carácter en la pantalla, el avance del cursor y el desplazamiento de la pantalla según sea necesario. la impresión se hace siempre a la corriente activa página. ejemplo: 

mov al , 'a' mov ah , 0EH int 10h

; Nota: en sistemas específicos esta; Función no puede utilizarse en modo gráfico.

 

INT 10h / AH = 13h - escritura cadena.

de entrada: AL = modo de escritura: bit 0 : cursor actualización después de la escritura; bit 1 : cadena contiene atributos . BH . = número de página BL = atributo . si la cadena contiene sólo caracteres (bit 1 de AL es cero) CX = número de caracteres en string (atributos no se cuentan). DL, DH = columna, fila donde se va a empezar a escribir. ES: BP apunta a string para ser impreso.         

ejemplo:

mov al , 1 mov bh , 0 mov bl , 0011_1011b mov cx , msg1end - compensar msg1 ; calcular el

tamaño del mensaje. mov dl , 10 mov dh , 7 empuje cs

Page 34: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

pop es mov pb , compensar msg1 mov ah , 13h int 10h jmp msg1endmsg1 db "hola, mundo!"msg1end:

 

INT 10h / AX = 1003h - Intensidad de palanca / parpadeando.

de entrada: BL = modo de escritura: 0 : habilitar colores intensos. 1 :. permitir a parpadear (no soportado por el emulador y ventanas de símbolo del sistema) BH = 0 (para evitar problemas en algunos adaptadores).        

ejemplo:

mov ax , 1003h mov bx , 0 int 10h

 bit tabla de colores:atributo de carácter es de 8 bit con valor, bajo 4 bits puestos tanto en color, de alta 4 bits fijados color de fondo. nota: el emulador y ventanas de línea de comandos del sistema no son compatibles con fondo de parpadear, sin embargo, para que los colores tienen el mismo aspecto en dos y en el modo de pantalla completa es necesario desactivar el fondo de parpadear.

COLOR HEX BIN

0 0000 negro1 0001 azul2 0010 verde3 0011 cyan4 rojo 0100

Page 35: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

5 0101 magenta6 0110 marrón7 0111 gris claro8 1000 gris oscuro9 1001 azul claroA 1010 luz verdeB 1011 cian claroC 1100 luz rojaD 1101 magenta claroE 1110 amarilloF 1111 blanco

nota:

, El uso de este código para la compatibilidad con DOS / cmd indicador del modo de pantalla completa: mov ax , 1003h mov bx , 0 , deshabilitar parpadear. int 10h

 

11h INT - obtener la lista de BIOS del equipo.

regreso: AX = equipo BIOS lista de palabras, de hecho esta llamada devuelve el contenido de la palabra en 0040h: 0010h. Actualmente esta función se puede utilizar para determinar el número de serie instalada de unidades de disquete. 

Los campos de bits para el BIOS detecta el hardware instalado:bit (s) Descripción 15-14 Número de dispositivos paralelos. 13 Reservado. 12 puertos juego instalado. Número 11-9 de dispositivos serie. 8 Reservados. 7-6 Número de unidades de disco flexible (menos 1): 00 solo disquete; 01 dos disquetes; 10 tres discos; 11 cuatro disquetes. 5-4 Modo vídeo inicial: 00 EGA, VGA, PGA, o de otro tipo con BIOS de video a bordo; 01 40x25 de color CGA. 10 80x25 CGA color (por defecto emulador). 11 80x25 texto mono.

Page 36: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

3 Reservado. 2 PS / 2 para ratón está instalado. Un coprocesador matemático instalado. 0 Ajuste al arrancar desde un disquete.

 

12h INT - obtener el tamaño de la memoria.

regreso: AX = kilobytes de memoria contigua a partir de las direcciones 00000h absolutos, esta llamada devuelve el contenido de la palabra en 0040h: 0013h.

Las unidades de disquete se emulan mediante FLOPPY_0 (.. 3) archivos. 

 

INT 13h / AH = 00h - Sistema de disco de restablecimiento. 

   

INT 13h / AH = 02h - lee los sectores del disco en la memoria. INT 13h / AH = 03h - escribe sectores del disco.

de entrada:AL = número de sectores para leer / escribir (debe ser distinta de cero) CH = número de cilindros (0 .. 79). CL = número de sector (1 .. 18). DH = número cabeza (0 .. 1). DL = unidad número (0 .. 3, para el emulador que depende de la cantidad de archivos FLOPPY_). ES: BX apunta al búfer de datos.

volver:

Page 37: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

CF establecido en caso de error. CF claro caso de éxito. AH estado = (0 - si tiene éxito). AL = número de sectores transferidos.

Nota: cada sector tiene 512 bytes. 

INT 15h / AH = 86h - Función BIOS espera.de entrada:CX: DX = intervalo en microsegundosvolver:CF claro caso de éxito (intervalo de espera transcurrido), CF situado en error o cuando se espere función ya está en marcha. 

Nota:la resolución del período de espera es de 977 microsegundos en muchos sistemas (1 millón de microsegundos - 1 segundo). Windows XP no es compatible con esta interrupción (siempre establece CF = 1).

 

INT 16h / AH = 00h - obtener pulsación de teclado (sin eco).

volver:AH = BIOS código de exploración. AL = ASCII del carácter. (si está presente una combinación de teclas, se elimina de la memoria intermedia del teclado). 

 

INT 16h / AH = 01h - comprobación de pulsaciones de teclas en el búfer de teclado.

Page 38: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

volver:ZF = 1 si pulsación de tecla no está disponible. ZF = 0 si pulsación de teclas disponibles. AH = BIOS código de exploración. AL = carácter ASCII. (si está presente una combinación de teclas, no se elimina de la memoria intermedia del teclado). 

 

INT 19h - reinicio del sistema.

Normalmente, el BIOS intentará leer el sector 1, cabeza 0, pista 0 de la unidad A: a 0000h: 7C00h. El emulador sólo se detiene la ejecución, para que arranque desde la unidad de disquete seleccionar desde el menú:"unidad virtual" -> "arranque desde floppy ' 

INT 1Ah / AH = 00h - obtener la hora del sistema.

volver:CX: DX . = número de ciclos de reloj desde la medianoche AL = medianoche contrario, avanzaba cada vez pases de medianoche.

nota: hay aproximadamente 18,20648 ciclos de reloj por segundo, y 1800B0h por 24 horas. AL no está establecido por el emulador.  

INT 20h - Salida para sistema operativo.

 

Page 39: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

La lista corta de emular MS-DOS interrumpe - 21h INT

Sistema de ficheros DOS se emula en C: \ emu8086 \ vdrive \ x (x es una letra de unidad)

Si no se especifica letra de la unidad y el directorio actual no está definida, entonces C: \ emu8086 \ MyBuild \ ruta de acceso se utiliza por defecto. FLOPPY_0, 1,2,3 archivos son emuladas de forma independiente del sistema de archivos DOS. Para la unidad física emulador A: es el archivo c: \ emu8086 \ FLOPPY_0 (por interrupciones de la BIOS: 13h INT y el maletero). Durante las interrupciones del DOS ( INT 21h ) conducir un : se emula en este subdirectorio: C: \ emu8086 \ vdrive \ a \ Nota: El sistema de ficheros DOS limita los nombres de archivo y de directorio de 8 caracteres, la extensión se limita a 3 caracteres, ejemplo de un nombre de archivo válido: miarchivo.txt (archivo name = 6 caracteres, extensión - 3 caracteres).extensión se escribe después del punto, no se permiten otros puntos.

 

INT 21h / AH = 1 - leer el carácter de la entrada estándar, con eco, el resultado se almacena en AL . si no hay un carácter en el buffer del teclado, la función espera hasta que se pulsa una tecla. ejemplo: 

mov ah , 1 int 21h

 

Page 40: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 2 - Escribir carácter a la salida estándar. entrada DL = carácter a escribir, después de la ejecución AL = DL . ejemplo: 

mov ah , 2 mov dl , 'a' int 21h

 

INT 21h / AH = 5 . - salida de caracteres para impresora entrada DL = carácter a imprimir, después de la ejecución AL = DL . ejemplo: 

mov ah , 5 mov dl , 'a' int 21h

 

INT 21h / AH = 6 . - La entrada o salida de la consola directamente los parámetros de salida: DL = 0 .. 254 (código ASCII) para los parámetros de entrada: DL = 255 para las devoluciones de salida: AL = DL para las devoluciones de entrada: ZF conjunto si no carácter disponible y AL = 00h , ZF claro si el personaje está disponible. AL = carácter lectura; búfer se borra. ejemplo: 

Page 41: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

mov ah , 6 mov dl , 'a' int 21h ; carácter de salida.

mov ah , 6 mov dl , 255 int 21h ; obtiene caracter de buffer del

teclado (si lo hay) o un conjunto ZF = 1.

 

INT 21h / AH = 7 . - Entrada de carácter sin eco en AL . si no hay un carácter en el buffer del teclado, la función espera hasta que se pulsa una tecla ejemplo: 

mov ah , 7 int 21h

 

INT 21h / AH = 9 - Salida de una cadena en DS: DX . Cadena debe terminar con ' $ '. ejemplo: 

org 100h mov dx , compensar msj mov ah , 9 int 21h ret msj db "hola mundo $"

 

Page 42: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 0AH - entrada de una cadena en DS: DX , byte puño es el tamaño del buffer, segundo byte es el número de caracteres realmente leídos. esta función es no añadir '$' al final de la cadena. imprimir con INT 21h/ AH = 9 debe configurar carácter dólar al final de la misma y empezar a imprimir desde la dirección DS: DX + 2 . ejemplo: 

org 100h mov dx , compensar tampón mov ah , 0ah int 21h jmp impresióntampón db 10,?, 10 dup ( '' )print:xor bx , bx mov bl , buffer [ 1 ] mov tampón [ bx + 2 ] , '$' mov dx , compensar tampón + 2 mov ah , 9 int 21h ret

la función no permite introducir más caracteres que el tamaño de búfer especificado. véase también int21.asm en c: \ \ examples emu8086 

 

INT 21h / AH = 0Bh - obtener el estado de entrada, devuelve: AL = 00H si no hay caracteres disponibles, AL = 0FFh si el personaje se encuentra disponible. 

 

Page 43: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 0Ch . - buffer del teclado de color y lee la entrada estándar de entrada: AL = número de función de entrada para ejecutar después de buffer de lavado (puede ser 01h, 06h, 07h, 08h, o 0Ah - para otros valores del búfer se vacía pero no se intenta la entrada); otros registros según sea apropiado para la función de entrada seleccionada. 

 

INT 21h / AH = 0Eh . - unidad predeterminada seleccione la entrada: DL drive = nuevo valor predeterminado (0 = A:, 1 = B:, etc) Regreso: AL = número de letras de unidad potencialmente válidas Notas: el valor de retorno es la máxima unidad presentar. 

 

INT 21h / AH = 19h . - get unidad predeterminada actual retorno: AL = unidad (0 = A:, 1 = B:, etc) 

 

INT 21h / AH = 25h - vector set interrupción, entrada: AL = número de interrupciones. DS: DX - Mozo>

Page 44: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

nueva interrupción. 

 

INT 21h / AH = 2Ah - obtener fecha del sistema; vuelta: CX . = año (1980-2099) DH . = mes DL . = día AL = día de la semana (00h = domingo) 

 

INT 21h / AH = 2Ch - obtiene la hora del sistema; vuelta: CH = hora. CL = minuto. DH = segundo. DL = 1/100 segundos. 

 

INT 21h / AH = 35h - get vector de interrupción, entrada: AL = número de interrupción; vuelta: ES: BX - Mozo> interrupción de corriente. 

 

INT 21h / AH = 39h - crear el directorio. entrada: DS: DX -> ruta ASCIZ; cadena terminada en cero, por ejemplo:

org 100h mov dx , compensar ruta de archivo mov ah , 39h int 21h

Page 45: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

enriar

ruta_archivo DB "C: \ mydir" , 0 ; camino que se creará. extremoel código anterior crea c: \ emu8086 \ vdrive \ C \ mydir directorio si se ejecuta el emulador. 

Retorno: CF claro si tiene éxito AX destruido. CF conjunto en caso de error AX = código de error. Nota: todos los directorios de la ruta determinada, debe existir sino el último. 

 

INT 21h / AH = 3Ah . - eliminar el directorio de entrada: DS: DX . -> ASCIZ ruta de directorio a eliminar Retorno: CF está claro si tiene éxito, AX destruido CF se encuentra en error AX = código de error. Notas: El directorio debe ser vacío (no debe haber archivos dentro de ella). 

 

INT 21h / AH = 3BH . - configurar el directorio actual de entrada: DS: DX . -> ASCIZ ruta para convertirse en el directorio actual (máx. 64 bytes) Regreso: indicador de acarreo está claro si tiene éxito, AX . destruidos Carry Flag se encuentra en error AX = el código de error. Notas: incluso si el

Page 46: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

nombre nuevo directorio incluye una letra de unidad, la unidad predeterminada no se cambia, sólo el directorio actual en esa unidad. 

 

INT 21h / AH = 3Ch . - crear o truncar el archivo de entrada: CX = Atributos de archivos: 

mov cx , 0 , normal - sin atributos. mov cx , 1 , de sólo lectura. mov cx , 2 ; oculto. mov cx , 4 ; sistema mov cx , 7 , sistema oculto y de sólo lectura! mov cx , 16 ; archivoDS: DX . -> filename ASCIZ devuelve: CF claro si tiene éxito, AX = identificador de archivo. CF conjunto en caso de error AX = código de error. Nota: si existe el archivo especificado se elimina sin una

advertencia. ejemplo: 

Page 47: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

org 100h mov ah , 3 canales mov cx , 0 mov dx , compensar nombre de archivo mov ah , 3 canales int 21h jc errar mov manija, hacha jmp kNombre de archivo db "miarchivo.txt" , 0manejar dw ?err:; .... k:enriar

 

INT 21h / AH = 3Dh . - Abrir archivo existente Ingreso: AL = modos de acceso y participación:

mov al , 0 ; lectura mov al , 1 ; escritura mov al , 2 , de lectura / escritura

DS: DX . -> nombre de archivo ASCIZ Retorno: CF claro si tiene éxito, AX = identificador de archivo. CF conjunto en caso de error AX = código de error. Nota 1: El puntero del archivo se establece al inicio del archivo. Nota 2: El archivo debe existir. ejemplo: 

Page 48: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

org 100h mov al , 2 mov dx , compensar nombre de archivo mov ah , 3DH int 21h jc errar mov manija, hacha jmp kNombre de archivo db "miarchivo.txt" , 0manejar dw ?err:; .... k:enriar

 

INT 21h / AH = 3Eh . - cerrar el archivo de entrada: BX = identificador de archivo devuelto: CF claro si tiene éxito, AX destruido. CF establecido en el error, AX = código de error (06h). 

 

Page 49: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 3Fh . - leer desde el archivo de entrada: BX = identificador de archivo. CX = Número de bytes a leer. DS: DX . - búfer> para datos de Retorno: CF está claro si tiene éxito - AX = número de bytes realmente leer .; 0 si en EOF (fin de archivo) antes de la llamada CF se establece en error AX . = código de error Nota: los datos se leen a partir de la posición actual del archivo, y la posición del archivo se actualiza después de una lectura correcta de la devuelto AX puede ser menor de la solicitud en CX si una lectura parcial ocurrido. 

 

INT 21h / AH = 40h . - escribir en el archivo de entrada: BX . = identificador de archivo CX . = número de bytes a escribir DS: DX . -> datos para escribir retorno: CF claro si es correcto, AX = número de bytes realmente escritos. CF establecido en error; AX = código de error. Nota: si CX es cero, no se escriben datos y el archivo se trunca o se extienda a los datos de la posición actual se escribe a partir de la posición actual del fichero, y la posición del archivo se actualiza después de el éxito de escribir la causa más común de AX < CX de retorno es un disco lleno. 

Page 50: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

 

INT 21h / 41h AH = - Borrar archivo (desvincular). entrada: DS: DX . -> ASCIZ nombre de archivo (sin comodines, pero vea las notas) de retorno: CF claro si tiene éxito, AX destruido. AL es la unidad de archivo eliminado (indocumentados .) CF establecido en error AX = código de error. Nota: DOS no borra los datos del archivo, sino que simplemente se vuelve inaccesible debido a que la cadena FAT para el archivo se borra de borrar un archivo que está actualmente abierto puede conducir a la corrupción del sistema de archivos. 

 

Page 51: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 21h / AH = 42h . - BUSCA - fijar posición actual del fichero de entrada: AL = origen del movimiento: 0 . - Inicio de expediente 1 . - posición actual del fichero 2 . - final del archivo BX . = identificador de archivo CX: DX = desplazamiento . desde el origen de la posición del nuevo archivo de Retorno: CF claro si tiene éxito, DX: AX . = Posición nuevo archivo en bytes desde el comienzo del archivo CF . establecido en el error, AX = código de errorNotas: los orígenes 1 y 2 , el puntero puede ser coloca antes del inicio del archivo, sin error se devuelve en ese caso, pero los intentos posteriores para leer o escribir el archivo se producirán errores. Si la nueva posición está más allá del final actual del archivo, el archivo se ampliará por la siguiente escritura (véase AH = 40h ). ejemplo: 

org 100h mov ah , 3 canales mov cx , 0 mov dx , compensar nombre de archivo mov ah , 3 canales int 21h ; crear el archivo ... mov manija, hacha

Page 52: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

mov bx , asa mov dx , compensado datos mov cx , DATA_SIZE mov ah , 40h int 21h ; escribir en el archivo ...

mov al , 0 mov bx , asa mov cx , 0 mov dx , 7 mov ah , 42h int 21h ; buscar ...

mov bx , asa mov dx , compensar tampón mov cx , 4 mov ah , 3FH int 21h ; leer desde el archivo ...

mov bx , asa mov ah , 3EH int 21h ; cerca archivo ... ret

Nombre de archivo db "miarchivo.txt" , 0manejar dw ?datos db "hola archivos!" DATA_SIZE = $ - compensación de datostampón db 4 dup ( '' )

 

INT 21h / AH = 47h . - obtener el directorio actual de entrada: DL = número de unidad (00h = por defecto, 01h = A:, etc) DS: SI -> 64-byte buffer para nombre de ruta ASCIZ. Regreso: Llevar está claro si tiene éxito Carryse establece en el error, AX = código de error (0Fh) Notas: la ruta devuelta no incluye una unidad de disco y la barra invertida inicial. 

Page 53: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

 

INT 21h / AH = 4 canales - Control de retorno al sistema operativo (STOP). 

 

INT 21h / AH = 56h . - cambiar el nombre de archivo / archivo de movimiento de entrada: DS: DX -> ASCIZ nombre de archivo existente. ES: DI . -> ASCIZ nuevo nombre de archivo devuelto: CF . claro si tiene éxito CFestablecido en el error, AX = error . código Nota: permite moverse entre directorios en la unidad lógica sólo mismas, abrir archivos no deben cambiar el nombre! 

Page 54: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

  

interrumpe Mouse Driver - INT 33h

INT 33h / AX = 0000 - ininialization ratón. cualquier puntero del ratón anterior está oculto. retornos: 

si tiene éxito: AX = 0FFFFh y BX . = número de botones del ratón si hay un error: AX = 0ejemplo:

mov ax , 0 int 33hvéase también: mouse.asm en los ejemplos. 

 

INT 33h / AX = 0001 . - puntero del ratón espectáculo ejemplo: 

mov ax , 1 int 33h

 

Page 55: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 33h / AX = 0002 - ocultar el puntero del ratón visible. ejemplo: 

mov ax , 2 int 33h

 

INT 33h / AX = 0003 . - get posición del ratón y el estado de sus botones devuelve: 

si el botón izquierdo abajo: BX = 1 si el botón derecho abajo: BX = 2 si ambos botones están abajo: BX = 3 CX = x DX = y 

ejemplo:

mov ax , 3 int 33h

INT 10h / AH = 2 - Posición de conjunto cursor.

de entrada: DH = fila. DL = columna. BH = número de página (0 .. 7).

ejemplo:

mov dh , 10 mov dl , 20 mov bh , 0 mov ah , 2

Page 56: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

int 10h 

INT 10h / AH = 03h - obtener la posición del cursor y el tamaño.

de entrada: BH = número de página. retorno: DH = fila. DL = columna. CH = línea inicial del cursor. CL = línea inferior del cursor.

 

INT 10h / AH = 05h - página de selección de vídeo activa.

entrada: AL . = nuevo número de página (0 .. 7) de la página activa se muestra.   

INT 10h / AH = 06h - scroll ventana hacia arriba. INT 10h / AH = 07h - desplácese hacia abajo la ventana.

de entrada: AL . = número de líneas que se realiza desplazamiento (00h = toda la ventana transparente) BH = atribuyen . utiliza para escribir líneas en blanco en la parte inferior de la ventana de CH, CL . = fila, columna de la esquina superior izquierda de ventana DH, DL fila = , columna de la esquina inferior derecha de la ventana.

 

Page 57: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 10h / AH = 08h - leer el carácter y atributo en la posición del cursor.

de entrada: BH . = número de página retorno: AH = atributo . AL = carácter.

 

INT 10h / AH = 09h - escribir el carácter y atributo en la posición del cursor.

de entrada: AL . carácter = para mostrar BH = número de página. BL = atributo . CX = número de veces para escribir caracteres.

 

INT 10h / AH = 0AH - escritura único personaje en la posición del cursor.

de entrada: AL . carácter = para mostrar BH = número de página. CX = número de veces para escribir caracteres.

 

INT 10h / AH = 0Ch - cambie el color de un solo píxel.

Page 58: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

de entrada: AL = píxel de color CX . columna = DX = fila.

ejemplo:

mov al , 13h mov ah , 0 int 10h ; conjunto de gráficos del modo de

vídeo. mov al , 1100b mov cx , 10 mov dx , 20 mov ah , 0CH int 10h ; pixel set.

 

INT 10h / AH = 0Dh - obtener color de un solo píxel.

de entrada: CX . columna = DX . = fila de salida: AL = píxel de color

 

INT 10h / AH = 0Eh - Salida de teletipo.

de entrada: AL = carácter a escribir.funciona esta muestra un carácter en la pantalla, el avance del cursor y el desplazamiento de la pantalla según sea necesario. la impresión se hace siempre a la corriente activa página. ejemplo: 

mov al , 'a' mov ah , 0EH int 10h

Page 59: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

; Nota: en sistemas específicos esta; Función no puede utilizarse en modo gráfico.

 

INT 10h / AH = 13h - escritura cadena.

de entrada: AL = modo de escritura: bit 0 : cursor actualización después de la escritura; bit 1 : cadena contiene atributos . BH . = número de página BL = atributo . si la cadena contiene sólo caracteres (bit 1 de AL es cero) CX = número de caracteres en string (atributos no se cuentan). DL, DH = columna, fila donde se va a empezar a escribir. ES: BP apunta a string para ser impreso.         

ejemplo:

mov al , 1 mov bh , 0 mov bl , 0011_1011b mov cx , msg1end - compensar msg1 ; calcular el

tamaño del mensaje. mov dl , 10 mov dh , 7 empuje cs pop es mov pb , compensar msg1 mov ah , 13h int 10h jmp msg1endmsg1 db "hola, mundo!"msg1end:

 

Page 60: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

INT 10h / AX = 1003h - Intensidad de palanca / parpadeando.

de entrada: BL = modo de escritura: 0 : habilitar colores intensos. 1 :. permitir a parpadear (no soportado por el emulador y ventanas de símbolo del sistema) BH = 0 (para evitar problemas en algunos adaptadores).        

ejemplo:

mov ax , 1003h mov bx , 0 int 10h

 bit tabla de colores:atributo de carácter es de 8 bit con valor, bajo 4 bits puestos tanto en color, de alta 4 bits fijados color de fondo. nota: el emulador y ventanas de línea de comandos del sistema no son compatibles con fondo de parpadear, sin embargo, para que los colores tienen el mismo aspecto en dos y en el modo de pantalla completa es necesario desactivar el fondo de parpadear.

COLOR HEX BIN

0 0000 negro1 0001 azul2 0010 verde3 0011 cyan4 rojo 01005 0101 magenta6 0110 marrón7 0111 gris claro8 1000 gris oscuro9 1001 azul claroA 1010 luz verdeB 1011 cian claroC 1100 luz rojaD 1101 magenta claroE 1110 amarilloF 1111 blanco

nota:

Page 61: La Lista de Todas Las Interrupciones Que Actualmente Son Soportados Por El Emulador

, El uso de este código para la compatibilidad con DOS / cmd indicador del modo de pantalla completa: mov ax , 1003h mov bx , 0 , deshabilitar parpadear. int 10h

 

11h INT - obtener la lista de BIOS del equipo.

regreso: AX = equipo BIOS lista de palabras, de hecho esta llamada devuelve el contenido de la palabra en 0040h: 0010h. Actualmente esta función se puede utilizar para determinar el número de serie instalada de unidades de disquete. 

Los campos de bits para el BIOS detecta el hardware instalado:bit (s) Descripción 15-14 Número de dispositivos paralelos. 13 Reservado. 12 puertos juego instalado. Número 11-9 de dispositivos serie. 8 Reservados. 7-6 Número de unidades de disco flexible (menos 1): 00 solo disquete; 01 dos disquetes; 10 tres discos; 11 cuatro disquetes. 5-4 Modo vídeo inicial: 00 EGA, VGA, PGA, o de otro tipo con BIOS de video a bordo; 01 40x25 de color CGA. 10 80x25 CGA color (por defecto emulador). 11 80x25 texto mono. 3 Reservado. 2 PS / 2 para ratón está instalado. Un coprocesador matemático instalado. 0 Ajuste al arrancar desde un disquete.