INT 21h – Salida al Sistema Operativo

INT 21h / AH=1 – Lee un carácter de la entrada estándar, con eco, el resultado se guarda en AL. Si no hay ningún carácter en el buffer de teclado, la función espera hasta que se presione una tecla.

Ejemplo:

mov ah, 1
int 21h

INT 21h / AH=2 – Escribir un carácter a la salida estandar. DL = carácter a escribir, luego de la ejecución AL = DL. Ejemplo:

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

INT 21h / AH= 3Dh – Abre un archivo existente AL = determina el modo de acceso mov al, 0 ; lectura mov al, 1 ; escritura mov al, 2 ; lectura/escritura DS:DX → Nombre de archivo en ASCIZ Devuelve: Carry Flag: 0 si tuvo exito, AX = file handle. Carry Flag: 1, si hubo error AX = código de error

nota 1: El puntero es seteado al comienzo del archivo nota 2: el archivo debe existir file handle: Es un número de 16 bits que asigna temporalmente el sistema operativo a un archivo cuando es abierto. El sistema operativo usa el file handle internamente cuando accede al archivo.

Ejemplo:

org 100h
mov al, 2
mov dx, offset filename
mov ah, 3dh
int 21h
jc err
mov handle, ax
jmp k
filename db "myfile.txt", 0
handle dw ?
err:
; ....
k:
ret

INT 21h / AH= 3Eh – Cerrar archivo. BX = file handle

Devuelve: CF 0 si tuvo éxito, AX se destruye CF 1 si error, AX = código error (06h).

INT 21h / AH= 3Fh – Leer archivo.

BX = file handle. CX = cantidad de bytes a leer DS:DX → buffer para los datos leidos

Devuelve: CF 0, si éxito - AX = número de bytes realmente leidos; 0 si EOF (end of file). CF 1 si hubo error AX = código de error.

Nota: Los datos se leen comenzando en la posición actual del archivo, y la posición del archivo se actualiza después de una lectura exitosa, AX puede ser más pequeño que la solicitud en CX, si se produjo una lectura parcial.

INT 21h / AH= 40h - write to file.

BX = file handle. CX = número de bytes a escribir. DS:DX → datos a escribir.

Devuelve: CF 0 si éxito ; AX = números de bytes realmente escritos. CF 1 si error; AX = código de error.

Nota: Si CX es cero, no se escriben datos, y el archivo se trunca o se extiende a la posición actual, los datos se inician en la posición actual del archivo, y la posición del archivo se actualiza después de una escritura exitosa.