• Lunes 25 de Septiembre de 2023, 05:16

Autor Tema:  Como accedo enla INT 21& Servicios DOS a la funcion 47h ?¿?¿  (Leído 1362 veces)

TSW

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Como accedo enla INT 21& Servicios DOS a la funcion 47h ?¿?¿
« en: Miércoles 9 de Marzo de 2011, 21:41 »
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 !