• Jueves 13 de Mayo de 2021, 08:49

Autor Tema:  Duda con Registros DS , SI , para usar funcion INT21h(MSDOS)  (Leído 1124 veces)

TSW

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Duda con Registros DS , SI , para usar funcion INT21h(MSDOS)
« en: Miércoles 9 de Marzo de 2011, 21:39 »
0
Hola a todos , que tal ?  soy nuevo en este foro, bueno , aqui va mi pregunta , espero no enrrollarles mucho ;) gracias:) Antes que nada se que este foro es de ASM, pero lo mas relacionado con la duda que tengo es aqui, lo que estoy haciendo es en Quick Basic 7.1 , un poco antiguo , pero es por investigacion personal. Espero la ayuda y disculpen las molestias.

Tengo un manual de programacion en DOS , y quiero usar una funcion de la INT 21, la 47 h exactamente, lo que hace esta es mostrar el directorio actual, para acceder a esta el manual lo dice lo siguiente "La funcion 47h permite a los programas determinar el directorio actual de la unidad especificada. para obtener el directorio actual mediante la funcion 47h el programa debe asignar el segmento y el desplazamiento de la direccion en un buffer de 64 bytes a la combinacion de registros DS:SI. Seguidamente debe asignar el numero correspondiente a la unidad en el registro DL. El dos emplea el 0 para la unidad actual, 1 para A, 2 para B y asi sucesivamente.

Contenido de entrada :
AH = 47H Servicio para obtener directorio DOS
DS = Direccion del segmento de la memoria intermedia que almacena el nombre del directorio
SI = Direccion del desplazamiento de la memoria intermedia que almacena el nombre del directorio
DL = Nº de unidad que contiene el directorio

Contenido de Salida:
AX = Codigo de error si el indicador de acarreo esta activado 0FH Unidad no valida.

Vale , ahora mi codigo :

Aqui va el codigo :

Código: Visual Basic
  1.  
Type RegtypeX
     ax as integer
     bx as integer
     cx as integer
     dx as integer
     bp as integer
     si as integer
     di as integer
     flags as integer
     ds as integer
     es as integer
End Type

Dim inregs as regtypeX
Dim outregs as regtypeX

inregs.ax = &h4700
inregs.dx = &h0

call interrupt ( &h21,inregs,outregs)

DS : SI ?¿?¿?¿?¿

La pregunta :  ¿Como hago para asignar el segmento y el desplazamiento de la direccion en un buffer de 64 bytes a la combinacion de registros DS:SI ? Esta parte no la entiendo.

Gracias a todos, es que quiero empezar por aqui para entenderlo bien y luego meterme en ASM. Gracias !