Cómo se abre un fichero con la interrupción 21h?

#1
Sobre la función para abrir fichero no entiendo qué es lo que hay que poner en DS y DX ni cómo debo ponerlos... mire lo que estaba leyendo:

_________________________________________________________________________________
INT 21H Función 3DH
Abrir Fichero

LLAMADA:
AH = 3DH
AL = Modo de acceso. Bits 0-2: Permiso de lectura/escritura.
000b Acceso de sólo lectura.
001b Acceso de sólo escritura.
010b Acceso de lectura/escritura.
Bit 3: 0b (Reservado).
Bits 4-6: Modo de compartición de Fichero
000b Sólo el programa actual puede acceder al archivo
001b Sólo el programa actual puede acceder al archivo.
010b Otro programa puede leer el archivo, pero no escribir en él.
011b Otro programa puede escribir en el archivo, pero no leerlo.
100b Otro programa puede leer y escribir en el archivo.
Bit 7: Bit de 'herencia' ó Handle-flag.
0b Si el handle se hereda por un programa hijo.
1b Si el handle no se hereda.
DS: DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero.

DEVUELVE:
Si se ejecutó correctamente Flag de acarreo (Cf) = 0
AX = Handle o manejador de fichero
Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1
AX = Código de error.

EFECTO: Mediante esta función se abre un fichero ya existente, y se devuelve un Handle para acceder al fichero en lo sucesivo.
_______________________________________________________________________________


El código que creí que era el correcto, inicialmente, es el siguiente:


mov ax,0b800h ;MUEVO A 'AX' EL VALOR DE SEGMENTO DE MEMORIA DE VIDEO
add si,si ;MULTIPLICO 'SI' POR DOS, PARA SABER EL VALOR OCUPADO EN MEMORIA DE VIDEO
sub di,si ;RESTO A EL DESPLAZAMIENTO TOTAL EN MEMORIA DE VIDEO, LO QUE SE OCUPO EN ESCRIBIR LA DIRECCION DEL FICHERO
mov ds,ax ;MUEVO A 'DS' EL VALOR SEGMENTO DE MEMORIA DE VIDEO, COMO REQUISITO PARA ABRIR EL FICHERO
mov dx,si ;MUEVO A 'DX' EL DESPLAZAMIENTO OCUPADA POR LA CADENA ASCII
mov ah,3dh ;FUNCION PARA ABRIR UN FICHERO
mov al,11000000b ;HANDLE NO HEREDADO, OTRO PROGRAMA PUEDE LEER Y ESCRIBIR ARCHIVO, BIT 3 ES RESERVADO, ACCESO DE SOLO LECTURA
int 21h


Qué es lo que me está faltando? No logro encontrar ningún ejemplo en internet que muestre cómo llamar la función realmente..
 
#2
Qué es lo que me está faltando? No logro encontrar ningún ejemplo en internet que muestre cómo llamar la función realmente..
La funcion la estas llamando bien, peeeeeero:
- En el buffer de video los caracteres se guardan en las direcciones pares y en la siguiente (impar) su atributo (color,subrayado,blink...) --> en lugar del string le estas pasando cualquier cosa.
- El string debe ser ASCIIZ, es decir debe estar terminado con un 0
 

Temas similares

Arriba