elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / ASM / Re: [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos? en: 21 Mayo 2018, 02:50 am
Codigo como tal, solo tengo esta maraña que he usado para experimentar:

TITLE Lectura de un archivo (LeerArchivo.asm)
Código
  1. ; Abre, lee y muestra un archivo de texto, usando
  2. ; los procedimientos de Irvine32.lib.
  3. include c:\Irvine\Irvine32.inc
  4. include c:\Irvine\Macros.inc
  5. includelib c:\Irvine\Irvine32.lib
  6. includelib c:\Irvine\kernel32.lib
  7. includelib c:\Irvine\user32.lib
  8.  
  9.  
  10. TAM_BUFER = 5000
  11. .data
  12. bufer BYTE TAM_BUFER DUP(?)
  13. nombreArchivo BYTE "lista.txt"
  14. manejadorArchivo DWORD ?
  15. palabra DWORD ?
  16. chara DWORD ?
  17.  
  18.  
  19. .code
  20. main PROC
  21. ; Abre el archivo en modo de entrada.
  22. mov edx,OFFSET nombreArchivo
  23. call OpenInputFile
  24. mov manejadorArchivo,eax
  25. ; Comprueba errores.
  26. cmp eax,INVALID_HANDLE_VALUE ; ¿error al abrir el archivo?
  27. jne archivo_ok ; no: salta
  28. mWrite <"Lista.txt no econtrado.",0dh,0ah>
  29. jmp terminar ; y termina
  30. archivo_ok:
  31. ; Lee el archivo y lo coloca en un búfer.
  32. mov edx,OFFSET bufer
  33. mov ecx,TAM_BUFER
  34. call ReadFromFile
  35. jnc comprobar_tamanio_bufer ; ¿error al leer?
  36. mWrite "Error al leer el archivo" ; sí: muestra mensaje de error
  37. call WriteWindowsMsg
  38. jmp cerrar_archivo
  39. comprobar_tamanio_bufer:
  40. cmp eax,TAM_BUFER ; ¿el búfer es lo bastante grande?
  41. jb tam_buf_ok ; sí
  42. mWrite <"Error: Bufer demasiado chico para el archivo",0dh,0ah>
  43. jmp terminar ; y termina
  44. tam_buf_ok:
  45. mov bufer[eax],0 ; inserta terminador nulo
  46. mWrite "Tamanio del archivo: "
  47. call WriteDec ; muestra el tamaño del archivo
  48. call Crlf
  49. ; Muestra el búfer.
  50. ;mWrite <"Bufer:",0dh,0ah,0dh,0ah>
  51. ;mov edx,OFFSET bufer ; muestra el búfer
  52. ;call WriteString
  53. ;call Crlf
  54.  
  55. ;Convertir en bytes
  56. ;mov  eax,manejadorArchivo
  57. ;mov  edx,OFFSET bufer
  58. ;mov  ecx,TAM_BUFER
  59. ;call WriteToFile
  60. ;mov  bytesWritten,eax
  61.  
  62. ;mov palabra,OFFSET bufer
  63. ;mov edx, DWORD PTR [palabra+0]
  64. ;call WriteString
  65.  
  66. ;CrearPieza
  67. mov ecx, 5
  68. mov ax, 0
  69. mov bx, 0
  70.  
  71.  
  72. PALABR:
  73.    mov palabra, 0
  74.    ARMAR:
  75.        mov chara, BYTE PTR OFFSET [bufer+0]
  76.        cmp chara,','
  77.        je SIGUIENTE
  78.  
  79.        add palabra, chara
  80.        inc ax
  81.        jmp ARMAR
  82.  
  83.  
  84.  
  85.        SIGUIENTE:
  86.            loop PALABR
  87.  
  88. mov edx, palabra
  89. call WriteString
  90.  
  91. ;Agarrar Palabra
  92. ;push edx
  93. ;mov edx, OFFSET bytesWritten
  94. ;call WriteString
  95. ;pop edx
  96.  
  97. cerrar_archivo:
  98. mov eax,manejadorArchivo
  99. call CloseFile
  100.  
  101.  
  102. terminar:
  103. exit
  104. main ENDP
  105. END main

MOD: Etiquetas GeSHi.
2  Programación / ASM / [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos? en: 20 Mayo 2018, 22:58 pm
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?
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines