Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - TheFerydra

#1
Codigo como tal, solo tengo esta maraña que he usado para experimentar:

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.
#2
Buenos días.

Estoy usando MASM 32 con el lenguaje Irvine para hacer un juego de ahorcado para un trabajo. Ya he logrado que meta el contenido de un archivo .txt en un DWORD, el cual tiene una lista de palabras separadas solo por comas. El problema es que no he encontrado forma de separarlos, ya que no encuentro como usar los delimitadores, o como hacer que lea un caracter a la vez para fusionarlo a una palabra por separado (Cuando trato de usar ptr, la maquina interpreta a TODO el DWORD como +0, en lugar de separarlo por caracteres).

Ya he preguntado en foros en ingles, pero no veo esperanza a que alguien responda pronto. Alguna idea?