|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - rbaez
Páginas: [1]
1
« en: Sábado 9 de Octubre de 2010, 18:01 »
Saludos,
Gracias de ante mano por todo el soporte, tengo que decir que aun persisto con el problema, he intentado depurarlo con debug.exe, a mano y todo eso, pero no encuentro la forma, realmente no se como hacerlo en NASM.
la cuestion es como accesar a esos datos (fdate, ftime, fsize...) de la manera correcta para poder mostrarlo por pantalla
alguna idea?
2
« en: Viernes 8 de Octubre de 2010, 20:13 »
Saludos Eternal Idol,
Aprecio mucho su respuesta y de hecho la doy como buena y valida, pero ahora me enfrento al problema de que cuando intento obtener el fdate ,ftime, ó fsize...e imprimo su contenido me muestra "basura de memoria", lo ironico es que puedo accesar al fname sin problemas.
estoy deacuerdo con la estructura de la DTA:
Estructura de la DTA Desplazamiento Longitud Contenido 0 21 Reservado 21 1 Atributos del fichero 22 2 Hora de creación 24 2 Fecha de creación 26 4 Tamaño 30 14 NOMBRE.EXT (ASCIIZ)
ahora bien me pregunto si seria un problema de compatibilidad, si esto funciona solo en algunas versiones de DOS, bueno yo estoy emulando con DOSBOX 0.74, tambien lo ejecuto en win 7 (command prompt), pero obtengo el mismo resultado, te adjunto una foto para que veas cual es el resultado final de la ejecucion...
en el codigo que estoy trabajando es el siguiente:
; p6.asm org 100h
segment .data squery db "*.*", 0x0 ; search query, must end with zero DTA resb 0x15 ; ignore useless DOS data fattr db 0x0 ; file attribute ftime dw 0x0; file creation/modification time fdate dw 0x0 ; file creation/modification date fsize dw 0x0 ; file size fsmth dw 0x0 fname resb 14 ; file name terminated with zero db 0xD, 0xA ; New line db "$" ; 0xD - tells DOS to go to new line.
segment .text
start: int 3h mov ax, cs mov ds, ax
mov ah, 0x1A ; Set DTA table adress mov dx, DTA int 21h
call clean_name
mov ah, 0x4E xor cx, cx ; no attributes mov dx, squery int 21h jc theend ; no files matching query found
mov cx, [fsize] mov ah, 09h mov dx, cx int 21h
mov ah, 09h mov dx, fname int 21h
find_next: call clean_name
mov ah, 0x4F mov dx, squery int 21h ; find next matching file jc theend ; no more files found
mov ah, 9 lea dx, [DTA+30] ; print fname int 21h
mov ah, 09h lea dx, [DTA+26] ; expected to get fsize int 21h
jmp find_next
theend:
mov ah, 0x4C int 21h ret
clean_name: mov cx, 13 mov di, fname xor ax, ax repe stosb ; fill name with zeros incase memory has some ugly stuff or smth left from last search ret
3
« en: Viernes 8 de Octubre de 2010, 00:00 »
Saludos,
he encontrado un codigo en NASM que funciona similar al comando "DIR", muestra una lista con el nombre de los archivos con la extension especificada en el directorio, pero quisiera saber como podria obtener el date, time, y size del archivo para mostrarlo tambien
el codigo es el siguiente:
org 100h
start:
mov ah, 0x1A ; Set DTA table adress mov dx, DTA int 21h
;call clean_name
mov ah, 0x4E xor cx, cx ; no attributes mov dx, squery int 21h jc theend ; no files matching query found
mov ah, 9 mov dx, fname int 21h
find_next:
mov ah, 0x4F mov dx, squery int 21h ; find next matching file jc theend ; no more files found
mov ah, 9 mov dx, fname int 21h
jmp find_next
theend:
mov ah, 0x4C int 21h
clean_name: mov cx, 13 mov di, fname xor ax, ax repe stosb ; fill name with zeros incase memory has some ugly stuff or smth left from last search ret
squery db "*.*", 0x0 ; search query, must end with zero
DTA resb 0x15 ; ignore useless DOS data fattr db 0x0 ; file attribute ftime dw 0x0 ; file creation/modification time fdate dw 0x0 ; file creation/modification date fsize dw 0x0 ; file size fsmth dw 0x0 fname resb 14 ; file name terminated with zero db 0xD, 0xA ; New line db "$" ; 0xD - tells DOS to go to new line.
Páginas: [1]
|
|
|