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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos?  (Leído 1,445 veces)
TheFerydra

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[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?


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.114


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos?
« Respuesta #1 en: 21 Mayo 2018, 01:21 am »

Hola!

Según entiendo tienes un DWORD que apunta a una szString con valores separados por comas, no?

Si es así, parsear los valores sería tan sencillo como usar las funciones InString y szMid (entre otras) de la librería de MASM32.

A menos que haya entendido mal...

Quizás sería buena idea que pongas un poco de código.

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

TheFerydra

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [MASM] ¿Cómo hacer que un DWORD con un texto se separe en varios objetos?
« Respuesta #2 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.
« Última modificación: 21 Mayo 2018, 13:40 pm por MCKSys Argentina » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cojer texto de un control edit API (MASM) « 1 2 »
ASM
Riki_89D 10 6,345 Último mensaje 1 Enero 2010, 19:36 pm
por Saint Iker
Como trabajar con varios objetos a la vez?
Java
greenselves 1 1,717 Último mensaje 14 Febrero 2011, 20:46 pm
por Gallu
Heredar varios objetos + PHP
PHP
Shell Root 6 3,382 Último mensaje 9 Noviembre 2011, 00:52 am
por WHK
ArrayList varios tipos de Objetos
Java
Winterz 0 1,149 Último mensaje 28 Mayo 2014, 17:36 pm
por Winterz
Poner varios números y que los separe
.NET (C#, VB.NET, ASP)
SlayerBur 6 2,729 Último mensaje 28 Mayo 2017, 20:45 pm
por SlayerBur
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines