viernes, 22 de noviembre de 2013

Acceso a discos en lenguaje ensamblador.

1. Qué es el acceso a dispositivos de almacenamiento
El sistema de almacenamiento en disco constituye el soporte externo de la información. Los datos se registran sobre la superficie del disco en una serie de circunferencias concéntricas llamadas pistas (track). Varias pistas, una por cada cara del disco (generalmente 2), componen un cluster. Cada pista está dividida en porciones iguales llamadas sectores. Un sector es la unidad básica de almacenamiento en disco. El tamaño de un sector se mide en bytes, y depende de las características del disco.

2.Qué es el acceso a dispositivos de almacenamiento
Se presentan 3 rutinas que permiten lectura y escritura absoluta de sectores, así como la determinación del espacio libre disponible en un disco.

_AbsoluteRead. Transfiere el contenido de un o más sectores del disco al buffer especificado, accesando directamente a los sectores lógicos. En caso de error, se enciende el bit de acarreo y AX contiene el código del error.

_AbsoluteWrite. Transfiere el contenido del buffer especificado a uno o más sectores de disco, accesando directamente a los sectores lógicos. En caso de error, se enciende el bit de acarreo y AX contiene el código del error.

_FreeDiskSpace. Devuelve en DX:AX el espacio libre en disco (en Kb). En caso de error, se enciende el bit de acarreo.

3. Busque y ejecute un programa de demuestre en su ejecución el acceso a disco para grabar y leer.

Invocación: 
push <unidad de disco>
push <número de sectores a escribir>
push <primer sector a escribir>
push SEG <buffer>
push OFFSET <buffer>
call _AbsoluteWrite
___________________________________________________________
              PUBLIC _AbsoluteWrite
_AbsoluteWrite   PROC NEAR
                 ARG Buffer:DWORD,Start:WORD,NumSect:WORD,Drive:BYTE= ArgLen
                 push bp ; salvar BP
                 mov bp,sp ; permitir acceso a los argumentos
                 push bx ; salvar registros
                 push cx
                 push dx
                 push ds
                 mov al,Drive ; escritura absoluta a disco
                 mov cx,NumSect
                 mov dx,Start
                 lds bx,Buffer
                 int 26h
                 pop bx
                 pop ds ; recuperar registros
                 pop dx
                 pop cx
                 pop bx
                 pop bp
                 ret ArgLen
_AbsoluteWrite   ENDP


No hay comentarios.:

Publicar un comentario