Codigo como tal, solo tengo esta maraña que he usado para experimentar:
TITLE Lectura de un archivo (LeerArchivo.asm)
MOD: Etiquetas GeSHi.
TITLE Lectura de un archivo (LeerArchivo.asm)
Código (asm) [Seleccionar]
; Abre, lee y muestra un archivo de texto, usando
; los procedimientos de Irvine32.lib.
include c:\Irvine\Irvine32.inc
include c:\Irvine\Macros.inc
includelib c:\Irvine\Irvine32.lib
includelib c:\Irvine\kernel32.lib
includelib c:\Irvine\user32.lib
TAM_BUFER = 5000
.data
bufer BYTE TAM_BUFER DUP(?)
nombreArchivo BYTE "lista.txt"
manejadorArchivo DWORD ?
palabra DWORD ?
chara DWORD ?
.code
main PROC
; Abre el archivo en modo de entrada.
mov edx,OFFSET nombreArchivo
call OpenInputFile
mov manejadorArchivo,eax
; Comprueba errores.
cmp eax,INVALID_HANDLE_VALUE ; ¿error al abrir el archivo?
jne archivo_ok ; no: salta
mWrite <"Lista.txt no econtrado.",0dh,0ah>
jmp terminar ; y termina
archivo_ok:
; Lee el archivo y lo coloca en un búfer.
mov edx,OFFSET bufer
mov ecx,TAM_BUFER
call ReadFromFile
jnc comprobar_tamanio_bufer ; ¿error al leer?
mWrite "Error al leer el archivo" ; sí: muestra mensaje de error
call WriteWindowsMsg
jmp cerrar_archivo
comprobar_tamanio_bufer:
cmp eax,TAM_BUFER ; ¿el búfer es lo bastante grande?
jb tam_buf_ok ; sí
mWrite <"Error: Bufer demasiado chico para el archivo",0dh,0ah>
jmp terminar ; y termina
tam_buf_ok:
mov bufer[eax],0 ; inserta terminador nulo
mWrite "Tamanio del archivo: "
call WriteDec ; muestra el tamaño del archivo
call Crlf
; Muestra el búfer.
;mWrite <"Bufer:",0dh,0ah,0dh,0ah>
;mov edx,OFFSET bufer ; muestra el búfer
;call WriteString
;call Crlf
;Convertir en bytes
;mov eax,manejadorArchivo
;mov edx,OFFSET bufer
;mov ecx,TAM_BUFER
;call WriteToFile
;mov bytesWritten,eax
;mov palabra,OFFSET bufer
;mov edx, DWORD PTR [palabra+0]
;call WriteString
;CrearPieza
mov ecx, 5
mov ax, 0
mov bx, 0
PALABR:
mov palabra, 0
ARMAR:
mov chara, BYTE PTR OFFSET [bufer+0]
cmp chara,','
je SIGUIENTE
add palabra, chara
inc ax
jmp ARMAR
SIGUIENTE:
loop PALABR
mov edx, palabra
call WriteString
;Agarrar Palabra
;push edx
;mov edx, OFFSET bytesWritten
;call WriteString
;pop edx
cerrar_archivo:
mov eax,manejadorArchivo
call CloseFile
terminar:
exit
main ENDP
END main
MOD: Etiquetas GeSHi.