Programación General > ASM (Ensamblador)

 Ayuda Con Lectura De Archivos

(1/3) > >>

WOLFLIVING:
hola compañeros espero alguien me pueda ayudar, bueno pue estoy haciendo un tutor matematico sobre areas lleva teoria y ejercicios la cosa es que me he topado con un problema la teoria ya esta en distintos archivos dependiendo de los archivos y la leo asi:



   CALL MODO    ;;;SUBRUTINA PARA INICIALIZAR MODO TEXTO
   LEA DX, TRI    ;;;;CARGANDO VARIBLE DONDE SE ENCUENTRA ARCHIVO DEFINIDA ABAJO
   CALL PINTAR  ;;;;LLAMADO A SUBRRUTINA PARA IMPRESION DE ARCHIVO


;;;;;;;;SUBRRUTINA PARA IMPRIMIR EN PANTALLA;;;;;;;;;;
pintar:                
                     MOV   AL,0              ; modo de lectura
                     MOV   AH,3Dh            ; función para abrir fichero
                            INT   21h               ; llamar al DOS
                          MOV   handle,AX         ; código de acceso al fichero
trocito:      
                   MOV   BX,handle         ; código de acceso al fichero
                        MOV   CX,2048           ; número de bytes a leer
                      LEA   DX,buffer         ; dirección del buffer
                      MOV   AH,3Fh            ; función para leer del fichero
                      INT   21h               ; llamar al DOS
                      MOV   CX,AX             ; bytes leídos realmente
                      JCXZ  cerrar            ; no hay nada que imprimir
                      PUSH  AX                ; preservarlos
                      LEA   BX,buffer         ; imprimir buffer ...
imprime:
                     MOV   DL,[BX]           ; carácter a carácter
                      MOV   AH,02h              ; ir llamando al servicio 2 del
                        INT   21h               ; DOS para imprimir en pantalla
                     INC   BX                ; siguiente carácter
                      LOOP  imprime           ; acabar caracteres
                     POP   AX                ; recuperar nº de bytes leídos
                      CMP   AX,2048           ; ¿leidos 2048 bytes?
                     JE    trocito           ; sí, leer otro trocito más
                           cerrar:  
                    MOV   BX,handle         ; código de acceso al fichero
                      MOV   AH,3Eh            ; cerrar fichero
                      INT   21h               ; llamar al DOS
ret


;;;DEFINICION DE VARIABLES

   handle         DW    0 ; handle de control del fichero
   TRI        DB   'triang.txt','$'
   buffer         DB    2048 DUP (0) ;   "     "     "     "  el disco  

bueno pues esto funciona te lee el archivo y lo imprime en la pantalla mi problema esta cuando quiero poner otro archivo en pantall es decir por ejemplo que al presionar barra espaciadora pase a otra pagina cuando lo hago habiendo previamente definido variables para este nuevo archivo la aplicacion se traba. Si alguien me puede ayudar o decirme otra forma de leer un archivo para imprimir en pantalla se lo agradeceria mucho, espero no les de hueva leerlo GRACIAS DE ANTE MANO

Super_G:
El progrma parece estar Bien, solo tengo una observacion el nombre del archivo deberia ser tipo AsciiZ y me parece extraño que funcione, pues las pirmeras veces que experimente las funciones de archivos de la int 21h no funcionaban cuando el nombre de los archivos no eran tipo AsciiZ.

Super_G:
Poniendo las funciones en procedimientos y alguna que potra cosilla mas, aqui pongo el programa (de arriba) modificado. Compilado con TASM 2.1 (D.O.S.)

WOLFLIVING:
muchassss gracias SUPERG solo tengo una pequeña duda con respecto al programa que me has facilitado tu funcion ESPERAR soy nuevo en esto y no entiendo como funciona

esperar macro  <----macro¿?
     mov ah,0
     int 16h

endm <---- endm

lo de enmedio si se que es la funcion para leer la tecla pulsada y guardar ascii en AL
pero como seria si yo quiero que pasa la pagina SOLO SI PRESIONO LA TECLA SPACE si presiono otra no pasa nada o si presiono R regresar a la pantalla anterior serias tan amable de aclararme estas dudas?¿  oye muchas gracias que me va a servir muchisimo no tienes idea
 :huh:

WOLFLIVING:
OYE he probado poniendo un tercer archivo y me ha dado el mismo problema sera que solo pasa en mi maquina? podrias hecharme una mano y hacer la prueba con un tercer archivo a ver si a ti te funciona gracias por prestarme tiempo  :kicking:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa