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


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  asm numeros binarios para pasarlos y guardar como txt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: asm numeros binarios para pasarlos y guardar como txt  (Leído 549 veces)
melonero

Desconectado Desconectado

Mensajes: 3


Ver Perfil
asm numeros binarios para pasarlos y guardar como txt
« en: 18 Marzo 2017, 14:43 »

saludos lo 1º a todos es mi 1º post
soy autodidacta  en ensamblador aprendi con un Z81 spectrum
es el lenguaje mas fácil para de aprender aun que dicen q es muy complicao
mi problema es el siguiente
me hice un programa para las quinielas de futbol y va de maravilla
y me hice un programa para la lotería primitiva, ahí tengo el problema
uso para los nº bits y me los guarda en formato primi.dat para leerlo me hice otro programa q lo lee perfectamente pero me lo saca en pantalla en formato txt cuando son pocas apuestas las copio de la pantalla y lo guardo en el block de notas, pero cuando son muchas como unas 3000 es muy tedioso copiar y pegar

lo q os quiero pedir es que rutina tengo q poner para q me lo guarde como txt
si pudierais ayudarme os lo agradecería
siento no saber mas de este lenguaje q me apasiona
e buscado por muchos sitios pero no encuentro nada por eso acudo a vosotros

saludos y gracias si podeis ayudarme y si no también os doy las gracias

este es el programa q me le los bits y los pasa a txt,por pantalla
yo lo quiero en un fichero txt y no por pantalla
no se q parte tengo q cambiar he probado muchas formas y no me da los resultados q quiero


Código
  1. pila    segment stack
  2.        db  128 dup('pila')
  3. pila    ends
  4. ;..................................
  5. ;segmento de codigos
  6. ;..................................
  7. codigo  segment
  8. lefich  proc  far
  9.        assume  cs:codigo,ds:datos,es:datos,ss:pila
  10. ;
  11.        push    ds
  12.        sub     ax,ax
  13.        push    ax
  14.        mov     ax,datos
  15.        mov     es,ax
  16.        mov     ds,ax
  17.        call    modo
  18.        call    abrir
  19.        call    escribe
  20.        call    cerrar
  21.  
  22.        ret
  23. lefich  endp
  24. ;..................................
  25. leer    proc
  26.        push    ax
  27.        push    bx
  28.        push    cx
  29.        push    dx
  30.        push    si
  31.        mov     bx,handle
  32.        mov     cx,nbytes3
  33.        lea     dx,num_bin
  34.        mov     ah,3fh
  35.        int     21h
  36.        jnc     bienleer
  37.        mov     error,ax
  38.        jmp     finleer
  39. bienleer:
  40.        mov     nbytes2,ax
  41.        mov     error,0
  42. finleer:
  43.        pop     si
  44.        pop     dx
  45.        pop     cx
  46.        pop     bx
  47.        pop     ax
  48.        ret
  49. leer    endp
  50. ;................................
  51. ;procedimiento para pasar los numeros de binario a ascii
  52. ;...............................
  53. escribe   proc
  54.        push    ax
  55.        push    bx
  56.        push    cx
  57.        push    dx
  58.        push    si
  59.        mov     cx,nbytes1
  60. cont1:
  61.        push    cx
  62.        mov     cx,18
  63. cont2:
  64.  
  65.        push    cx
  66.        mov     cx,6
  67. cont:
  68.        push    cx
  69.        call    leer
  70.        sub     ax,ax
  71.        mov     al,num_bin
  72.        mov     num_bin,0
  73.        mov     cx,2
  74.        mov     bx,00
  75.        mov     si,10
  76. relleno:
  77.        mov     byte ptr numer[bx], '0'
  78.        inc     bx
  79.        loop    relleno
  80. llena:
  81.        sub     dx,dx
  82.        div     si
  83.        add     dl,'0'
  84.        dec     bx
  85.        mov     byte ptr numer[bx],dl
  86.        inc     cx
  87.        or      ax,ax
  88.        jnz     llena
  89.        lea     si,numer
  90.        mov     cx,2
  91. repite:
  92.        push    cx
  93.        mov     ah,02h
  94.        mov     dl,[si]
  95.        int     21h
  96.        inc     si
  97.        pop     cx
  98.        loop    repite
  99.        lea     dx,space
  100.        call    es_mensa
  101.        pop     cx
  102.        loop    cont
  103.        lea     dx,salto
  104.        call    es_mensa
  105.        pop     cx
  106.        loop    cont2
  107.        call    tesper
  108.        pop     cx
  109.        loop    cont1
  110.        pop     si
  111.        pop     dx
  112.        pop     cx
  113.        pop     bx
  114.        pop     ax
  115.        ret
  116. escribe  endp
  117. ;.....................................
  118. es_mensa   proc
  119.        push    ax
  120.        mov     ah,09h
  121.        int     21h
  122.        pop     ax
  123.        ret
  124. es_mensa   endp
  125. ;.......................................
  126. modo    proc
  127.        push    ax
  128.        mov     ah,00h
  129.        mov     al,mon
  130.        int     10h
  131.        pop     ax
  132.        ret
  133. modo    endp
  134. ;....................................
  135. tesper  proc
  136.        push    ax
  137.        mov     ah,0
  138.        int     16h
  139.        pop     ax
  140.        ret
  141. tesper  endp
  142. ;....................................
  143. abrir   proc
  144.        push    ax
  145.        push    dx
  146.        lea     dx,fichero
  147.        mov     al,acceso
  148.        mov     ah,3dh
  149.        int     21h
  150.        jnc     bienabrir
  151.        mov     error,ax
  152.        jmp     finabrir
  153. bienabrir:
  154.        mov     handle,ax
  155.        mov     error,0
  156. finabrir:
  157.        pop     dx
  158.        pop     ax
  159.        ret
  160. abrir   endp
  161. ;.....................................
  162. cerrar  proc
  163.        push    ax
  164.        push    bx
  165.        lea     bx,handle
  166.        mov     ah,3Eh
  167.        int     21h            
  168.        pop     bx
  169.        pop     ax
  170.        ret
  171. cerrar  endp
  172. ;................................
  173. ;final del programa
  174. codigo  ends
  175.        end  lefich


no consigo que me lo guarde ,me sale un fichero de 6000 bytes pero vacio en blenco
sialguien pudiera decir me donde me equivoco, gracias
Código
  1. escribe   proc
  2.        push    ax
  3.        push    bx
  4.        push    cx
  5.        push    dx
  6.        push    si
  7.        lea     di,campo        
  8.        mov     cx,nbytes1
  9. cont1:      
  10.        push    cx
  11.        mov     dx,conta
  12.        call    leer
  13.        sub     ax,ax
  14.        mov     al,num_bin
  15.        mov     num_bin,0
  16.        mov     cx,2
  17.        mov     bx,00
  18.        mov     si,10
  19. relleno:
  20.        mov     byte ptr numer[bx], '0'
  21.        inc     bx
  22.        loop    relleno
  23. llena:
  24.        sub     dx,dx
  25.        div     si
  26.        add     dl,'0'
  27.        dec     bx
  28.        mov     byte ptr numer[bx],dl
  29.        inc     cx
  30.        or      ax,ax
  31.        jnz     llena
  32.        lea     si,numer
  33.        mov     cx,2
  34.        mov     [di],bl
  35.        inc     di
  36.        inc     dx
  37.        adc     conta,dx
  38.        pop     cx
  39.        loop    cont1
  40.  
  41.        pop     si
  42.        pop     dx
  43.        pop     cx
  44.        pop     bx
  45.        pop     ax
  46.        ret
  47. escribe  endp
  48. ;.....................................
  49.  
modificado pero no me funciona bien
me saca el fichero txt con todo 1 no se como arreglarlo
Código
  1. escribe   proc
  2.        push    ax
  3.        push    bx
  4.        push    cx
  5.        push    dx
  6.        push    si
  7.        mov     cx,nbytes1
  8. cont2:
  9.        lea     di,campo
  10.        mov     dx,conta
  11.        adc     di,dx
  12.        push    cx
  13.        mov     bx,handle
  14.        mov     cx,nbytes3
  15.        lea     dx,num_bin
  16.        mov     ah,3fh
  17.        int     21h
  18.        jnc     bienleer
  19.        mov     error,ax
  20.        jmp     finleer
  21. bienleer:
  22.        mov     nbytes2,ax
  23.        mov     error,0
  24. finleer:                
  25.        mov     ax,nbytes2                    
  26. relleno:
  27.        mov     byte ptr numer[bx], '0'
  28.        inc     bx
  29.        loop    relleno
  30.        mov     si,10
  31. llena:
  32.        sub     dx,dx
  33.        div     si
  34.        add     dl,'0'
  35.        dec     bx
  36.        mov     byte ptr numer[bx],dl        
  37.        or      ax,ax
  38.        jnz     llena        
  39.        mov     [di],dl      
  40.        inc     di
  41.        inc     dx
  42.        adc     conta,1        
  43.  
  44.        lea     dx,space
  45.        call    es_mensa
  46.        pop     cx
  47.        loop    cont2                      
  48.  
  49.        pop     si
  50.        pop     dx
  51.        pop     cx
  52.        pop     bx
  53.        pop     ax
  54.        ret
  55. escribe  endp
  56.  


· Los códigos deben ir en etiquetas GeSHi
· Los titulos deben ser desciprtivos al problema
· No debes hacer doble post, usa el botón modificar
>aquí las reglas del foro
-Engel Lex


« Última modificación: 22 Marzo 2017, 13:19 por melonero » En línea

cpu2


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #1 en: 21 Marzo 2017, 12:39 »

No soy muy entendido en las interrupciones del DOS, ni la API de Windows, pero creo que deberias de usar Createfile con eso deberia de bastar.

Un saludo.


En línea

melonero

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #2 en: 21 Marzo 2017, 14:06 »

No soy muy entendido en las interrupciones del DOS, ni la API de Windows, pero creo que deberias de usar Createfile con eso deberia de bastar.

Un saludo.
no se q es eso ya digo q soy autodidacta
yo programo con tasm,y tlink para 8086
con el edit
En línea

cpu2


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #3 en: 21 Marzo 2017, 15:08 »

Pues la API de Windows, funciones para "facilitar"

https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx

Tienes que incluir librerias, pero tambien la tienes en la interrupcion 21h si no me equivoco, https://msdn.microsoft.com/es-es/library/cc438736(v=vs.71).aspx, 3CH.  Te ira mejor esta ultima, pero mejor ves emigrando a la API.

Un saludo.

Edito:

Aqui tienes las funciones del int 21:

http://stanislavs.org/helppc/int_21.html
« Última modificación: 21 Marzo 2017, 16:11 por cpu2 » En línea

Meta


Desconectado Desconectado

Mensajes: 2.915



Ver Perfil WWW
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #4 en: 24 Marzo 2017, 12:51 »

Hola:

¿Por qué asm en Windwos a estas alturas de la vida?
Si es para temas de hadcer driver lo entiendo.

He estado buscando, no encuentro ejemplo, solo documentos sobre asm.
http://personals.ac.upc.edu/guerrero/fo/asm.pdf

https://es.answers.yahoo.com/question/index?qid=20080427172053AAJ4KWm



Saludos.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
melonero

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #5 en: 24 Marzo 2017, 15:15 »

Citar
Hola:

¿Por qué asm en Windwos a estas alturas de la vida?
Si es para temas de hadcer driver lo entiendo.
 
hola
te explico por que asm
es un programa de quinielas de loteria primitiva  
la razón es por hay que analizar 13.987.147 columnas, con cualquier programa
se tarda muchos minutos si no horas
el mio lo hace en segundos
el progama esta hecho funciona muy bien ,el problema es que las guarda en binario , y tengo que pasarlas a ascii ,y tengo el otro programa que las lee y me las saca por pantalla
como trabajo con el símbolo del sistema solo puedo copiar de 24 en 24 líneas
para pocas apuestas esta bien las copio y las guardo en un fichero.txt
el problema es cuando son 6000 apuestas
si tuviera la posibilidad de pasar el fichero.dat a fichero.txt
seriagenial para mi proyecto
y la ultima razón es q no se programar en otro lenguaje, y odio windows
saludos y gracias
En línea

Meta


Desconectado Desconectado

Mensajes: 2.915



Ver Perfil WWW
Re: asm numeros binarios para pasarlos y guardar como txt
« Respuesta #6 en: 24 Marzo 2017, 18:10 »

odio windows

¿Qué es lo que odias de Windows?

Puede que aquí te de ideas.
https://underc0de.org/foro/asm/crear-y-escribir-un-archivo-en-asm/

Parece muy interesante tu programa. Porque la genreacion de ahora que soy yo lo hago con PIC en asm, el 8086 ya no lo toco.

Saludos.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Suma y resta de números binarios en C « 1 2 »
Programación C/C++
NelxoN 13 42,105 Último mensaje 3 Noviembre 2008, 20:55
por ҒrεακΠιи∂
[Solucionado] Error al guardar datos binarios
Programación Visual Basic
Sancho.Mazorka 3 1,331 Último mensaje 26 Octubre 2010, 04:12
por Sancho.Mazorka
Duda con suma de números binarios!
ASM
The Swash 0 706 Último mensaje 22 Octubre 2013, 03:27
por The Swash
Numeros Binarios En Programación VB 2008
.NET
Brasan789 1 646 Último mensaje 5 Mayo 2014, 16:49
por engel lex
guardar y leer objetos en archivos binarios
Java
victor garay 1 864 Último mensaje 17 Abril 2015, 06:51
por Usuario Invitado
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines