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

Views 29 Downloads 59 File size 226KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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.

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 57). 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. 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 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 = 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. 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 mov ah , 13h int 10h jmp msg1end msg1 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 negro 1 0001 azul 2 0010 verde 3 0011 cyan 4 rojo 0100 5 0101 magenta 6 0110 marrón 7 0111 gris claro 8 1000 gris oscuro 9 1001 azul claro A 1010 luz verde B 1011 cian claro C 1100 luz roja D 1101 magenta claro E 1110 amarillo F 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. 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 transferidos.

Nota: cada sector tiene 512 bytes.

INT 15h / AH = 86h - Función BIOS espera. de entrada: CX: DX = intervalo en microsegundos volver: 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: 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.

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

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:

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 $"

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ón tampó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.

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> 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 enriar ruta_archivo DB "C: \ mydir" , 0 extremo

; camino que se creará.

el 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 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 mov mov mov mov mov

cx cx cx cx cx cx

, , , , , ,

0 1 2 4 7 16

, normal - sin atributos. , de sólo lectura. ; oculto. ; sistema , sistema oculto y de sólo lectura! ; archivo

DS: 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:

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 k Nombre de archivo db "miarchivo.txt" , 0 manejar dw ? err: ; .... k: enriar

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

mov al , 0 mov al , 1 mov al , 2

; lectura ; escritura , 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:

org 100h mov al , 2 mov dx , compensar nombre de archivo mov ah , 3DH int 21h jc errar mov manija, hacha jmp k Nombre de archivo db "miarchivo.txt" , 0 manejar 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).

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.

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.

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 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" , 0 manejar dw ? datos db "hola archivos!" DATA_SIZE = $ - compensación de datos tampó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.

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!

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 = 0 ejemplo: mov ax , 0 int 33h

véase también: mouse.asm en los ejemplos.

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

mov ax , 1 int 33h

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.

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 57). 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. 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 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 = 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. 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 mov ah , 13h int 10h jmp msg1end msg1 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 negro 1 0001 azul 2 0010 verde 3 0011 cyan 4 rojo 0100 5 0101 magenta 6 0110 marrón 7 0111 gris claro 8 1000 gris oscuro 9 1001 azul claro A 1010 luz verde B 1011 cian claro C 1100 luz roja D 1101 magenta claro E 1110 amarillo F 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. 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 transferidos.

Nota: cada sector tiene 512 bytes.

INT 15h / AH = 86h - Función BIOS espera. de entrada: CX: DX = intervalo en microsegundos volver: 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: 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.

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

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:

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 $"

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ón tampó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.

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> 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 enriar ruta_archivo DB "C: \ mydir" , 0 extremo

; camino que se creará.

el 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 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 mov mov mov mov

cx cx cx cx cx

, , , , ,

0 1 2 4 7

, , ; ; ,

normal - sin atributos. de sólo lectura. oculto. sistema sistema oculto y de sólo lectura!

mov cx , 16

; archivo

DS: 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:

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 k Nombre de archivo db "miarchivo.txt" , 0 manejar dw ? err: ; .... k: enriar

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

mov al , 0 mov al , 1 mov al , 2

; lectura ; escritura , 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:

org 100h mov al , 2 mov dx , compensar nombre de archivo mov ah , 3DH int 21h jc errar mov manija, hacha jmp k Nombre de archivo db "miarchivo.txt" , 0 manejar 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).

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.

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.

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 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" , 0 manejar dw ?

datos db "hola archivos!" DATA_SIZE = $ - compensación de datos tampó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.

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!

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 = 0 ejemplo: mov ax , 0 int 33h

véase también: mouse.asm en los ejemplos.

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

mov ax , 1 int 33h

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 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.

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. 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 ; 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 msg1end msg1 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 negro 1 0001 azul 2 0010 verde 3 0011 cyan 4 rojo 0100 5 0101 magenta 6 0110 marrón 7 0111 gris claro 8 1000 gris oscuro 9 1001 azul claro A 1010 luz verde B 1011 cian claro C 1100 luz roja D 1101 magenta claro E 1110 amarillo F 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. 0 Ajuste al arrancar desde un disquete.