Ensamblador - Problema con búsqueda de archivos, Ensamblador, función 4EH INT 21

 
Vista:

Problema con búsqueda de archivos, Ensamblador, función 4EH INT 21

Publicado por Eddie (2 intervenciones) el 13/12/2015 18:14:01
Buenas tardes, acudo a uds debido a una cuestión que ya me ha dado problemas por mas de una semana, actualmente me encuentro concluyen mi curso de Arquitectura de computadores en la cual pudimos tener la maravillosa oportunidad de manejar la programación a bajo nivel, actualmente me encuentro trabajando sobre un proyecto que implica manejo de archivos pero me ha surgido un problema con la función 4E de la int 21 y es el siguiente (anexo código simplificado):

Según el libro de Peter Abel la función 4e de la interrupción 21 es capaz de interpretar los comodines * y ? de los cuales sabemos que el comodín ? sirve para reemplazar un único carácter y el * para reemplazar múltiples letras o caracteres, pero a la hora de implementar el código planteado en el libro al llamar al DOS me está devolviendo el código de error 03 en el AX y me deja el bufer en blanco.

Lo curioso es que si cambio la dirección a 'E:\ASD\????.*' y la interrupción funciona perfectamente aunque obviamente solo me soporta archivos con nombres de no mas de 4 caracteres cosa que me representa un gran problema.

Resumiendo: Me gustaría saber porque la función 4e de la int 21 no me reconoce los comodines de búsqueda si los estoy implementando tal cual los plantea el libro ('*.*' -----> cualquier archivo de cualquier extensión).

De antemano eh de aclarar que estoy trabajando a 16 bits y sobre entiendo las limitaciones de esta interrupción (máximo soporta archivos con 8 caracteres en su nombre y tres en su extensión )

Si he cometido algún error o falta alguna instrucción sabría agradecerles que me indicaran cual, de ante mano muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.MODEL SMALL
.386
.STACK 64
.DATA
 
	INFO DB 43 DUP(?),'$'
	DIR DB 'E:\ASD\*.*',00H
 
.CODE
 
	MAIN PROC NEAR
 
	   MOV AX,@DATA
	   MOV DS,AX
	   MOV ES,AX
 
	   MOV AH,06H
 	   MOV AL,00H
 	   MOV BH,1BH
 	   MOV CX,0000H
 	   MOV DX,184FH
 	   INT 10H				;LIMPIAR PANTALLA
 
	   MOV AH,1AH
	   LEA DX,INFO
	   INT 21H				;CARGO EL BUFER
	   MOV AH,4EH
	   MOV CX,00H
	   LEA DX,DIR
	   INT 21H				;LLAMO AL DOS PARA BUSCAR
 
	   LEA DX,INFO
           MOV AH,09H
	   INT 21H				;IMPRIMO EN PANTALLA EL BUFER
 
	   MOV AX,4C00H
	   INT 21H
 
	MAIN ENDP
END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con búsqueda de archivos, Ensamblador, función 4EH INT 21

Publicado por Requeteprogramador (81 intervenciones) el 13/12/2015 21:28:48
No he ejecutado el código, pero, ¿cuál es el valor de AL cuando llamas la int 21h?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con búsqueda de archivos, Ensamblador, función 4EH INT 21

Publicado por Eddie (2 intervenciones) el 13/12/2015 21:54:33
El valor es 03, pero ya estuve revisando y haciendo algunas pruebas y finalmente di con le error, sucede que los directorios sobre los que yo estaba trabajando estaban alojados en una unidad virtual creada por mi gestor de maquinas virtuales para compartir archivos entre el sistema optativo reciente y el virtual, al trabajar sobre dichos directorios le comportamiento del DOS no era el adecuado, solo bastó con mover los archivos a una carpeta dentro del disco duro propio del Sistema operativo virtual.

Muchas gracias por el deseo de ayudar espero no haber sido una molestia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar